Shell script to telnet and run commands

Solved/Closed
Shady.Mekawy - Nov 12, 2008 at 04:32 AM
 kar416 - Mar 17, 2010 at 02:19 PM
Hello,
i have made a shell script which can telnet automatically and run commands on the other machine and end the telnet session without any interact from the user,only he just run the script or call it from a nother script.
but you need to install EXPECT and TCL packages on your unix system.
the script contains the following instructons:


#!/usr/local/bin/expect -f ####/usr/local/bin/expect is the directory where expect was installed
log_user 0 ####this command is used to hide the conversationn between the script and the other machine
set address [lindex $argv 0] ###assign the first passed parameter while calling the script to $address
set username [lindex $argv 1] ###assign the 2nd passed parameter while calling the script to $username
set password [lindex $argv 2] ###assign the 3rd passed parameter while calling the script to $password
spawn telnet ${address} ###start the telnet session to machine with IP=$address
###start conversation with the machine:
expect "login:"
send -- "${username}\r"
expect "Password:"
send -- "${password}\r"
expect "$ "
send -- "#!/bin/ksh\r" ###declare the shell to be used (optional)
expect "$ "
send -- "###type her any command you want to execute"
expect "$ "
send -- "exit\r" ###end the telnet session and exit the script


to execute this script, I typed:
$ expect_script "address" "username" "password" ###the script name is "expect_script"
but before u call the expect script, you should make the expect script executable, and this can be done by typing:
$ chmod +x expect_script

3 responses

netgear5 Posts 8 Registration date Saturday October 4, 2008 Status Member Last seen April 27, 2009 29
Nov 12, 2008 at 05:58 AM
hey buddy this is a great thing that you have posted here. thks for the help and hope that will here very somme with some useful tips like that.
29
#!/usr/local/bin/expect
spawn telnet <machine ip>
expect "login:"
send "<username>\n"
expect "Password:"
send "<password>\n"
send "bash\n"
send "cd /opt\n"
send "ls -ltr\n"  (if you are not giving \n then it will wait for your response or u have to type enter manually).
interact

How to execute the “expect“ command expect –f <file name>
Ex: expect –f <filename>.expect
0