[OT] SSH login script - Help

Manuel Aróstegui manuel at todo-linux.com
Fri Apr 24 10:50:57 UTC 2009


On Fri, 2009-04-24 at 11:16 +0100, Sharpe, Sam J wrote:
> Dan Track wrote:
> > 2009/4/24 Manuel Aróstegui <manuel at todo-linux.com>:
> > > On Fri, 2009-04-24 at 10:12 +0100, Dan Track wrote:
> > >> Hi Guys,
> > >>
> > >> I've written a simple for loop see below:
> > >>
> > >> for i in orion earth;do scp /etc/hosts /etc;done
> > >>
> > >> I have a small scripting knowledge so would appreciate some help. What
> > >> I'd like to do is somehow change the above so that the script prompts
> > >> me for a password and when I give the script the password it will use
> > >> it to auto-reply to any password promtps that scp asks for when
> > >> logging into all the servers. If I am right I believe readline needs
> > >> to be used. If it can't be done in bash can you give me a perl
> > >> alternative please.
> > >>
> > >> Thanks for your help.
> > >>
> > >> Dan
> > >>
> > > Hi Dan,
> > >
> > > You might want to use autoexpect for that.
> > >
> > > This can get you in security problems since you'd need to write your
> > > password in the script, but as long as you use user and groups perms
> > > correctly you should kinda safe.
> > >
> > > Manuel.
> > >
> > Hi Manuel,
> >
> > Thankyou for your suggestion, is there any chance of getting the above
> > scripted by yourself. I've never used autoexpect before. I appreciate
> > the advice anyway.
> If security is not a concern, write a simple script that accepts the 
> password and provides it to sshpass (which isn't packaged for Fedora as 
> it's a huge huge security nightmare): http://freshmeat.net/projects/sshpass/
> 
> e.g.:
> [sam at sam ~]$ export SSHPASS=mypass
> [sam at sam ~]$ sshpass -e ssh unixdb2-vm
> [sam at unixdb2-vm ~]$
> 
> In your case, you'd want something like "sshpass -e scp /etc/hosts 
> orion:/etc/"
> 

Dan, 

The "magic" of autoexpec is that it does everything you do for you, here
you are an example:

First I start autoexpect and then I do whatever I want expect to do for
me
root at life:~# autoexpect 
autoexpect started, file is script.exp
root at life:~# ssh root at 192.168.50.1
root at 192.168.50.1's password: 
Last login: Fri Apr 24 12:45:04 2009 from 192.168.50.103
[root at galaga ~]# ls /opt/lzo-2.02/
aclocal.m4  autoconf  ChangeLog   config.log     configure.ac  examples
libtool   Makefile.am  NEWS    stamp-h1  util
asm         B         config.h    config.status  COPYING       include
lzotest   Makefile.in  README  tests
AUTHORS     BUGS      config.hin  configure      doc           INSTALL
Makefile  minilzo      src     THANKS
[root at galaga ~]# exit
logout
Connection to 192.168.50.1 closed.
root at life:~# exit
exit
autoexpect done, file is script.exp
root at life:~# chmod +x script.exp 

Now I execute my script:
root at life:~# ./script.exp 
spawn /bin/bash
root at life:~# ssh root at 192.168.50.1
root at 192.168.50.1's password: 
Last login: Fri Apr 24 12:46:01 2009 from 192.168.50.103
[root at galaga ~]# ls /opt/lzo-2.02/
aclocal.m4  autoconf  ChangeLog   config.log     configure.ac  examples
libtool   Makefile.am  NEWS    stamp-h1  util
asm         B         config.h    config.status  COPYING       include
lzotest   Makefile.in  README  tests
AUTHORS     BUGS      config.hin  configure      doc           INSTALL
Makefile  minilzo      src     THANKS
[root at galaga ~]# exit
logout
Connection to 192.168.50.1 closed.
root at life:

I had to change some minor stuff in script.exp to adapt it to my system
but all the major stuff is done automatically.

Anyways, as Joachim, you might want to read a little bit about expect
before trying this.

Manuel.




More information about the fedora-list mailing list