我的vpnc连接经常中断,我的朋友创build了一个运行vpnc的脚本,并运行另一个“守卫”脚本,每隔一分钟vpnc仍然连接,并连接它,如果不是。
我和我朋友的区别是他有静态密码,我每次都用小设备生成不同的密码。 守护脚本运行zenity显示小窗口input密码不是问题,问题是如何将这个密码传递给vpnc?
我在这里试了一下,像这样:
PASS=`zenity --entry --title="VPN Password" --text="Enter your password:"` sudo vpnc $SCRIPTPATH/vpnc.conf<<<$PASS
但是这不起作用。 Vpnc不断要求在命令行上input密码。 如何在脚本中使用密码提供它?
您可以使用'expect'来等待“Password:”提示并input$ PASS。
更详细地说,这是脚本的摘录:
#!/usr/bin/expect -f set password [lrange $argv 1 1] set timeout -1 match_max 100000 spawn /usr/sbin/vpnc --local-port 0 vpnc.conf expect { "Enter password for" { send -- "$password\r" } } send -- "\r" interact
那你可以像运行一样
cat .passwd | xargs -n 1 expect-vpnc.exp
而你的.passwd文件只包含一行密码