端末で実行され、Raspberry Piの「画面」出力から自動的に開始されるスクリプトを生成しようとしています。ここでの問題は、sudo
スクリプト内で権限が必要ですが、プロセスが実行されるとパスワード要求が表示されないことです。
スクリプトの例は次のとおりです(操作すると、スクリプトを他の目的に合わせることができます)。
1)フォルダを入力してください:
cd /etc/openvpn
2)サービスを実行します(Sudo権限が必要です)。
sudo openvpn ./pia_netherlands.conf
コードを手動で入力するとスクリプトが実行されるため、問題はありません。 「画面」内で行うのに問題があるだけです。
インターネット検索を使用して次のスクリプトを設定しました。
#!/bin/sh
if [ -z "$STY" ]; then exec screen -dm -S pia /bin/bash "$0"; fi
cd /etc/openvpn
sudo openvpn ./pia_netherlands.conf
スクリプトは「pia」という画面があることを確認する必要があります。そうでない場合は、piaという画面を作成し、まずフォルダに移動してからopenvpnファイルを実行してスクリプトを実行します。
もう少し簡単な2番目のスクリプトを試しましたが、それも機能しませんでした。
sudo bash screen -S pia
cd /etc/openvpn
openvpn ./pia_netherlands.conf
スクリプトは「pia」という bash 画面を開き、フォルダに移動して openvpn ファイルを実行します。
どちらの方法も動作せず、どのように動作するかを見つけるのは本当に難しいです。誰でも私を助けることができますか?
Raspberry Piのフォーラムにも連絡しましたが、誰も反応しませんでした。これは、Raspberry Piの問題よりもLinuxの問題に近いためです。
答え1
読んだらマニュアルページそうですね。openvpn
スイッチを使用してデーモンとして機能することができます(つまり、背景自体に移動)--daemon
。
したがって、特別な要件がない場合は、screen
以下を選択できます。
sudo openvpn --daemon --config /etc/openvpn/pia_netherlands.conf
他の選択肢:
screen
スクリプトの実行を開始し、パスワードを入力した後screen
。screen
sudo
ただ実行するのではなく、全体を実行しますかopenvpn
?つまりsudo screen -S pia openvpn /etc/openvpn/pia_netherlands.conf
/etc/sudoers
NOPASSWD:
毎回パスワードを入力せずに特定のコマンドを実行できるように、フラグ付きのスクリプトを追加します。