自动化脚本编写与远程登录技巧
1. 脚本优化与改写
在脚本编写中,有许多细节需要注意。例如,在第二个发送命令中, $ 前面需要加反斜杠,这样可以防止 Tcl 对 status 变量进行本地变量替换,确保字符串 "$status" 按字面意思发送。如果使用 Bourne shell,Expect 脚本需要使用 $? 而不是 $status 。
正则表达式 "\r\n(.*)\r\n" 用于提取状态信息。为了理解为什么使用这个特定的模式,我们需要考虑脚本发送 "echo $status\r" 字符串后进程的返回情况。登录后,首先出现的是每日消息,接着是提示符(如 “%”)。发送命令(如 “quack twice”)并回车,远程 shell 会回显该命令,回车会被回显为 \r\n 序列。命令执行时可能会有输出,最后再次出现提示符,脚本请求回显状态,请求本身会被回显,后面跟着 "\r\n" 、状态信息和另一个 "\r\n" 。
为了优化脚本,可以进行以下修改:
- 禁用 expect 命令的超时设置,使用 set timeout -1 。
- 无需分别发送两个命令。
- 不需要显式写出回车换行序列的两个字符,只需要状态信息周围的字符。
改写后的脚本如下:
超级会员免费看
订阅专栏 解锁全文
1953

被折叠的 条评论
为什么被折叠?



