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