Strona 1 z 1
[solved][bash] sekwencja komend w skrypcie nie wykonuje się
: 29 wrz 2011, 11:46
autor: Opalo
Cześć,
Piszę skrypt, który wystartuje mi VPN'a i jednocześnie doda jeden wpis to tablicy tras. Wygląda następująco:
Kod: Zaznacz cały
#!/bin/bash
if [ "$(id -u)" -ne "0" ];
then
#echo "This script must be run as root" 2>&1
echo -e "\n\033[;31mThis script must be run as root!\033[;37m\n"
exit 1
fi
VPN_HOME=<sciezka_do_katalogu>
VPN_CONF_FILE=<plik_konf_vpn>
VPN_KEY_PASS_FILE=<haslo_do_klucza>
#openvpn start
cd $VPN_HOME
openvpn --config $VPN_CONF_FILE --askpass $VPN_KEY_PASS_FILE
#add route to redmine and git
route add -net <ip> netmask <maska> dev tun0
Problem tkwi w tym, że po wykonaniu:
Kod: Zaznacz cały
openvpn --config $VPN_CONF_FILE --askpass $VPN_KEY_PASS_FILE
następna komenda, czyli:
Kod: Zaznacz cały
route add -net <ip> netmask <maska> dev tun0
nie wykonuje się.
Jak temu zaradzić?
Re: [bash] sekwencja komend w skrypcie nie wykonuje się
: 29 wrz 2011, 12:28
autor: Ubek308
A jak jestes polaczony i wkleisz te komende w terminal (route add) to routing sie ustawia ?
Re: [bash] sekwencja komend w skrypcie nie wykonuje się
: 29 wrz 2011, 12:30
autor: Opalo
Tak, jeśli najpierw wykonam skrypt openvpn, a potem dodam trasę z linii komend to wszystko jest ok.
Re: [bash] sekwencja komend w skrypcie nie wykonuje się
: 29 wrz 2011, 12:34
autor: kasjo
Może się mylę, ale czy openvpn nie tworzy przypadkiem urządzenia tun0 ?
Jeżeli odpalasz z palca urządzenie zdąży się utworzyć, ze skryptu nie. Daj może jakiś "sleep" między komendami i wtedy zobacz
Re: [bash] sekwencja komend w skrypcie nie wykonuje się
: 29 wrz 2011, 12:40
autor: Opalo
Tworzy jak najbardziej. A nie jest tak, że te komendy powinny się wykonać w odpowiedniej sekwencji? Tzn. najpierw 'openvpn' potem 'route' czy może 'openvpn' jedzie w jakimś osobnym wątku? 'sleep' jest jakimś rozwiązaniem, ale nie wiadomo nigdy ile dokładnie potrwa wywołanie 'openvpn'..
Re: [bash] sekwencja komend w skrypcie nie wykonuje się
: 29 wrz 2011, 12:51
autor: kasjo
Może w pętli sprawdzać czy utworzył się już interface tun0? Chyba, że moje rozumowanie jest błędne

Re: [bash] sekwencja komend w skrypcie nie wykonuje się
: 29 wrz 2011, 12:54
autor: Opalo
No nie wiem, mnie się wydaje, że 'route' w skrypcie w ogóle się nie wykonuje. Dodałem na końcu losowe 'echo' i też go nie było..
Re: [bash] sekwencja komend w skrypcie nie wykonuje się
: 29 wrz 2011, 13:10
autor: ethanak
A openvpn w ogóle wraca?
Re: [bash] sekwencja komend w skrypcie nie wykonuje się
: 29 wrz 2011, 13:16
autor: Opalo
Nie, zatrzymuje się po komunikacie, że jest udało się nawiązać połączenie.
Re: [bash] sekwencja komend w skrypcie nie wykonuje się
: 29 wrz 2011, 13:31
autor: ethanak
Patrzę sobie w 'man openvpn' i widzę coś takiego:
Kod: Zaznacz cały
--route network/IP [netmask] [gateway] [metric]
Add route to routing table after connection is established. Multiple routes can be specified. Routes will be automatically torn down in reverse order prior to TUN/TAP device close.
This option is intended as a convenience proxy for the route(8) shell command, while at the same time providing portable semantics across OpenVPN's platform space.
netmask default -- 255.255.255.255
gateway default -- taken from --route-gateway or the second parameter to --ifconfig when --dev tun is specified.
The default can be specified by leaving an option blank or setting it to "default".
The network and gateway parameters can also be specified as a DNS or /etc/hosts file resolvable name, or as one of three special keywords:
vpn_gateway -- The remote VPN endpoint address (derived either from --route-gateway or the second parameter to --ifconfig when --dev tun is specified).
net_gateway -- The pre-existing IP default gateway, read from the routing table (not supported on all OSes).
remote_host -- The --remote address if OpenVPN is being run in client mode, and is undefined in server mode.
I jeszcze:
Kod: Zaznacz cały
--daemon [progname]
Become a daemon after all initialization functions are completed.
Re: [bash] sekwencja komend w skrypcie nie wykonuje się
: 29 wrz 2011, 13:47
autor: Opalo
Dzięki, zaraz spróbuje.
-- 29 wrz 2011 13:07 --
Mam jednak problem z zestawieniem wywołania 'openvpn'
To będzie coś takiego:
Kod: Zaznacz cały
openvpn --config $VPN_CONF_FILE --askpass $VPN_KEY_PASS_FILE --route <ip> <netmask>
Ale nie wiem gdzie podziać kawałek 'dev tun0'? I co on oznacza?
-- 29 wrz 2011 13:17 --
Ok, zrobiłem. Wszystko było w dokumentacji. 'dev tun0' zostanie wykorzystane domyślnie.
Re: [solved][bash] sekwencja komend w skrypcie nie wykonuje się
: 29 wrz 2011, 16:04
autor: Ubek308
"kawałek 'dev tun0'? I co on oznacza?"
oznacza ze routing co go chcesz ustawic bedzie sie odbywal przez device tun0, a nie na przyklad eth0 czy ppp0