0

これは非常に人気のある質問のようで、どのフォーラムを見ているかに応じて約1,000の異なる回答があります。残念ながら、私には何も機能しません。

stop <x> serviceサーバーのリストにSSHで接続し、各マシンのアプリケーションサーバーをシャットダウンする簡単なコマンドを実行するbashシェルスクリプトを作成しようとしています。

これを手動で行うには:

ssh user@server01.ourdomain.tld
user@server01.ourdomain.tld's password: ourpassword
Last login: Fri Nov 30 14:37:51 2012 from <some-ip-addr>
server01:[user@machinename ~]# (now we are SSHed in)

だから私は尋ねます:サーバーのセット名(server01からserver25)が与えられた場合、どのようにすればそれらすべてにSSHで接続して実行するbashスクリプトを書くことができますservice ourservice stopか?このスクリプトは、開始後に人間との対話を必要としないため、SSHコマンドに使用する適切なパスワード(ourpassword)を提供する必要があります。さらに、スクリプトが各サーバーにSSHで接続された後、リソースをハングさせないように(接続を開くなど)、適切に終了する(または接続を閉じる)必要があります。前もって感謝します。

4

1 に答える 1

2

これを行う

  1. ssh-keygenコマンドを使用して、自分自身をパブリック/プライベートキーペアにします
  2. .ssh/authorized_keysフォルダ内のすべてのサーバーに秘密鍵を保存します

これで、パスワードを入力せずに任意のサーバーに接続できます。これがここでの最初の目的です。

これで、次の構文を使用してサーバーにコマンドを送信できます。

ssh username@serverid 'command'

このページには、これについての簡単な説明があります。

したがって、次のように、25個のコマンドをファイルに連結して起動します。

ssh user@server1.yourservers.com 'service ourservice stop'
ssh user@server2.yourservers.com 'service ourservice stop'
于 2012-12-02T15:33:37.987 に答える