运行vpnc的脚本,并input密码

我的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。

http://linux.die.net/man/1/expect

更详细地说,这是脚本的摘录:

 #!/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文件只包含一行密码