私はサーバにsshする予定のスクリプトを書こうとしています。sudo suを送り、iptablesの状態をチェックしてサーバのログファイルに出力します。以下はスクリプトです。スクリプトがsshに無効なコマンド名を返すことを期待してください
1 #!/usr/bin/expect
2 exp_internal 1
3 log_user 0
4 set timeout 10
5 set password "******"
6
7 spawn /usr/bin/ssh -l subhasish *.*.*.* -p 10022
8
9 expect {
10 -re "password: " {send "$password\r"}
11 -re "$ " {send "sudo su\r"}
12 -re "[sudo] password for subhasish:" {send "$password\r"}
13 -re "# " {send "service iptables status\r"}
14 }
15 set output $expect_out(buffer)
16 send "exit\r"
17 puts "$output\r\n" >> output.log
しかし、デバッグモードで実行している間、このようなエラーが発生しています。
expect -d testcase
expect version 5.44.1.15
argv[0] = expect argv[1] = -d argv[2] = testcase
set argc 0
set argv0 "testcase"
set argv ""
executing commands from command file testcase
parent: waiting for sync byte
parent: telling child to go ahead
parent: now unsynchronized from child
spawn: returns {24105}
invalid command name "sudo"
while executing
"sudo"
invoked from within
"expect {
-re "password: " {send "$password\r"}
-re "$ " {send "sudo su\r"}
-re "[sudo] password for subhasish:" {send "$password\r"}
..."
(file "testcase" line 9)
どこが間違っているのかわかりません。それは無効なコマンド名 "sudo"と言いますが、これは予期しないことだと思います。それを回る方法。助けてください。ありがとう。
私はsudo suが "サブハッシュのためのパスワード:"を期待していたことを変更しました。更新されたコードを使用して、 #!/ usr/bin/expect -f #!/binに/ bashの セットタイムアウト60 LOG_USER 1 セットホスト*。*。*。* セットパスワード****** セットユーザーsubhasish セットのログファイルoutput.txtと 産卵のssh -p 10022 $ユーザー@ $ホスト は期待 "* assword:*?" 送信 - "$パスワード\ rを" LOG_USER 1 は "$" 送信期待 - "sudoの秀\ rを" は "パスワードsubhasishのために:" 期待 送信 - - "$ password \ r" "#" send - "サービスiptablesステータス\ r" log_file /home/subhasish/output.log "#" log_file send - "exit \ r"; send - "exit \ r"; exit 0 –
手動ロギングは次のようになります。[root @ localhost subhasish]#ssh -p 10022 [email protected]*.*.*.* [email protected]*.*.*.*パスワード: 最終ログイン:月*。*。*からApr 29 07:19:52 2013。* [subhasish testhost @〜] $ sudoの秀 [sudoの] subhasishのパスワード: [ルート@ testhost subhasish]# –
デバッグスクリプトは、そのがで立ち往生示し期待: を期待:「ん\ rを\ NLASTログイン:月¥¥*¥*¥*¥*¥*¥*¥0001b】0; subhasish @ testhost:〜¥u0007 "(spawn_id exp4)マッチグロブパターン" subhasishのパスワード: "?いいえ [subhasish @ testhost〜] $ expect: "\ r \ n最後のログイン:Mon Apr 29 07:35:36 2013 *。*。*。* \ r \ r \ n \ u001b] 0; subhasish @ testhost:〜\ u0007 \ u001b [?1034h [subhasish @ testhost〜] $ "(spawn_id exp4)マッチグロブパターン" subhasishのパスワード: "?いいえ –