ssh、scp、rsync などをシェルから実行する

コマンドの「ssh」や「scp」、「rsync」などは通常の方法ではシェル(バッチ)で実行できない。

これはパスワードの入力が端末からの入力に限定され、標準入力や標準出力を用いた制御を行なえない為だ。

これを回避する方法としては「expect」が有名であるが、パスワード入力が SSH を用いて行なわれている場合に限り、「sshpass」で簡単に制御出来る。

sshpass に出来ること

sshpass に出来ることは、パスワードを指定してコマンドを実行すだけである。 そのためサーバー証明書を受け付ける(yes/no)には対応していない。

そのため最初にサーバーに接続す場合には(yes/no)でキーを受け付けている必要がある。

sshpass のインストール

$ sudo dnf install sshpass

sshpass の使用方法

sshpass -p “パスワード” コマンド [コマンド引数…]

sshpass の使用例

sshpass -p “パスワード” scp /tmp/a.text root@example.com:/tmp/a.txt

sshpass -p “パスワード” rsync -aux /tmp/A root@example.com:/tmp/B

基本的には、「ssh -p “パスワード”」の後に、実行したいコマンドを書くだけである。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です