Linuxの対話がめんどくさい?そんな時こそ自動化だ!-expect編- - Qiita
対話型のシェルを自動化する際は基本的には上の記事のように expect
で頑張らないといけないが、
ssh
と scp
に関しては sshpass
を利用すれば簡単に自動化が可能。
(セキュリティに関する是非とか公開鍵使用したほうが良いとかは今回は省略する)
イントール
ubuntuならaptでインストールできる。(MacのHomeBrewの場合は警告が出るらしい)
sudo apt-get -y install sshpass
使用例
# パスワードを指定
sshpass -p 'password' ssh -o StrictHostKeyChecking=no user@host 'command'
sshpass -p 'password' scp -o StrictHostKeyChecking=no localfile user@host:/path/to/copy
# パスワードの記載されているファイルを指定
sshpass -f passwordFile ssh -o StrictHostKeyChecking=no user@host 'command'
sshpass -f passwordFile scp -o StrictHostKeyChecking=no localfile user@host:/path/to/copy
-o StrictHostKeyChecking=no
を指定しないと初回接続時に接続先ホストの確認メッセージがでるため失敗する場合がある
参考
Linuxの対話がめんどくさい?そんな時こそ自動化だ!-expect編- - Qiita
sshにパスワードで自動ログインするならexpectよりもsshpassを使おう | PCと遊ぶ日々の記録
sshpass をインストールするには - らくがきちょう
sshコマンドでパスワードをオプションとして入力出来るようにする『sshpass』 | 俺的備忘録 〜なんかいろいろ〜