交互式脚本自动输入
部分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命令

浙公网安备 33010602011771号