2

次のように実行した場合、ssh beacasuse の stdout と stderr について明確ではありません。

ssh user@remotemachine_ip "some command" 画面にすぐに出力が表示されるか、何らかのエラーが発生する可能性があります

1.sshでログイン

2.リモートコマンドはリモートマシンで実行されます

3. 出力はリモート マシン (stderr または stdout) に表示されます。その後、ローカルマシンに戻ります。

また

出力はローカル マシンの stdout に返され、ローカル マシン上のファイルに追加できます。

したがって、ローカル マシンに for ループがある場合

for i in ip1 ip2
do
ssh user@remotemachine_ip  "some command" 
done

エラーリダイレクトの最良の方法は何ですか?それはfor、while、untilループに依存していますか?

sshの代わりにexpectスクリプトを使用している場合

expectscript.exp user@remotemachine_ip "some command"

4

4 に答える 4

4
for ip in ip1 ip2
do
  ssh user@$ip "some command" > output.$ip 2>&1
done

IPごとに個別のファイルに出力を配置します。

for ip in ip1 ip2
do
  ssh user@$ip "some command"
done > output 2>&1

すべての出力を1つのファイルに入れます。

于 2013-03-02T09:10:37.053 に答える
3

SSHは、ローカルマシンにログインするのと同じように、リモートマシンにログインできるようにするプロトコルです。

ローカルマシンでログインシェル(たとえば、の1つ Ctrl + Alt + F1~6)を実行すると、ユーザーの新しいシェルが開始され、出力(stdoutおよびstderr)がモニターに表示されます。

ここで、SSHの場合を見てみましょう。手順は前回と似ていますが、1つだけ違いがあります。出力(stdoutおよびstderr)をモニターに送信する代わりに、サーバーはログイン元のマシンにデータを送り返します-にSSH client。クライアントはローカルマシンで実行されるため、ローカルマシンのモニターに同じ出力を表示するだけです。

ただし、ファイルにリダイレクトする場合stdoutstderrリモートマシンのシェルにいるときは、実行している実際のプログラムがリモートで実行されるため、そのファイルはリモートマシンにあります。マシーン。

ところでSSH、リモートマシンとの間でデータを送受信するだけでなく、データを暗号化するなどの機能も備えています。

于 2013-03-02T08:11:59.827 に答える