これは私には明らかかもしれませんが、私はしばらくこれに閉じ込められていました。
私はサーバーのリストを取得し、そのリストから特定の情報を取得し、起動コンピュータのホストアドレスに基づいてファイルに出力を保存する非常に単純なbashループを作成しようとしています。
現在のコードは次のとおりです。
#!/bin/bash
SERVER_LIST=/path/to/hosts
while read REMOTE_SERVER
do
{
ssh user@$REMOTE_SERVER 'show_stat_from_shell_command'
} > "$REMOTE_SERVER"
done < $SERVER_LIST
上記の結果は、私のリストの最初のホストの出力ファイルを作成してから終了することです。
より確実な解決策のいくつかを防ぐために、Ansibleなどは非常に限られた環境なので、オプションではありません。同じ理由で複数のシェルまたはtmuxを使用することはオプションではありません(ホストから一度に1つのシステムにのみログインできます)。
だから誰かが私がどのように台無しにされたのかを正確に伝えることができればとても感謝します!
ベストアンサー1
変える
ssh user@$REMOTE_SERVER 'show_stat_from_shell_command'
渡す
ssh user@$REMOTE_SERVER 'show_stat_from_shell_command' </dev/null
また、sshが$SERVER_LIST
stdin()から読み取ることを防ぎます。またはssh
オプションを使用してください-n
。
-n
:/dev/nullから標準入力をリダイレクトします(実際には標準入力から読み取ることを防ぎます)。