<ブロック引用>
Linux
複数のリモート Linux マシンがあり、各マシンで同じコマンド セットを実行するシェル スクリプトを作成する必要があります。 (いくつかの sudo 操作を含む)。これは、シェル スクリプトを使用してどのように行うことができますか?
たとえば、ssh を使用してこれを行うことができます。
#!/bin/bash
USERNAME=someUser
HOSTS="host1 host2 host3"
SCRIPT="pwd; ls"
for HOSTNAME in ${HOSTS} ; do
ssh -l ${USERNAME} ${HOSTNAME} "${SCRIPT}"
done
<ブロック引用> リモート マシンに ssh 接続するときに、RSA 指紋認証を求めるプロンプトが表示されたときの処理方法。
StrictHostKeyChecking=no
を追加できます ssh のオプション:
ssh -o StrictHostKeyChecking=no -l username hostname "pwd; ls"
これにより、ホスト キー チェックが無効になり、既知のホストのリストにホスト キーが自動的に追加されます。ホストを既知のホスト ファイルに追加したくない場合は、オプション -o UserKnownHostsFile=/dev/null
を追加します。 .
これにより、特定のセキュリティ チェックが無効になることに注意してください 、たとえば、中間者攻撃に対する保護。したがって、セキュリティが重視される環境では適用しないでください。
apt-get install sshpass
を使用して sshpass をインストールします 次に、スクリプトを編集して、Linux マシンの IP、ユーザー名、およびパスワードをそれぞれの順序で入力します。その後、そのスクリプトを実行します。それでおしまい !このスクリプトは、すべてのシステムに VLC をインストールします。
#!/bin/bash
SCRIPT="cd Desktop; pwd; echo -e 'PASSWORD' | sudo -S apt-get install vlc"
HOSTS=("192.168.1.121" "192.168.1.122" "192.168.1.123")
USERNAMES=("username1" "username2" "username3")
PASSWORDS=("password1" "password2" "password3")
for i in ${!HOSTS[*]} ; do
echo ${HOSTS[i]}
SCR=${SCRIPT/PASSWORD/${PASSWORDS[i]}}
sshpass -p ${PASSWORDS[i]} ssh -l ${USERNAMES[i]} ${HOSTS[i]} "${SCR}"
done