SSHコマンドが正しく終了しない[閉じる]

SSHコマンドが正しく終了しない[閉じる]

SSHを介してリモートサーバーに繰り返しコマンドを実行するスクリプトを作成しましたが、最後のサーバーで実行した後に停止します。ここに私のループスクリプトがあります -

cat server | while read serName
        do
                cat cmmnds| while read line
                do
                 result=`ssh -f $serName  $line`
                 echo -n ",$result" >> test.csv
        done
echo " " >> test.csv
done

これが私が間違って終了するために+ Cを制御する必要がある方法です。

Cannot fork into background without a command to execute.
ssh: illegal option -- d

usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-e escape_char] [-F configfile]
           [-I pkcs11] [-i identity_file]
           [-L [bind_address:]port:host:hostport]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-R [bind_address:]port:host:hostport] [-S ctl_path]
           [-W host:port] [-w local_tun[:remote_tun]]
           [user@]hostname [command]
Cannot fork into background without a command to execute.
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
Cannot fork into background without a command to execute.

どんな手がかりがありますか?

ベストアンサー1

sshpsshこのU&L Q&Aの質問は次のとおりです。複数のホストでコマンドを実行しますが、成功した場合にのみコマンドを印刷しますか?

あなたの場合、以下のようにserver&コマンドファイルを直接置くことができます。pssh

$ pssh -h server -i -I < commands.txt

はい

ここでは、次の2つのファイルを作成しました。

$ cat servers
skinner
mulder

$ cat commands.txt
date
echo 'hi'

今実行すると、次のようになります。

$ pssh -O ForwardX11=no -h servers -i -I < commands.txt
[1] 03:10:03 [SUCCESS] skinner
Fri Jul 17 03:10:03 EDT 2015
hi
[2] 03:10:04 [SUCCESS] mulder
Fri Jul 17 03:06:41 EDT 2015
hi

上記の出力を次のようにキャプチャできます。

$ .... | tee some_log_file.txt

-iまたは、スイッチを取り出してpssh各サーバーに別々のログファイルを生成させることもできます-o <dir>

$ pssh -O ForwardX11=no -h servers -o ~/somedir -I < commands.txt
[1] 03:13:04 [SUCCESS] skinner
[2] 03:13:04 [SUCCESS] mulder

ここで結果を確認してください。

$ ls somedir/
mulder  skinner

$ cat somedir/*
Fri Jul 17 03:09:41 EDT 2015
hi
Fri Jul 17 03:13:03 EDT 2015

引用する

おすすめ記事