bashスクリプト内からリモートシステムで単一のsudoコマンドを実行できることを発見しました。例えば:
#!/bin/bash
ssh -t <REMOTE_IP> 'sudo ls /root'
ただし、リモートシステムのIPを含むファイルに対してループを介して同じコマンドを実行しようとすると、奇妙になり始めます。-tオプションを使用してTTYを割り当てることができないため、2つ(-t -t)を使用します。これを行うと、パスワードプロンプトが表示されます。次に、パスワードを入力しなかったときにパスワードが正しくなかったことを通知し、パスワードをエコーバックする2番目のプロンプトを表示し、Enterキーを押した後にハングします。
そのようなスクリプトの例:
#!/bin/bash
while read i
do
ssh -t -t $i "sudo ls /root"
done < ip.list
私が見ている結果の例:
user@opensuse:~/bin> ./test.sh
10.153.171.131
[sudo] password for user:
Sorry, try again.
[sudo] password for user: Pa55w0rd
^CKilled by signal 2. *This is where it hangs and I have to kill it.*
説明の仕方があまりわからないので、誰かがこれに光を当てることができれば、私は最も感謝するでしょう。
ありがとう。