在Expect脚本中处理远程服务器的SSH会话结束

时间:2013-11-14 22:12:26

标签: expect

我制作了2个Expect脚本来SSH到服务器列表并更改密码。一个用于AIX,一个用于RedHat Linux。

AIX脚本工作正常,但Linux脚本给我一个问题。原因是在Linux服务器上,当您被迫更改过期密码时,在更改密码后,远程端会终止SSH会话。

passwd: all authentication tokens updated successfully.
Connection to drm23rdv closed.
send: spawn id exp20 not open
while executing...

此时脚本完全停止,仍有许多服务器要登录。 (并且当前密码只是一个临时密码,虽然我可以修改脚本以使用我的永久密码选择,但我喜欢以root身份执行此操作)

在初始强制密码更改后,我想要做的是重新登录到服务器并再次以root身份更改密码。我很确定我能解决这个问题,但首先我需要找到一种方法来期望处理关闭的SSH会话,而不仅仅是放弃,而是更有尊严。

1 个答案:

答案 0 :(得分:1)

使用expect eof {do something},或者连接可能随时关闭,请使用expect_before {eof {do something}}