3

公開鍵と秘密鍵を設定し、ssh ログインを自動化しました。1 回のログイン セッションで command1 と command2 という 2 つのコマンドを実行し、それらをローカル マシンのファイル command1.txt と command2.txtに保存します。

私はこのコードを使用しています

ssh -i my_key user@ip 'command1 command2'2 つのコマンドは 1 回のログインで実行されますが、それらを 2 つの異なるファイルに保存する方法がわかりません。

リモートホストに繰り返しsshしたくないので、そうしたいのです。

4

9 に答える 9

5

2 つのコマンドの実際の出力を解析して、どちらがどちらであるかを区別できない限り、それはできません。2 つの個別の ssh セッションが必要になります。

ssh -i my_key user@ip command1 > command1.txt
ssh -i my_key user@ip command2 > command2.txt

出力をリモート マシン上のファイルにリダイレクトしてから、ローカル マシンにコピーすることもできます。

ssh -i my_key user@ip 'command1 > command1.txt; command2 > command2.txt'
scp -i my_key user@ip:'command*.txt' .
于 2012-06-01T13:06:45.603 に答える
3

いいえ、@ lanzzですでに述べたように、個別のコマンド(複数ログイン)で個別に実行する必要があります。出力をローカルに保存するには、次のようにします

ssh -i my_key user@ip "command1" > .\file_on_local_host.txt

場合によっては、1回のログインで複数のコマンドを実行し、スクリプトですべてのコマンドを書き留めてから、複数のコマンドを実行する代わりに、SSHを介してそのスクリプトを実行する必要があります。

于 2012-06-01T13:18:45.353 に答える
3

それは可能ですが、おそらくその価値よりも多くの問題があります。command1 の出力に含まれないことが保証されている一意の文字列を生成できる場合は、次のことができます。

$ ssh remote 'cmd1; echo unique string; cmd2' |
  awk '/^unique string$/ { output="cmd2"; next } { print > output }' output=cmd1

これは単純にファイルへの出力を開始し、一意の文字列を検出するとcmd1出力をファイルに変更します。cmd2おそらくstderrも処理したいでしょう。それは読者の演習として残されています。

于 2012-06-01T15:03:38.070 に答える
1

あなたはこれを行うことができます。リモート マシンからローカル マシンへの認証をセットアップできると仮定すると、ssh を使用してコマンドの出力をパイプで戻すことができます。トリックは、バックスラッシュを正しくすることです。

ssh remotehost command1 \| ssh localhost cat \\\> command1.txt \; command2 \| ssh localhost cat \\\> command2.txt 

または、バックスラッシュが苦手な場合...

ssh remotehost 'command1 | ssh localhost cat \> command1.txt ; command2 | ssh localhost cat \> command2.txt' 
于 2013-09-18T22:21:08.857 に答える
0

&& を使用してそれらを結合すると、このようにすることができます

ssh -i my_key user@ip "command1 > command1.txt && command2 > command2.txt && command3 > command3.txt"

お役に立てれば

于 2012-06-01T13:08:45.523 に答える
0

私はできました、これがまさに私がしたことです:

ssh root@your_host "netstat -an;hostname;uname -a"

これにより、コマンドが順番に実行され、画面に完全に表示されます。

必ず最初と最後に引用符を付けてください。そうしないと、最初のコマンドがリモートで実行され、残りのコマンドがローカル マシンに対して実行されます。

サーバーへの RSA キー ペアを持っているので、資格情報のチェックを避けたい場合は、明らかにそのペアを作成する必要があります。

于 2013-09-16T16:30:25.080 に答える
-2

単一の ssh 接続を使用して、リモート サーバーで複数のコマンドを実行する方法。

[root@nismaster ~]# ssh 192.168.122.169 "uname -a;hostname" root@192.168.122.169 のパスワード: Linux nisclient2 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:54 EDT 2009 i686 i686 i386 GNU/Linux nisclient2

    OR

[root@nismaster ~]# ssh 192.168.122.169 "uname -a && hostname" root@192.168.122.169 のパスワード: Linux nisclient2 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:54 EDT 2009 i686 i686 i386 GNU/Linux nisclient2

于 2013-06-07T06:05:21.027 に答える