Shell 小结

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

1. ssh 远程执行脚本不能退出。
我用本地脚本连接执行了一个远程的脚本 ssh [email protected] 'test.sh',当这个脚本执行完毕后却不能退出,因为我本地脚本还有别的事情要做。
解决方法是:
将屏幕输出到一个看不见的地方,如下 ssh [email protected] 'test.sh > /dev/null < /dev/null 2>&1’
这样做的方法是看不到即时的脚本执行信息,但可以通过 | tee aaa.log 的方式将信息输入到aaa.log文件。

2. expect 的使用
Example:

#!/usr/bin/expect   指定运行expect路径
set timeout -1  #设置timeout时间,默认10秒,因为我的脚本执行时间很长,所以设了
                #没有timeout

set job_name [lindex $argv 0] #接收参数的方式,跟shell有点不同,shell里是
                              #$1这种的

spawn ssh ssh [email protected]  #连接到远程机器
expect "*assword*"          #期望能看到一个输入密码的提示,支持正则
  send "password\n"          #发送密码,后面一定要加\n模拟回车
expect "#"                  #该干嘛干嘛
  send 执行命令
expect eof  
感觉这东西不咋地,我怀疑后续发生的很多问题是这个引起的,但交互功能确实不错。



          

猜你喜欢

转载自ycnanevol.iteye.com/blog/1586781