После объединения двух файлов оболочки bash в один он не работает
Когда я выполняю их последовательно, это работает. После их объединения возникает ошибка.
Первый файл (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
, это не удастся, и это причина. Но я не знаю, почему это произошло.
Кто-то помогает мне. Благодарю.
1 ответ
Изменяющего sleep 3
в sleep 10
опять работает. Эта ошибка вызвана задержкой сети.