Re: expect command spawns incorrectly

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


On Sat, Nov 28, 2009 at 19:04, Steven W. Orr <[email protected]> wrote:
On 11/28/09 19:13, quoth Donald Russell:
> On Sat, Nov 28, 2009 at 15:47, Steven W. Orr <[email protected]
> <mailto:[email protected]>> wrote:
>     On 11/28/09 02:43, quoth Donald Russell:
>     > I am trying to use the expect program to automate an sftp process....
>     >
>     > The expect file begins with
>     >
>     > spawn sftp -oProxyCommand='....'  [email protected]
>     > expect "password:"
>     > send "sesame\n"
>     > expect "sftp> "
>     Try this:
>     send "sesame\r"
> I'll try that, but I'm not hopeful.
> The command that is spawned fails... I get the "usage" as if all that
> was spawned was "sftp" and not the entire command. So it doesn't even
> get to the "expect password" part, regardless of whether I'm using \n or
> \r in the "send".
> And I gather there is no such character on the "spawn" line... the
> command is just taken to be the literal characters up to the end-of-line.
> Do I need to escape anything? As I mentioned, if I cut/past the command
> into a shell.. it works fine... it's just got being spawned properly by
> expect. (Or I'm doing something wrong :-( )

Ok. One last suggestion. It sounds like you might have a quoting problem.

eval spawn "sftp -oProxyCommand='....'  [email protected]"

I'm assuming that you are using the single quotes to contain an argument that
may have possible embedded white space. In case there is no white space, it'll
probably also work without the single quotes. By default spawn will echo what
it's doing. You can stop that via the -noecho option.

Don't forget that expect is not a language of its own. It's just an extension
to the tcl language. tcl is what provides the eval. ;-)

Yes, I used single quotes because the -oProxyCommand= string contains spaces.
So, I removed the quotes, and escaped the spaces... works fine now.

Lessons learned: "spawn" doesn't handle quoted strings properly.

Oddly enough, when spawn was echoing the command with the signle quotes and spaces, the echoed command was correct... I could cut/paste it into a shell unmodified and it worked. So, yes, there's something in the way spawn actually spawns the command.

Anyway, it's working now and I can move forward. :-)

fedora-list mailing list
[email protected]
To unsubscribe:

[Index of Archives]     [Current Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]     [Fedora Docs]

  Powered by Linux