1つのジャンプサーバーを使用して複数のサーバーから詳細を取得するスクリプトを作成する必要があるため、スクリプトの実行中にユーザー名とパスワードを一度要求する必要があります。その後、すべてのサーバーにパスワードがあってはなりません。スクリプトをどのように作成できますか?
if [ $(id -u) -eq 0 ]; then
read -p "Enter username : " username
read -s -p "Enter password : " password
egrep "^$username" /etc/passwd >/dev/null
if [ $? -eq 0 ]; then
echo for HOST in $(cat servers.txt ) ; do ssh $HOST "cat /var/log/QPKS/qpk" ; done
ベストアンサー1
アンシプール
これを行うにはAnsibleを使用します。次のようにサーバーを含むマニフェストファイルを作成できます。
$ cat inventory
[serverlist]
host1
host2
host3
host4
次に、次のようにAnsible一時コマンドを実行します。
$ ansible -i inventory -m shell -a "cat /var/log/QPKS/qpk" all
sudoを介してこのファイルへのアクセスを提供する必要がある場合は、-b
スイッチをに追加してくださいansible
。パスワードを入力する必要がある場合をsudo
使用してください-K
。代替ユーザーとしてリモートサーバーに接続するには、を使用します-u
。
-b, --become
run operations with become (does not imply password prompting)
-K, --ask-become-pass
ask for privilege escalation password
-u REMOTE_USER, --user REMOTE_USER
connect as this user (default=None)
他の方法
私は過去に同じことをするために別のツールを使用しました。最初のリンクはpssh
。 2番目のリンクpssh
は、最初にサーバーセットにSSHキーを伝播する方法を示しています。この時点でユーザーが持っているのはサーバーセットへのユーザー名/パスワードアクセスだけであり、初期SSHにパスワードを複数回入力したくありません。あなたのキーがリリースされました。
SSHキーが分散されると、パスワードを入力する必要がないようにSSHキーアクセスが設定されるため、実行する必要がある上記のループは消えます。