なんかの Log

良い感じで投げっぱなしにしてみせる。

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

当然パスワード直書きなのでお気をつけを。