【发布时间】:2011-11-03 06:16:17
【问题描述】:
我使用expect 通过 ssh 在远程主机中使用 sudo 执行一些命令。脚本如下:
spawn ssh -q ${user}@${host}
expect "*?assword:"
send "${pass}\r"
expect "${user}@"
send "sudo ls\r"
expect "*?assword:"
send "${pass}\r"
expect "${user}@"
send "exit\r"
interac
它第一次运行完美,但是当我连续执行它时发生了一些错误。那是因为sudo不会马上过期,所以如果短时间内sudo some命令两次,第二个可能不需要密码,因此上面脚本中的第二个send "${pass}\r"失败了!
那么,当 sudo 未过期时,我们如何检测并避免发送密码呢?谢谢!
【问题讨论】: