スクリプトを介してsudoユーザーを使用して複数のサーバーでローカルスクリプトを実行する

スクリプトを介してsudoユーザーを使用して複数のサーバーでローカルスクリプトを実行する

約100のリモートサーバーがあります。ターミナルサーバーを使用してすべてのサーバーを管理し、sudo権限でコマンドを更新して実行したいと思います。

他のテストスクリプトをパラメータとして使用する基本スクリプトが必要です。デフォルトスクリプトは、リモートサーバー名を含むホストファイルを使用してwithループを介して実行されます。

テストスクリプトには、リモートサーバーですぐに実行される実際のsudoコマンドがすべて含まれています。

./mainscript hostfile testscript たとえば、テストスクリプトには、「sudo yum -y update」または一連のコマンドがあります。

rootとしてログインした場合、これは簡単です。しかし、すべてのリモートサーバーに対してsudo権限を持つユーザー「admin」として実行したいと思います。これらのスクリプトはすべてローカル端末サーバーにあります。

これを達成するために必要なアイデアを提案してください。

ベストアンサー1

1つのアイデア(おそらく最善ではないかもしれません)は、パスワード認証ではなくキーベース認証を使用するようにsshを設定することです。わからない場合は、この説明で十分だろうと思います。SSH鍵認証

あなたのテストスクリプトに何が含まれているのか、その複雑さが何なのかわかりません。私たちを見てみましょう考えるこれは/tmp/script_output/の下に出力を格納するかなり複雑なスクリプトです。この場合、以下を提案します。

while read -r i
do
   scp $2 admin@remote_server:/tmp/
   ssh -t admin@remote_server /tmp/$2
   ssh admin@remote_server rm /tmp/$2
   scp -r admin@remote_server:/tmp/script_output/ /tmp/
   ssh admin@remote_server rm -rf /tmp/script_output
done < "$1"

ところで、sudoersで

#
# Disable "ssh hostname sudo <cmd>", because it will show the password in clear.
#         You have to run "ssh -t hostname sudo <cmd>".
#
Defaults    requiretty

おすすめ記事