erwarten Skript ssh gibt Ungültiger Befehl name

Ich bin versucht zu schreiben, eine expect-Skript, das würde ssh in einen server senden, sudo su, dann überprüfen Sie das iptables status und speichern Sie die Ausgabe in eine log-Datei auf dem server. Unten ist das script.

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

Aber beim ausführen im debug-Modus erhalte ich die Fehlermeldung wie diese;

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)

Nicht sicher, wohin ich gehe falsch. Es sagt ungültige Namen für den Befehl ein "sudo", ich denke, das ist, weil die erwarten, dass doesn;t verstehen diesen Befehl. Wie gehen Sie um ihn herum. Bitte helfen Sie. Danke.

InformationsquelleAutor Subhasish Chatterjee | 2013-04-25

Schreibe einen Kommentar