交互式脚本自动输入

部分shell命令执行时可能需要获取终端用户的输入信息,导致脚本停止等待用户输入,如果输入值固定则自动进行输入则更方便

找到了tcl/tk的工具expect

安装 sudo apt-get install tcl8.5

使用gpg进行加密解密文件时需要输入密钥,为了能够利用gpg全自动加密文件,写出如下脚本

#!/usr/bin/expect    

spawn gpg -c -o file.enc file2encrypt

expect "密码: "

send "code\r"

#密码确认、

expect "密码: "

send "code\r"

expect eof   #一次交互完成需要加入 这一句结束掉

#进行gpg签名

spawn gpg -o file.sig -s file.enc

expect "密码: "

send "signature_code\r"

expect eof

exit

interact执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。如果只是登录过去执行一段命令就退出,可改为[expect eof] 

使用expect执行shell脚本时部分通配符失效,该问题有待后续继续研究

而且无法执行 spawn cd dir命令

posted @ 2012-05-23 17:40  戈壁子规  阅读(873)  评论(0)    收藏  举报