次のスクリプトがあります。
ssh host command1
scp file1 host:/tmp
ssh host command2
それらをすべて1つの呼び出しにまとめる方法はありますかssh/scp
?私が経験している問題は、ファイルのコピーとコマンドの実行を組み合わせることです。これは時差を置いて行う必要があります。次のようなものを望んでいました。
ssh_sometool host -c command1 -cp file1 /tmp -c command2
これは構文とは何の関係もありませんが(同じ関数を書くことができます)、ssh
同じセッションで発生するすべてのもの
ベストアンサー1
まず、目的のタスクを実行する直接的または標準的な方法はありません。また、明確に説明します。デフォルトのSSHクライアントには、目的のタスクを実行する方法はありません。。
とても古いフォークがあります。SSH-xfer。このツールの開発者でさえ、自分のソリューションが「ハッキング的」であり、非常に古くなっているので、使用しないでください。このツールで使用するためにパッチされた最新のSSHバージョンはOpenSSH-3.8.1p1
(Arch Linuxの場合は現在のバージョンはOpenSSH_7.6p1
)です。
作業速度を上げ、ホスト間の接続/ハンドシェイクの数を減らすことが重要な場合は、一種の構成/調整ツールを検討することができます。アンシプール多くの追加設定なしでタスクを実行する最も簡単な方法のようです。塩おそらく最速のようです。
それにもかかわらず、AnsibleとSaltはどちらも追加の接続を利用して作業を実行し、ssh / scpコンボの代わりにそれを使用してパフォーマンス上の利点を得ることができるかどうかはわかりません。
更新:多くのファイルをプッシュして解凍する必要があり、転送間にいくつかの追加スクリプトを実行する必要がある場合は、ほとんどすべてのプロビジョニングツール(Chef、Puppet、Salt、Ansible)が通常のssh / scpよりも高速です。