Simple expect question

Simple expect question

am 13.11.2006 15:22:14 von urgrue

I'm trying to make a simple script that will do with telnet what one can
do with ssh when you do "ssh hostname command". iow:
telnet somehost command

then it should, using expect (presumably), telnet into somehost, prompt
me interactively for the username/password, and after successfully
logging in run the command specified on somehost.

As simple as that sounds, I can't figure it out. I've gotten this far
which is probably done all wrong:

#!/usr/bin/expect

spawn telnet [lrange $argv 0 0\n] #telnet to host given on command line
expect { "login:"
#how to prompt user interactively for input here?
"password:"
#how to prompt user interactively for input here?
#somehow check for successful login here
send "[lrange $argv 1 99]" #send command-line args to host
send "exit\r"
}



any help appreciated.

-
To unsubscribe from this list: send the line "unsubscribe linux-admin" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html

Re: Simple expect question

am 13.11.2006 16:05:07 von Glynn Clements

urgrue wrote:

> I'm trying to make a simple script that will do with telnet what one can
> do with ssh when you do "ssh hostname command". iow:
> telnet somehost command
>
> then it should, using expect (presumably), telnet into somehost, prompt
> me interactively for the username/password, and after successfully
> logging in run the command specified on somehost.

The Wikipedia page for Expect uses this task as its first example:

http://en.wikipedia.org/wiki/Expect

--
Glynn Clements
-
To unsubscribe from this list: send the line "unsubscribe linux-admin" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html

Re: Simple expect question

am 13.11.2006 20:28:59 von Freddie

On Nov 13, 2006, at 17:05, Glynn Clements wrote:

>
> urgrue wrote:
>
>> I'm trying to make a simple script that will do with telnet what
>> one can
>> do with ssh when you do "ssh hostname command". iow:
>> telnet somehost command
>>
>> then it should, using expect (presumably), telnet into somehost,
>> prompt
>> me interactively for the username/password, and after successfully
>> logging in run the command specified on somehost.
>
> The Wikipedia page for Expect uses this task as its first example:
>
> http://en.wikipedia.org/wiki/Expect

Thanks, I had already seen that. The problem with the example is it
expects the username and password as variables that I'd have to give
on the command line which I'd rather not do.
Although, maybe I can be a bit kludgey and have a bash script prompt
for those and then feed them to expect, which seems a bit messy but I
suppose it'll work.


-
To unsubscribe from this list: send the line "unsubscribe linux-admin" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html

Re: Simple expect question

am 14.11.2006 12:09:44 von Glynn Clements

Freddie wrote:

> >> I'm trying to make a simple script that will do with telnet what
> >> one can
> >> do with ssh when you do "ssh hostname command". iow:
> >> telnet somehost command
> >>
> >> then it should, using expect (presumably), telnet into somehost,
> >> prompt
> >> me interactively for the username/password, and after successfully
> >> logging in run the command specified on somehost.
> >
> > The Wikipedia page for Expect uses this task as its first example:
> >
> > http://en.wikipedia.org/wiki/Expect
>
> Thanks, I had already seen that. The problem with the example is it
> expects the username and password as variables that I'd have to give
> on the command line which I'd rather not do.

If you're asking about the prompting, my first attempt would be:

puts -nonewline stderr "Username: "
flush stderr
set username [gets stdin]

puts -nonewline stderr "Password: "
flush stderr
exec stty -echo
set password [gets stdin]
exec stty echo
puts stderr ""

This is just normal Tcl, nothing specific to Expect.

--
Glynn Clements
-
To unsubscribe from this list: send the line "unsubscribe linux-admin" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html