[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