expectの使い方メモ
ftpしか使えないサーバーがあって、しかもユーザー名に@が入ってたりとかパスワードに:が入ってたりとかして嫌がらせのように一行のエイリアスが作れなかった。もしかしたら一行で接続する方法あるのかもしれないが知識不足でできなかった。ので、expectを書くことにした。
#!/usr/bin/expect set NAME "hogehoge@hogehoge" set PASSWORD "fugafuga:piyopiyo" set timeout 5 spawn env LANG=C ftp example.com expect { "Name" { send ${NAME}\n exp_continue } "Password:" { send ${PASSWORD}\n exp_continue } } expect { "ftp>" { interact exit 0 } }
シェルでexpectごとスクリプト化して書く方法もあるみたいだけど、複数のプロンプトだと途中で何故かとまる。書き方が悪いのだろう。
結局expectで書いて解決した。
env LANG=C というのはプロンプトをデフォルトの言語(英語)で出させるという意味らしい。