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