help with expect?

Anne Ramey anner at blast.com
Fri Sep 2 20:26:40 UTC 2005


I know this may not be the correct forum for this question, but I just 
can't find where the appropriate place to ask would be.  I'm trying to 
move an expect script from and older non-fedora linux box to a new 
fedora box.  It's just not working.  I'm thinking it has less to do with 
expect and more to do with the passwd function on fedora, but I'm not 
sure.  What I'm trying to do is call the expect script to set a password 
from inside a customized useradd fuction.  This is what my scipt looks like:
!/usr/bin/expect -f
;# autopass created 7-27-97
exp_internal 1

set name [lindex $argv 0]
set pass [lindex $argv 1]
set bad 0

#spawns passwd and sends all the info

log_user 1

spawn /usr/bin/passwd $name

expect "password:" {send "$pass\r"}

expect  {
           "BAD" {set bad 1}
           "password:" {send "$pass\r"}
         }

#puts "$bad";
if {$bad == 1} {
expect "password:" {send "$pass\r"}
expect "password:" {send "$pass\r"}
}
expect "successfully." {puts "passwd for $name changed.";}
close

And this is my output...it doesn't appear as if passwd is accepting the 
input:
[root at hedwig anner]#  /usr/local/bin/autopass anner try12
Application initialization failed: no display name and no $DISPLAY 
environment variable
spawn /usr/bin/passwd anner
parent: waiting for sync byte
parent: telling child to go ahead
parent: now unsynchronized from child
spawn: returns {12118}

expect: does "" (spawn_id exp4) match glob pattern "password:"? no
Changing password for user anner.

expect: does "Changing password for user anner.\r\n" (spawn_id exp4) 
match glob pattern "password:"? no
New UNIX password:
expect: does "Changing password for user anner.\r\nNew UNIX password: " 
(spawn_id exp4) match glob pattern "password:"? yes
expect: set expect_out(0,string) "password:"
expect: set expect_out(spawn_id) "exp4"
expect: set expect_out(buffer) "Changing password for user anner.\r\nNew 
UNIX password:"
send: sending "try12\r" to { exp4 }

expect: does " " (spawn_id exp4) match glob pattern "BAD"? no
"password:"? no
try12

expect: does " try12\r\n" (spawn_id exp4) match glob pattern "BAD"? no
"password:"? no
expect: timed out

expect: does " try12\r\n" (spawn_id exp4) match glob pattern 
"successfully."? no
expect: timed out

Any help would be appreciated.

-- 
Anne




More information about the fedora-list mailing list