Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Rubyでパスワード入力を伴うプログラムの実行(pty+expect)

6 views
Skip to first unread message

Yasushi Shinjo

unread,
Sep 12, 2011, 5:51:25 AM9/12/11
to
新城@筑波大学です。こんにちは。

パスワードを毎回キーボードから打ち込むのは面倒で、それを自動
実行したいことはあります。そんなプログラムを Ruby で書くには、
pty と expect を使うと良いのですね。この例題が役に立ちました。

http://snjx.info/diary/snjx/036

多くのプログラムでパスワードは、リダイレクトしてもキーボード
から読み込もうとします。なので、pty が必要になります。あと、
いきなり疑似端末に write してもダメで、"Password:" と打たれた
タイミングを見計らってから write する必要があります。タイミン
グを見るのには、expect が便利。

Ruby の PTY.spawn(cmd) { |r,w,pid| ... } というインタフェース
は、ちょっと馴染みにくいということはあります。理由がよくわか
らなかったけれど、そうか、spawn してから直後にブロックを実行
というのが、馴染めないのか。swawn なら非同期になるはずだからね。

r,w,pid = PTY.spawn(cmd) にすればいいという話はあります。

\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報       \\
0 new messages