| |||||||||||
invalid command name else error Posted by sgdought (sgdought), 8 December 2007 The following script connect to various wireless controllers and quieries the model number.If I use consecutive if commands, it works fine. If I try to use elseif and else I get the error: invalid cammand name else. (near the bottom of the code). I'm running Activestate TCL 8.4 for Windows. # The following line is required for Windows versions # of Expect. package require Expect package require log # Parse command line arguements if {[llength $argv] != 6} { puts "" puts "Arguements not optional. Six arguements required!" puts "" puts "Usage: test.exp {-command (C:\\OpennSSH\\ssh.exe) -IP Address -Switch (should be -l) -Username -Password -Enable Password}" puts "" puts "Example: tclsh84 c:\\scripts\\UpdAruba.exp c:\\OpenSSH\\bin\\ssh.exe 10.121.0.170 -l admin password EnablePassword" exit 1 } # Set variables to arguements supplied with script set host [lindex $argv 1] set switch [lindex $argv 2] set username [lindex $argv 3] set password [lindex $argv 4] set EnablePassword [lindex $argv 5] set logFile c:\\temp\\host.txt puts "\nThe logfile is $logFile\n" # open the input file set InputFile [open "C:\\d'sdata\\Work_Jeffco\\ExpectInputfile.txt" "r"] # Begin Input While # read a line from input file until the EOF while {[gets $InputFile line] != -1 } { send_user "\n" send_user "\nThe school is $line.\n" gets $InputFile IP send_user "The IP of the controller is $IP.\n" # Replace the arguement holding the IP Address # with the next IP from the file. set argv [lreplace $argv 1 1 $IP] # start logging exp_log_file -a $logFile # Begin connect code body # continue stops the current iteration of the while loop # Use break to exit loop totally set timeout 20 # spawn ssh command using script arguements eval spawn [lrange $argv 0 3] # make choice depending on results of ssh command expect { timeout {set ErrorLog [open "C:\\temp\\errorlog.txt" "a"] puts $ErrorLog "Cannot connect to $line. Timed Out\r\n" close $ErrorLog continue} "refused" {set ErrorLog [open "C:\\temp\\errorlog.txt" "a"] puts $ErrorLog "Connection refused to $line. Connection refused.\r\n" close $ErrorLog continue} "finger" {send "yes\r" sleep 2 send $password\r sleep 2} "word" {send $password\r sleep 2} } set timeout 60 sleep 2 send "enable\r" sleep 2 expect "word" send "$EnablePassword\r" expect "#" sleep 1 send_user "\nconnected\n" # expect "#" sleep 2 send "Show Version\r" expect "#" sleep 2 # Extract model number from results of Show Version command set output $expect_out(buffer) if {[string last "Aruba800" ($output)] != -1} { send_user "\r\nThe $line controller is an Aruba 800.\r\n" } elseif {[string last "Aruba2400" ($output)] != -1} { send_user "\r\nThe $line controller is an Aruba 2400.\r\n" } elseif {[string last "Aruba200" ($output)] != -1} { send_user "\r\nThe $line controller is an Aruba 200.\r\n" } else {send_user "\r\nThe controller is not a 200, 800, or 2400" continue } send "exit\r" # End Input while } log_file close $InputFile close $ErrorLog Posted by admin (Graham Ellis), 9 December 2007 on 12/08/07 at 20:59:43, sgdought wrote:
else isn't a separate command - it's an optional parameter within the if command. You have ended your if command (a new line ends a command in Tcl !) on the line before the else. Either add a \ on the end of that previous line, or move the else up. Personally, I would write } else { send_user "\r\nThe controller is not a 200, 800, or 2400" to keep it consistent with the elseifs Posted by sgdought (sgdought), 9 December 2007 Thanks, that worked. I'm a network admin and I've been scripting in vbscript for a year or two. I've just started to learn Expect and TCL.I appreciate the help. Posted by admin (Graham Ellis), 9 December 2007 My pleasure, ... and I'm a trainer so I will always tend to give an explanation as well as a solution This page is a thread posted to the opentalk forum
at www.opentalk.org.uk and
archived here for reference. To jump to the archive index please
follow this link.
Comment by Anon (published 2011-03-19) thanks [#3928] You can Add a comment or ranking or edit your own comments Average page ranking - 4.0 |
| ||||||||||
PH: 01144 1225 708225 • FAX: 01144 1225 793803 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho |