Phoenix.pm: Expect.pm question
Douglas E. Miles
doug.miles at bpxinternet.com
Mon Nov 8 12:54:38 CST 1999
So, no Expect.pm users out there?
I have a little more information on the problem. I was originally
running this as 'user2' (test user), and the script was owned by
'user2'. It appears to work right up until the actual change is to take
effect. I tried changing the ownership to root and running it as root,
and BINGO!, it changes the root password. Unfortunately this isn't what
I want. Any ideas are appreciated. I'm still hacking away...
"Douglas E. Miles" wrote:
>
> I'm having trouble getting Expect.pm to work with passwd. Basically,
> the patterns all appear to match, but it hangs at the end. Here's the
> code snippet:
>
> ##################################################
>
> $Expect::Debug = 3;
>
> my $passwd = Expect->spawn('/usr/bin/passwd');
>
> $passwd->expect(undef, '(current) UNIX password:');
> print "$current_password\n";
> print $passwd "$current_password\n";
>
> $passwd->expect(undef, 'New UNIX password:');
> print "$new_password\n";
> print $passwd "$new_password\n";
>
> $passwd->expect(undef, 'Retype new UNIX password:');
> print "$new_password\n";
> print $passwd "$new_password\n";
>
> $passwd->soft_close;
>
> ##################################################
>
> Here's the output:
>
> ##################################################
>
> Spawned '/usr/bin/passwd' (spawn id(4))
> Pid: 924
> Tty: /dev/ttya0
> Beginning expect from spawn id(4).
> Accumulator: ''
> Expect timeout time: unlimited seconds.
> expect: Pty=spawn id(4), time=941839574, loop_time=undef
> expect: handle spawn id(4) ready.
> expect: read 54 byte(s) from spawn id(4).
> Changing password for user2
> (current) UNIX password: Matched pattern 1 ('(current) UNIX password:')!
> Before match string: 'Changing password for user2\r\n'
> Match string: '(current) UNIX password:'
> After match string: ' '
> Returning from expect successfully.
> Accumulator: ' '
> password
> Beginning expect from spawn id(4).
> Accumulator: ' '
> Expect timeout time: unlimited seconds.
> expect: Pty=spawn id(4), time=941839574, loop_time=undef
> expect: handle spawn id(4) ready.
> expect: read 2 byte(s) from spawn id(4).
>
> expect: handle spawn id(4) ready.
> expect: read 19 byte(s) from spawn id(4).
> New UNIX password: Matched pattern 1 ('New UNIX password:')!
> Before match string: ' \r\n'
> Match string: 'New UNIX password:'
> After match string: ' '
> Returning from expect successfully.
> Accumulator: ' '
> N8ZRccmS
> Beginning expect from spawn id(4).
> Accumulator: ' '
> Expect timeout time: unlimited seconds.
> expect: Pty=spawn id(4), time=941839574, loop_time=undef
> expect: handle spawn id(4) ready.
> expect: read 2 byte(s) from spawn id(4).
>
> expect: handle spawn id(4) ready.
> expect: read 26 byte(s) from spawn id(4).
> Retype new UNIX password: Matched pattern 1 ('Retype new UNIX
> password:')!
> Before match string: ' \r\n'
> Match string: 'Retype new UNIX password:'
> After match string: ' '
> Returning from expect successfully.
> Accumulator: ' '
> N8ZRccmS
> Beginning expect from spawn id(4).
> Accumulator: ' '
> Expect timeout time: unlimited seconds.
> expect: Pty=spawn id(4), time=941839574, loop_time=undef
> expect: handle spawn id(4) ready.
> expect: read 10 byte(s) from spawn id(4).
> N8ZRccmS
>
> ##################################################
>
> Any help for this expect impaired hacker is appreciated. :)
--
For a list of the ways which technology has failed
to improve our quality of life, press 3.
More information about the Phoenix-pm
mailing list