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

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

436 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) にすればいいという話はあります。

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

Shinji KONO

unread,
Sep 15, 2011, 1:49:55 AM9/15/11
to
河野真治 @ 琉球大学情報工学です。

In article <85ehzmg...@is.tsukuba.ac.jp>, Yasushi Shinjo <y...@is.tsukuba.ac.jp> writes
> パスワードを毎回キーボードから打ち込むのは面倒で、それを自動
> 実行したいことはあります。そんなプログラムを Ruby で書くには、
> pty と expect を使うと良いのですね。この例題が役に立ちました。

なんか、古い話題ですが、最近はあまりお世話になってません。

WWW のが多くて、ブラウザの管理で十分だからかな。Mac には keychain ありますしね。

---
Shinji KONO @ Information Engineering, University of the Ryukyus
河野真治 @ 琉球大学工学部情報工学科

Yasushi Shinjo

unread,
Sep 29, 2011, 10:59:51 PM9/29/11
to
新城@筑波大学です。こんにちは。

ko...@ie.u-ryukyu.ac.jp (Shinji KONO) writes:
>> パスワードを毎回キーボードから打ち込むのは面倒で、それを自動
>> 実行したいことはあります。
> なんか、古い話題ですが、最近はあまりお世話になってません。
> WWW のが多くて、ブラウザの管理で十分だからかな。Mac には keychain ありますしね。

既に設定されたパスワードと同じパスワードを打ち込むということ
と、新たにパスワードを設定するために打ち込むということでは、
方向が違います。zip ファイルを作る時には新たなパスワードを毎
回打つ必要があります。

あと、設定されたパスワードを打つにしても、メールで受け取った
zip ファイルは、毎回新しいということで、難しい話があります。
暗号化されたディスクイメージを繰り返し使うのとは違って、一発
ものなので。まあ、同じ人とメールをやりとりしていれば、前回と
同じパスワードが入っていることが多いので、メールアドレスをキー
にして、パスワードを MacOSX Keychain Access から自動的に取り
出してくれてもありがたいんだけど。zip ファイルになってしまう
と、メールアドレスも消えているからなあ。
0 new messages