約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