sudo 権限で「screen」を使用してスクリプトを実行する

sudo 権限で「screen」を使用してスクリプトを実行する

端末で実行され、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
  • screensudoただ実行するのではなく、全体を実行しますかopenvpn?つまり sudo screen -S pia openvpn /etc/openvpn/pia_netherlands.conf

  • /etc/sudoersNOPASSWD:毎回パスワードを入力せずに特定のコマンドを実行できるように、フラグ付きのスクリプトを追加します。

関連情報