複数のデバイスでSSHを介した複数のコマンドの自動化

複数のデバイスでSSHを介した複数のコマンドの自動化

同じユーザー名とパスワードを使用し、SSHが有効になっているデバイスは100を超えています。

私が達成したいのは、各デバイスに対して同じコマンドを実行して一括してパスワードを変更したいということです。

私がしたことは2つのファイルを作成することでした。最初のファイルにはホストが含まれ、2番目のファイルにはコマンドが含まれています。

ホストファイルの例

192.168.1.20
192.168.1.21
192.168.2.30
192.168.2.31

コマンドファイル

passwd -a des
%new-password%
%new-password%
grep -v users.1.password= /tmp/system.cfg > /tmp/system.cfg.new
echo users.1.password=`grep %user% /etc/passwd | awk -F: '{print $2}'` >> /tmp/system.cfg.new
cfgmtd -f /tmp/system.cfg.new -w
exit

次のコマンドを実行しようとしましたが、2つの理由で失敗しました。

1 - 毎回自己署名キーを許可するかどうかを尋ねるメッセージが表示されます。 2 - 入力セクションで停止

for host in $(cat hosts.txt); do ssh -u username@"$host" -pPasswd command.txt >"output.$host"; done

したがって、基本的にすべてのデバイス(すべてが異なる自己署名証明書を持つ)を接続し、それに応じてパスワードを変更したいと思います。

ありがとうございます!

ベストアンサー1

私は使用しますアンシプール。 Ansibleは、複数のデバイスでSSHを使用してコマンドを実行するように設計されています。 Ansible シェルを使用して一度に 1 つのコマンドを実行したり、Ansible プレイブックを使用して複数のコマンドを同時に実行したりできます。

Ansbileをインストール、設定、実行することを望まない場合は、2つの部分に分けて説明します。 scpスクリプトを作成すると、スクリプトをすべてのホスト(/tmpディレクトリなど)に送信できます。その後、スクリプトを再実行します。スクリプトがバックグラウンドで実行され、出力がローカルデバイスに書き込まれていることを確認してください。ログ/成功を確認する3番目のスクリプトかもしれません。

おすすめ記事