Expect scripts
Jump to navigation
Jump to search
ssh interactive login
#!/usr/bin/expect -f log_user 0 proc do_exit {msg} { puts stderr $msg exit 1 } set user [lindex $argv 0] set password [lindex $argv 1] set ipaddr [lindex $argv 2] #send_tty "password $password\n" set newpassword [lindex $argv 3] set timeout 20 # now connect to remote UNIX box (ipaddr) with given script to execute spawn ssh $user@$ipaddr #spawn cat match_max 100000 # Look for passwod prompt expect { # login failed "Permission denied*" { do_exit "$ipaddr incorrect password" } "Are you sure you want to continue" { send "yes\r"; exp_continue} # password prompt "*?assword:*" { send -- "$password\r"; exp_continue} {[$]} } #clear out buffer expect -re $ # check group send -- "id\r" expect "uid*)" send_tty "$ipaddr $expect_out(0,string)\n" #clear out buffer expect -re $ send -- "exit\r" expect eof close $spawn_id
change password (centos)
#!/usr/bin/expect -f log_user 0 proc do_exit {msg} { puts stderr "$msg" exit 1 } set user [lindex $argv 0] set password [lindex $argv 1] set ipaddr [lindex $argv 2] #send_tty "password $password\n" set newpassword [lindex $argv 3] set timeout 30 # now connect to remote UNIX box (ipaddr) with given script to execute spawn ssh $user@$ipaddr match_max 100000 # Look for passwod prompt expect { # login failed "Permission denied*" { do_exit "$ipaddr incorrect password" } "Are you sure you want to continue" { send "yes\r"; exp_continue} # password prompt "*?assword:*" { send -- "$password\r"; exp_continue} {[$]} } #clear out buffer expect -re $ send -- "passwd\r" expect "*current*password" send -- "$password\r" expect "*ew*password*" send -- "$newpassword\r" expect { "Retype*password" {send -- "$newpassword\r"} "BAD PASSWORD*" { do_exit "$ipaddr Poor new password:- $expect_out(0,string)" } } expect { "*updated successfully" { send_tty "$ipaddr has a new password\n" } timeout { do_exit "$ipaddr timeout buffer was $expect_out(buffer)" } } send -- "exit\r" expect eof close $spawn_id