62 lines
1.7 KiB
Plaintext
62 lines
1.7 KiB
Plaintext
|
#!/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:
|