[solved][bash] sekwencja komend w skrypcie nie wykonuje się

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Awatar użytkownika
Opalo
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 113
Rejestracja: 07 sty 2009, 09:52
Płeć: Mężczyzna

[solved][bash] sekwencja komend w skrypcie nie wykonuje się

Post 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ć?
Ostatnio zmieniony 29 wrz 2011, 14:21 przez Opalo, łącznie zmieniany 1 raz.
Ubek308
Zakręcona Traszka
Zakręcona Traszka
Posty: 574
Rejestracja: 25 maja 2011, 10:17
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86_64

Re: [bash] sekwencja komend w skrypcie nie wykonuje się

Post autor: Ubek308 »

A jak jestes polaczony i wkleisz te komende w terminal (route add) to routing sie ustawia ?
Awatar użytkownika
Opalo
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 113
Rejestracja: 07 sty 2009, 09:52
Płeć: Mężczyzna

Re: [bash] sekwencja komend w skrypcie nie wykonuje się

Post autor: Opalo »

Tak, jeśli najpierw wykonam skrypt openvpn, a potem dodam trasę z linii komend to wszystko jest ok.
kasjo
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 175
Rejestracja: 31 paź 2007, 16:38
Płeć: Mężczyzna
Wersja Ubuntu: 11.10
Środowisko graficzne: KDE Plasma
Architektura: x86

Re: [bash] sekwencja komend w skrypcie nie wykonuje się

Post 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
Awatar użytkownika
Opalo
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 113
Rejestracja: 07 sty 2009, 09:52
Płeć: Mężczyzna

Re: [bash] sekwencja komend w skrypcie nie wykonuje się

Post 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'..
kasjo
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 175
Rejestracja: 31 paź 2007, 16:38
Płeć: Mężczyzna
Wersja Ubuntu: 11.10
Środowisko graficzne: KDE Plasma
Architektura: x86

Re: [bash] sekwencja komend w skrypcie nie wykonuje się

Post autor: kasjo »

Może w pętli sprawdzać czy utworzył się już interface tun0? Chyba, że moje rozumowanie jest błędne :)
Awatar użytkownika
Opalo
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 113
Rejestracja: 07 sty 2009, 09:52
Płeć: Mężczyzna

Re: [bash] sekwencja komend w skrypcie nie wykonuje się

Post 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..
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Re: [bash] sekwencja komend w skrypcie nie wykonuje się

Post autor: ethanak »

A openvpn w ogóle wraca?
Awatar użytkownika
Opalo
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 113
Rejestracja: 07 sty 2009, 09:52
Płeć: Mężczyzna

Re: [bash] sekwencja komend w skrypcie nie wykonuje się

Post autor: Opalo »

Nie, zatrzymuje się po komunikacie, że jest udało się nawiązać połączenie.
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Re: [bash] sekwencja komend w skrypcie nie wykonuje się

Post 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.
Awatar użytkownika
Opalo
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 113
Rejestracja: 07 sty 2009, 09:52
Płeć: Mężczyzna

Re: [bash] sekwencja komend w skrypcie nie wykonuje się

Post 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.
Ubek308
Zakręcona Traszka
Zakręcona Traszka
Posty: 574
Rejestracja: 25 maja 2011, 10:17
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86_64

Re: [solved][bash] sekwencja komend w skrypcie nie wykonuje się

Post 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
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 44 gości