expectで$でハマった
踏み台サーバ経由じゃないと本番サーバにアクセスできない。でも毎回毎回、公開鍵認証のパスワード入力するのめんどくさい。シェルスクリプトで自動ログインできないの?
ということでexpectコマンドで解決できるらしい。
作ったらこんなエラーでた。
can't read "hoge": no such variable
あー中にsendに$が入ってるから変数だと思ったのねー。エスケープすりゃいいかと、こんな感じに。MacOSX環境です。
#!/usr/bin/expect set timeout 5 spawn ssh-add /Users/hoge/.ssh/hoge expect "Enter passphrase for" send "hogehoge\n" # パスワード expect "Identity added:" spawn ssh-add /Users/hoge/.ssh/fuga expect "Enter passphrase for" send "fuga\$fuga\n" # パスワード expect "Identity added:" spawn ssh-add -l spawn ssh -A hoge@hogehoge.com expect "Last login" send "ssh fuga@fugafuga.com\n" interact
当然パスワード直書きなのでお気をつけを。