在bash脚本

时间:2015-07-13 11:44:25

标签: bash

我在bash脚本中使用了这个函数:

function start_vpn() {
sudo ip netns exec frootvpn openvpn --config /etc/openvpn/frootvpn.conf &

while ! sudo ip netns exec frootvpn ip a show dev tun0 up; do
    sleep .5
done
}

它失败了,因为它不会停止让我输入私钥密码。 当我手动输入sudo ip netns exec frootvpn openvpn --config /etc/openvpn/frootvpn.conf时,我得到了私钥提示,但在脚本中它不等我输入它:)

1 个答案:

答案 0 :(得分:1)

如果您的意思是sudo密码,可以尝试

sudo sh -c 'ip netns exec frootvpn openvpn --config /etc/openvpn/frootvpn.conf &'

对于openvpn密码,您可以尝试让它从fifo中读取它。 然后,您将密码回显到fifo。我没试过这个。

mkfifo ~/myfifo
sudo sh -c 'ip ... openvpn --askpass ~/myfifo ... &'

然后以交互方式,如果您不希望密码回显:

$ stty -echo; cat >~/myfifo; stty echo
type your password
type control-D for eof