expect and ssh


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users expect and ssh
# 1  
Old 01-22-2008
expect and ssh

hello
I installed expect on my solaris box.

now I want to execute this command on several servers as root (all of them have the same root password):

for i in 1 2 3; do ssh root@"srv"$i" ls /; done;


I want of course to skip these 2 steps:

The authenticity of host 'srv3 (172.21.26.25)' can't be established.
RSA key fingerprint is 2f:0c:4a:ee:19:e1:7e:f2:c8:f6:ac:2a:44:58:be:7b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'srv3,172.21.26.25' (RSA) to the list of known hosts.
Password:

How to do that using expect??
thanks
# 2  
Old 01-22-2008
Use the search function of the forum to select an example that will match your needs, there are lots of topics on that subject. Also, you can use "autoexpect" to achieve the same, look at its man pages.
# 3  
Old 01-22-2008
#!/usr/bin/expect -f
spawn ssh -X root@<ip addr>
expect "password:"
sleep 1
send "password\r"
interact
# 4  
Old 01-22-2008
I'd first suggest you set ssh keys for passwordless connections if possible. You don't want to write down your passwd in a text file.
For what you want to do, you can follow nitin09's suggestion, although I wouldn't use
-X (no need to forward X11), make sure to expect and answer the yes/no query, and make sure that the expected string matches the prompt's case, ie., Password. Otherwise you are going to spend 5-10 seconds waiting for the time out.

This will work properly only if you have never logged in as root and all of the servers reply the same thing, i.e., "The authenticity of host XXXXX can't be established". If you have logged in to some servers you will only get a password prompt. If that's the case, you will need to create an "if" statement within your expect script that will do one thing if you get one response and another if you get a different response.
# 5  
Old 01-22-2008
Basically agreed. I've had to create a shared memory server and jump through hoops to deal with legacy services without *.equiv available in the past.

Expects RE engine is Tcl's so you can really match whatever regexp you need to get patterns within the expect body. exp_internal 1 is your friend and there are plenty of smart people out at comp.lang.tcl to help you if you run into problems that seem insuperable.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Ssh = ssh expect and keep everything not change include parameter postion

I have write a script which contains ssh -p 12345 dcplatform@10.125.42.50 ssh 127.0.0.1 -p 5555 "$CMD" ssh root@$GUEST_IP "$CMD" before I use public key, it works well, now I want to change to "expect", BUT I don't want to change above code and "parameter position" I can post a... (1 Reply)
Discussion started by: yanglei_fage
1 Replies

2. Shell Programming and Scripting

Script using SSH with expect command

Hi all, I want to connect to some host with "ssh". I have googled and got some commands of "expect" and "spawn". I was not aware of these commands and tried below script. $ cat auto.sh set host xx.xx.xx.xx set password abcd@1234 set user root spawn ssh $user@$host expect "*?assword:*"... (4 Replies)
Discussion started by: divya bandipotu
4 Replies

3. Shell Programming and Scripting

ssh via expect

(Crossposting note: I have already posted this article on comp.lang.tcl 6 days ago and on the tek-tips dot com forum 3 days ago. This is posted here again, because I didn't get any response on my original articles there). I use the following script on Solaris to log into a remote host: ... (3 Replies)
Discussion started by: rovf
3 Replies

4. Shell Programming and Scripting

Expect Script to Automate SSH

How would I write an expect script to automate ssh and what file extention do expect files use? (11 Replies)
Discussion started by: Prodiga1
11 Replies

5. Shell Programming and Scripting

Pass subshell through expect and SSH

Hi folks, What I want to do is to check if there is an instance of running vlc on a remote server, then kill it, and start it again. The code I came up with is: #!/bin/bash expectFcn() { expect -c " set timeout -1 spawn ssh \"$1@$2\" \"$4\" match_max 100000 expect { -re... (2 Replies)
Discussion started by: dukevn
2 Replies

6. Shell Programming and Scripting

Need Help with expect when ssh fails

I'm trying to write a script using expect. I'd like the script to execute several commands when the ssh succeeds and i want it to exit if the ssh fails. Does this require to define a time out for the ssh command so that if the prompt is back before this defined time the next commands are executed??... (2 Replies)
Discussion started by: Hossam_Nox
2 Replies

7. Shell Programming and Scripting

could not send commands SSH session with Net::SSH::Expect

I am using Net::SSH::Expect to connect to the device(iLO) with SSH. After the $ssh->login() I'm able to view the prompt, but not able to send any coommands. With the putty I can connect to the device and execute the commands without any issues. Here is the sample script my $ssh =... (0 Replies)
Discussion started by: hansini
0 Replies

8. Shell Programming and Scripting

SSH Expect Script

Ok, i don't know if anyone else here have had to deal with something like this before, but here's my situation. I have about 1000+ servers I need to log into to do something. What i need to do is to log into each server, go to a certain directory on each of the servers, copy the files that... (3 Replies)
Discussion started by: SkySmart
3 Replies

9. Shell Programming and Scripting

Need 'expect' help, ssh/telnet and trapping

So here is what I am trying to do. I have a large # of switches and routers I am trying to log into. Unfortunately some have ssh only, some have telnet only. and some i have never logged into with ssh. I first want it to SSH, if i have never logged into the box it will ask for adding the ssh key. I... (0 Replies)
Discussion started by: ippy98
0 Replies

10. Shell Programming and Scripting

how do I handle ssh response with expect

I am trying to write an expect script that trys to telnet, if telnet fails, trys to ssh to a remote network devices. The script works fine until the following is received : spawn telnet 10.3.2.24 Trying 10.3.2.24... telnet: connect to address 10.3.2.24: Connection refused 10.3.2.24 is... (2 Replies)
Discussion started by: popeye
2 Replies
Login or Register to Ask a Question