运行vpnc的脚本,输入密码

运行vpnc的脚本,输入密码

我的 vpnc 连接经常中断,我的朋友创建了一个脚本,它运行 vpnc,并运行另一个“保护”脚本,该脚本每分钟检查一次 vpnc 是否仍然连接,如果不是,则连接它。

我和我朋友的区别是,他有静态密码,我用小设备每次生成不同的密码。运行守卫脚本zenity显示小窗口输入密码是没有问题的,问题是如何将这个密码传递给vpnc?

我在这里尝试过文档,如下所示:

PASS=`zenity --entry --title="VPN Password" --text="Enter your password:"`
sudo vpnc $SCRIPTPATH/vpnc.conf<<<$PASS

但这不起作用。Vpnc 一直在命令行上要求输入密码。我如何在脚本中输入密码?

答案1

您可以使用“expect”等待“密码:”提示并输入$PASS。

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

答案2

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

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

相关内容