我正在尝试将this page上关于连接到OS X上的软Ether VPN的指令转换为bash脚本,但我遇到了一些问题。
当我在命令行单独运行这些命令时,我能够很好地启动与VPN的连接并适当地设置路由,但是当我将它放入脚本时,它不起作用。
这是有问题的脚本:
#!/bin/bash
GATEWAY=`route -n get default | grep gateway | awk '{print $2}'`
VPN_IP=130.158.6.123/32
VPN_GATEWAY=192.168.0.1
vpnclient start
vpncmd localhost /CLIENT /CMD AccountConnect HomeVPN;
ipconfig set tap0 DHCP;
ifconfig tap0 down; ifconfig tap0 up
echo "waiting for dhcp to get us an address..."
sleep 15
route delete default;
route -n add $VPN_IP $GATEWAY;
route add default $VPN_GATEWAY;
经过测试,我已经确认GATEWAY
获得了正确的值,所有其他变量都设置正确。该脚本似乎正确地执行所有操作,直到它开始更改路径的部分。起初我以为是因为接口没有足够的时间来获取IP地址,所以我花了很长的等待时间来确保它在开始尝试更改路由之前有一个IP。
有什么想法,为什么这不适用于脚本形式?
只是一个猜测:sudo在shell脚本中不能很好地工作,因为它是一个交互式工具,需要提示输入密码。您可以考虑删除sudo命令并使用sudo运行整个脚本。