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 “パスワード”」の後に、実行したいコマンドを書くだけである。