GNU/Linux >> Linux の 問題 >  >> Linux

リモート マシンに ssh するためのシェル スクリプトを記述し、コマンドを実行する

<ブロック引用>

複数のリモート 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

Linux
  1. UNIX/Linuxでシェルスクリプトを実行する4つの方法

  2. バックグラウンドで UNIX / Linux コマンド (およびシェル スクリプト) を実行する 5 つの方法

  3. 11 Linux で便利な「ssh」および「scp」コマンド

  1. PHP を介してリモート マシンでコマンドを実行する

  2. VMware および Fedora 29 の ssh からリモート マシンへの接続によりパイプが壊れる

  3. bash スクリプトのコマンドとターミナルのコマンドの違い

  1. Bashでは、いつエイリアスを作成し、いつスクリプトを作成し、いつ関数を作成するのですか?

  2. Ssh –リモートコマンドを実行し、Ssh接続から完全に切り離しますか?

  3. シェルスクリプトの予期しない動作?