SSHを介してリモートで実行されたコマンドの出力を変数に保存すると、ブロックされます。接続が終了していませんか?

SSHを介してリモートで実行されたコマンドの出力を変数に保存すると、ブロックされます。接続が終了していませんか?

何が問題なのかよく分からない。現在、新しくインストールされたKali Linux 2.0を使用しています。以下はUbuntu 14.04で動作しましたが、もう機能しません(誤って変更した可能性がありますか?)。私にとっては正しいように見えますが、実行されるたびにブロックされます。

backup_folder=$(ssh -i /home/dexter/.ssh/id_rsa $server 'ls -t '$dir' | head -1')

これは大きなスクリプトの一部です。 $ serverと$dirが設定されました。コマンドを単独で実行すると、正しい出力が出ますが、接続は終了しません。

ベストアンサー1

コマンドが中断される理由は完全にはわかりませんが、サーバーでパイプライン全体を実行する必要はありません。そこからすれば十分ですls

backup_folder=$( ssh -i keyfile "$server" "ls -t -- '$dir'" | head -n 1 )

これは$dirリモート側の値を表します(まだローカルに拡張されます)。これはheadローカルで実行されます。

これには、「に対する回答に記載されている警告が付属しています。なぜ`ls`を解析しないのですか*(そしてどうすればいいですか?)」。

おすすめ記事