複数のパスワードプロンプトなしでsudoでスクリプトを実行するには、ユーザーを再認証してください。

複数のパスワードプロンプトなしでsudoでスクリプトを実行するには、ユーザーを再認証してください。

OpenVPN設定に自動的にログインするスクリプトを作成しようとしています。次のようにシングルログインを正常に自動化しました。

#!/bin/bash
cd filepath/
username= "username"
password= "password"
read -sp "Enter Sudo Password: " sudopassword

/usr/bin/expect << EOF

spawn sudo openvpn config-file.ovpn
expect "password for $USER: "
send "$sudopassword\r"
expect "Enter Auth Username: "
send "$username\r"
expect "Enter Auth Password: "
send "$password\r"
expect "$ "

EOF

単一のシェルスクリプトとして保存しました。その後、ちょうど実行します。

./killvpn

別の.shファイルで、以前のVPN接続が終了していることを確認してください。

#!/bin/bash
sudo pkill vpn

これまで、私のスクリプトは別のディレクトリから起動し、次のスクリプトを呼び出して次のことを行います。

## Project Folder is called: VPN ##
## Filepath: VPN/                ##

#!/bin/bash
./login1.sh
sleep 30m
./killvpn
echo " "
echo "Logging in to VPN2"
echo " "
./login2.sh
sleep 30m           

など。私の./login2.shファイルは./login1.shと同じですが、次の部分を削除しました。

read -sp "Enter Sudo Password: " sudopassword

そして:

expect "password for $USER: "
send "$sudopassword\r"

ただし、./login2.shには、デフォルトのスクリプトが準備され、root権限が付与されているにもかかわらず、起動時にまだsudoパスワードを要求するメッセージが表示されます。開いている端末で監視しないと、VPN接続が閉じてスクリプトが利用できなくなります。

誰かがこのコードを確認し、sudoプロンプトなしで./login2.shを実行する方法を教えて、どこが間違っているかを判断するのに役立ちますか?

ベストアンサー1

sudoを使用する場合(スクリプトを変更せずに)パスワード要件を削除する最も簡単な方法は、/ etc / sudoersで "nopasswd"を使用してユーザー権限を定義することです。

myuser    ALL=(ALL:ALL) NOPASSWD:ALL

これにより、ユーザー「myuser」は、パスワードを要求せずにすべてのコマンドをrootとして実行できます。

(sudoersファイルを直接編集するのではなく、「visudo」コマンドを使用して変更することを忘れないでください。)

おすすめ記事