詳細を取得するスクリプト

詳細を取得するスクリプト

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キーアクセスが設定されるため、実行する必要がある上記のループは消えます。

おすすめ記事