我将两个 bash shell 文件合并为一个后它不起作用



当我按顺序执行它们时,它可以工作。合并它们后,会出现错误。

第一个文件 (a.sh)。

# !/bin/bash
/etc/init.d/xl2tpd start | xargs echo
echo "c zju_vpn" > /var/run/xl2tpd/l2tp-control

第二个文件(b.sh)。

#!/bin/bash
sleep 3
VPN_SERVER_IP=10.5.1.7
DEFAULT_GW=10.214.16.1
route add $VPN_SERVER_IP gw $DEFAULT_GW eth0
route del default
route add default ppp0
ping github.com

执行echo "c zju_vpn" > /var/run/xl2tpd/l2tp-control后,ppp0 接口将不会立即出现。所以我把这个sleep 3写在文件 b.sh 中。

如果我将它们合并为一个(c.sh)。

#!/bin/bash
/etc/init.d/xl2tpd start
echo "c zju_vpn" > /var/run/xl2tpd/l2tp-control 
sleep 3
VPN_SERVER_IP=10.5.1.7
DEFAULT_GW=10.214.16.1
route add $VPN_SERVER_IP gw $DEFAULT_GW eth0
route del default
route add default ppp0
ping github.com

出现错误:SIOCADDRT:没有这样的设备。

没有 ppp0,当我输入 ifconfig .所以当执行route add default ppp0时,它会失败,这就是原因。但我不知道为什么会这样。

有人帮助我。谢谢。

sleep 3更改为sleep 10,它再次起作用。此错误由网络延迟导致。

相关内容

最新更新