#!/usr/bin/expect -f # This is a script for repeatedly logging into the localhost # using `rlogin` in order to apparently see a symptoms described # in bug #332198. # As described in the bug log, sometimes `rlogind` will fail to # establish a connection, because it starts "login" process and # the latter fails with "unable to determine TTY name, got /dev/pts/1" # message. # # BUGS # # * the script rlogins to localhost # * the script doesn't handle passwdord prompt, because it's intended # to use .rhosts auth and expects shell prompt immediately after # `rlogin` # * the regexp for shell prompt is hardcoded log_user 0 match_max 8192 while {1} { set rlogin_spawn [spawn rlogin localhost] if { $rlogin_spawn == 0 } { exit 1 } expect { -timeout 10 -re "^.*(Last login\[^\r\n\]*).*\n(\[^\r\n\]*\[#$\] )$" { send_error "$expect_out(1,string)\n" send_error "$expect_out(2,string)\n" # send_error "$expect_out(0,string)\n" } timeout { send_error "TIMEOUT/prompt\n" send_error "$expect_out(buffer)\n" send_error "RETRYING\n" log_user 1 send "tty /\r" expect -timeout 2 -re "^.*\r?\n(\[^\r\n\]*# )$" {} send "tty /\r" expect -timeout 2 -re "^.*\r?\n(\[^\r\n\]*# )$" {} send_error "\n" exit 2 } } send "tty\r" expect { -timeout 4 -re "tty\r?\n(\[^\r\n\]*)\r?\n(\[^\r\n\]*\[#$\] )$" { send_error "$expect_out(2,string)$expect_out(1,string)\n" # send_error "$expect_out(0,string)\n" } timeout { send_error "TIMEOUT/tty\n" ; exit 3 } } send "exit\r" expect { -timeout 2 eof { # send_error "OK4: EOF\n" } timeout { send_error "TIMEOUT/eof\n" ; exit 4 } } wait } # vi: set sw=4: