- - PR -
expectについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-07-27 17:13
expectについて教えてください。
●やりたいこと expectにより以下を実行したい。 @rootユーザーよりsu - userA コマンドを実行する。 (rootユーザーにて実行しているため、userAのパスワードの入力は不要です) Aプロンプト「$」が表示された後に、例えばlsコマンドを実行する。 ●現状 以下のシェルを作成しましたが、lsコマンドが実行される前に シェルが終了してしまいます。 expect.sh ======================== #!/usr/local/bin/expect -f spawn su - userA expect { timeout { exit 1 } eof { exit 2 } "\$" } send -- "ls -l\r" ======================== 実行結果 ======================== [root@test:/tmp]# ./expect.sh spawn su - kido [root@test:/tmp]# ======================== ●教えてもらいたいこと プロンプト「$」の捉まえ方 ●expectを使わないで、手動でsuコマンドを投入したときの画面 ======================== [root@test:/tmp]# su - kido Sun Microsystems Inc. SunOS 5.9 Generic May 2002 $ ←このプロンプトが出力されたときにlsコマンドを打ちたい。 ======================== 宜しくお願します。 | ||||
|
投稿日時: 2007-07-27 21:12
こんばんは。
検証していませんが、こんな感じでいけるかな?
プロンプトの捕まえ方は、manpage の EXPECT ヒントにあります。 set prompt ".*$.*" これでいけるかな? | ||||
|
投稿日時: 2007-07-30 13:36
あるかな様
アドバイス頂きまして、有難うございます。 ご教授頂いたものを試してみたのですが、 うまくいきませんでした。 他の方法も色々試してみます。 | ||||
|
投稿日時: 2007-07-30 22:20
正規表現記述なので、$をプロンプトで使用している場合、エスケープ必要かもしれません。
$のみが期待値であれば、 set prompt "^\$$" set prompt "^\$ $" かではどうでしょうか? 環境が無いので…他の識者の方の助言を期待した方が良いかもです。 | ||||
|
投稿日時: 2007-07-31 12:33
set prompt "$" では?
一応 Cent4 では以下で動作しました。
(コード内すべて小文字) | ||||
|
投稿日時: 2007-08-09 16:07
あるかな様
うっちー様 ご教授頂きまして有難うございます。 返信遅くなってすみません。 ご教授頂いたものを試してみたのですが、 何故かうまくいきませんでした。 プロンプトを%に替えてやると 拾えるようになりました。 やはり正規表現でひっかかってしまう のでしょうか |
1