Shell 小结

最近一直在搞shell,仅以此篇做一点小结。

1.ssh远程执行脚本不能退出。

我用本地脚本连接执行了一个远程的脚本sshroot@10.10.10'test.sh',当这个脚本执行完毕后却不能退出,因为我本地脚本还有别的事情要做。

解决方法是:

将屏幕输出到一个看不见的地方,如下sshroot@10.10.10'test.sh>/dev/null</dev/null2>&1’

这样做的方法是看不到即时的脚本执行信息,但可以通过|teeaaa.log的方式将信息输入到aaa.log文件。

2.expect的使用

Example:

#!/usr/bin/expect指定运行expect路径

settimeout-1#设置timeout时间,默认10秒,因为我的脚本执行时间很长,所以设了

#没有timeout

setjob_name[lindex$argv0]#接收参数的方式,跟shell有点不同,shell里是

#$1这种的

spawnsshsshroot@10.10.10#连接到远程机器

expect"*assword*"#期望能看到一个输入密码的提示,支持正则

send"password\n"#发送密码,后面一定要加\n模拟回车

expect"#"#该干嘛干嘛

send执行命令

expecteof

感觉这东西不咋地,我怀疑后续发生的很多问题是这个引起的,但交互功能确实不错。

相关推荐