最近一直在搞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
感觉这东西不咋地,我怀疑后续发生的很多问题是这个引起的,但交互功能确实不错。
Shell 小结
猜你喜欢
转载自ycnanevol.iteye.com/blog/1586781
今日推荐
周排行