Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.

Autor Téma: 20.04 - skript po startu až po přihlášení do sítě  (Přečteno 849 krát)

panRajce

  • Člen
  • **
  • Příspěvků: 107
    • Zobrazit profil
20.04 - skript po startu až po přihlášení do sítě
« kdy: 16 Červen 2020, 13:42:26 »
Ahoj,
prosím poraďte. Mám nastavený v Aplikace po spuštění jeden SH skript. Ale jeho spuštěním dochází k ověření síťové licence.
Bohužel proti 18.04 se mi u 20.04 síť připojuje poměrně dlouho (PS, zkusil jsem i kdysi poraděný fígl pro 18.04 s ohlášením a opětovným přihlášením). Tím pádem u funkce nedojde k potřebnému ověření a zůstane "viset". Když já zavřu a spustím následně manuálně, když už je připojená síť, tak vše proběhne v pořádku.

Našel jsem sice možné řešení - https://linuxconfig.org/how-to-run-script-on-startup-on-ubuntu-20-04-focal-fossa-server-desktop, ale jakožto neLINUXák tápu v tom, vytvořil jsem si soubor /etc/systemd/system/run_octane_daemon.services , ale po startu zdá se se skript stejně nespustí
« Poslední změna: 16 Červen 2020, 13:44:27 od panRajce »

macu

  • Závislák
  • ****
  • Příspěvků: 1186
    • Zobrazit profil
Re:20.04 - skript po startu až po přihlášení do sítě
« Odpověď #1 kdy: 16 Červen 2020, 14:21:17 »
a co dát do toho skriptu na začátek

Kód: [Vybrat]
sleep 10
kde 10 značí 10 sekund, o které má být "zpoždění" dalších příkazů vykonáno...Samozřejmě počet sekund si musíš stanovit sám, to za tebe nikdo neudělá, záleží, jak dlouho ti vše startuje..ale to se dá vysledovat
PC: Intel i5-6600K, 16 GB DDR4 RAM, Intel 530HD, ASUS Z170 Pro Gaming, , 2TB Toshiba HDD Sata III DT01ACA200, Ubuntu 20.04 64bit, Gnome Shell 3.36
Ntb: Toshiba L850-U12 - Intel i3 , 8 GB DDR3 RAM, Ubuntu 20.04 64bit, Gnome Shell 3.36

panRajce

  • Člen
  • **
  • Příspěvků: 107
    • Zobrazit profil
Re:20.04 - skript po startu až po přihlášení do sítě
« Odpověď #2 kdy: 16 Červen 2020, 15:24:27 »
To mám .... bohužel, nevím proč, ale přijde mi, že když dám čekací dobu, tak to čeká CELÉ .... zkoušel jsem i 30s a skript čekal, potom došlo ke spuštění daemona .... a teprve pak k připojení sítě. Takže výsledek stejný, jenom o 30s delší doba naběhnutí do funkčního stavu připravenosti  :-\

West

  • Člen
  • **
  • Příspěvků: 239
    • Zobrazit profil
Re:20.04 - skript po startu až po přihlášení do sítě
« Odpověď #3 kdy: 16 Červen 2020, 16:23:37 »
Leppšie popíš čo sa vlastne tým skriptom snažíš urobiť, alebo obísť.
=> Ale jeho spuštěním dochází k ověření síťové licence...
To "Ale" na začiatku sa má chápať akože sa snažíš obísť overenie licencie?
Ak nechceš zverejniť ten skript aby sa mohol na to niekto pozrieť, tak si doňho dopíš logovacie riadky a z logu potom lahšie zistíš kde to viazne.

panRajce

  • Člen
  • **
  • Příspěvků: 107
    • Zobrazit profil
Re:20.04 - skript po startu až po přihlášení do sítě
« Odpověď #4 kdy: 16 Červen 2020, 21:31:04 »
Není to nic tajného
na začátku při startu spouštím script run_octane_daemon.sh
Kód: [Vybrat]
#/bin/sh
sleep 10
"/home/uzivatel/Install/Octane/OctaneRender_4_04_linux/octane_slave_daemon" --port 48000 --slave "/home/uzivatel/Install/Octane/OctaneRender_4_04_linux/octane_slave" --alias "Ubuntu" --out-of-core "2g"

který jak vidět spouští s určitými parametry program octane_slave_daemon

Při jeho spuštění dochází po internetu k ověření zakoupené licence .... nesnažím se to nijak obejít ... ale když mě v Ubuntu 20.04 naběhne síťové připojení později jak ten skript, tak octane_slave_daemon nemá spojení se servrem a zůstane viset na "přihlášení uživatele", tím pádem daemon neběží a ostatní počítače v síti nemohou využívat Ubuntu PC pro síťový výpočet CUDA.
Jelikož Ubuntu PC je výpočetní stanice ve vedlejší místnosti (nazvěme to servrovnou), chci aby běžela plně automaticky a né aby se muselo při jejím zapnutí (WakeOnLAN) běhat zadávat přihlašovací údaje.

Do nedávna (cca 2týdny) ke zpoždění připojení k síti nedocházelo a tak síť byla dostupná dříve než se spouštěl skript. Jenže poslední dobou je tam z mě neznámého důvodu nějaká prodleva.

Dokonce jsem již deaktivoval mount síťového disku přes fstab (což jsem mimo jiné řešil v jiném vlákně) a mountnu si ho v případě potřeby ručně. BTW ... tam https://forum.ubuntu.cz/index.php/topic,84564.msg571578.html#msg571578 jsem řešil, že mě fstab nemoutne složku automaticky, ale posléze na ruční poky
Kód: [Vybrat]
sudo mount -a k připojení došlo. Což mne přivádí na myšlenku, že pokud se pokusí o mount dříve než je dostupná síť, pak evidentně také není schopen připojení.

juwa2

  • Závislák
  • ****
  • Příspěvků: 3717
    • Zobrazit profil
Re:20.04 - skript po startu až po přihlášení do sítě
« Odpověď #5 kdy: 16 Červen 2020, 21:58:13 »
Ten sleep  přece musí fungovat - ledaže by ten daemon už běžel (byl spuštěn něčím jiným). Prověř to..
Nebo zkus ten skript spouštět jiným skriptem kde to zpoždění nastavíš
Kód: [Vybrat]
#!/bin/bash
sleep 20
/cesta/k/run_octane_daemon.sh

Jo, a v tom tvém skriptu ti chybí za křížkem vykřičník.....

West

  • Člen
  • **
  • Příspěvků: 239
    • Zobrazit profil
Re:20.04 - skript po startu až po přihlášení do sítě
« Odpověď #6 kdy: 16 Červen 2020, 22:24:50 »
Je možné, že skript sa ti spustí ok, ale problém je v tom daemone. Zrejme ten daemon je potrebné upraviť. Riešil som niečo podobného. Mám k tomu napísaný skript, ktorý pozdrží vykonanie príkazu na dobu kedy nabehnú sieťové služby. Neviem či by ti pomohlo keď ti to nevyriešil sleep, pretože to mám robené práve cez sleep s periodickým testom nábehu siete.
Môžem ho sem postnúť ak by si to chcel odskúšať.

West

  • Člen
  • **
  • Příspěvků: 239
    • Zobrazit profil
Re:20.04 - skript po startu až po přihlášení do sítě
« Odpověď #7 kdy: 16 Červen 2020, 22:42:05 »
Neviem či si to pamätám dobre, alebo či sa niečo nezmenilo, ale spomínam si, že som niekedy v minulosti skúmal ako funguje sleep a došiel som k záveru, že nebeží v multitaskingu, prípadne ak áno, tak v nejakom kooperačnom, tak ako to bolo na Win95.
Dá sa to vyriešiť takto: (príklad)
{ sleep 10; systemctl restart avahi-daemon.service; } &

Za 10 sekúnd to reštartuje Avahi daemon, pričom všetko, čo je za týmto príkazom sa vykonáva ďalej.

panRajce

  • Člen
  • **
  • Příspěvků: 107
    • Zobrazit profil
Re:20.04 - skript po startu až po přihlášení do sítě
« Odpověď #8 kdy: 17 Červen 2020, 08:52:02 »
Jo, a v tom tvém skriptu ti chybí za křížkem vykřičník.....

No popravdě, jako naprostý linux-lama a skript-beginer ... jsem to od někud kopíroval, tak jim tam asi taky ten vykřičník chybí ... ale zkusím to upravit podle tebe
BTW ... prošel jsem si skripty mnou utvořené (kopírované) a vykřičník mě chybí skoro ve všech  :o

Dá sa to vyriešiť takto: (príklad)
{ sleep 10; systemctl restart avahi-daemon.service; } &
Za 10 sekúnd to reštartuje Avahi daemon, pričom všetko, čo je za týmto príkazom sa vykonáva ďalej.

OK, také zkusím, rozhodně nějaké ověření při sleep, jestli už je připojená síť, mě zní velmi logicky.

PS: nevím jak moc to ovlivní, ale zapomněl jsem uvést, že tento jev se vyskytuje především při úplném vypnutí PC, a to především, když mám přes Crontab v určitou dobu spuštěný skript na sledování GPU.Utilization (resp. zatížená GPU procesorů) a pokud je po určitou dobu nízké, tak se PC vypne přes sudo poweroff. Když PC "jen" restartuji, tak tento problém nenastává.

EDIT: tak avahi-daemon.service vyžaduje heslo ... takže to bych byl skoro tam kde jsem byl  :-\
« Poslední změna: 17 Červen 2020, 09:22:08 od panRajce »

juwa2

  • Závislák
  • ****
  • Příspěvků: 3717
    • Zobrazit profil
Re:20.04 - skript po startu až po přihlášení do sítě
« Odpověď #9 kdy: 17 Červen 2020, 09:38:05 »
Přidej ho do výjimek v sudoers.

West

  • Člen
  • **
  • Příspěvků: 239
    • Zobrazit profil
Re:20.04 - skript po startu až po přihlášení do sítě
« Odpověď #10 kdy: 17 Červen 2020, 12:33:18 »
Vykonanie akcie po nábehu siete riešim takto...
Toto sú funkcie, ktoré mám v knižnici funkcií a volám ich zo skriptov zhruba takto:

1. najprv nadefinujeme IP adresu servera aby sme mohli zisťovať funkčnosť siete
HOST="192.168.1.1"

2. a zavoláme funkciu pre zistenie či je server pripravený a teda či beží sieť
if [ `is_server_online $HOST` ]; then
   # tu starujeme skript, ktorym potrebujeme nieco vykonat
   start_my_action
else
   echo "server, alebo siet nieje pripravena"
fi

Kód: [Vybrat]
function ping_probe() {
    # Test for ping active on server
    # Status:
    #   server is online = 0
    #   timeout or error = 1
    local server=$1
    local Status=1

    if [ "$server" != "" ]; then
        Status=0
        ping $server -q -c 1 -W 1 1>/dev/null 2>/dev/null || Status=1
    fi

    echo $Status
}

function is_network_online() {
    # Wait if is network online and exit with status
    # Status:
    #   Successful        = 0
    #   timeout or error  = 1

    local HOST=$1
    local COUNTER=0
    local MAX_VAL_TIMEOUT=120
    local IS_ONLINE=0

    if [ "$HOST" = "" ]; then
        return 1
    fi

    IS_ONLINE=`ping_probe $HOST`
    if [ "$IS_ONLINE" != "0" ]; then

        while [ "$IS_ONLINE" = "1" ] && [ "$COUNTER" -le $MAX_VAL_TIMEOUT ]
         do
             IS_ONLINE=`ping_probe $HOST`
             let COUNTER++;
         done
        if [ "$COUNTER" = "0" ] || [ "$IS_ONLINE" = "0" ]; then
            # Network is ready
            return 0
        else
            # Timeout - network is not ready
            return 1
        fi
    else
        return 0
    fi
}

jmp

  • Závislák
  • ****
  • Příspěvků: 2612
    • Zobrazit profil
Re:20.04 - skript po startu až po přihlášení do sítě
« Odpověď #11 kdy: 17 Červen 2020, 12:48:50 »
asi to budete mít o dost jednodušší pokud místo pingu ve skriptu použijete fping

panRajce

  • Člen
  • **
  • Příspěvků: 107
    • Zobrazit profil
Re:20.04 - skript po startu až po přihlášení do sítě
« Odpověď #12 kdy: 17 Červen 2020, 13:42:51 »
Vykonanie akcie po nábehu siete riešim takto...
WOW  8)
Jdu zkusit implementovat

asi to budete mít o dost jednodušší pokud místo pingu ve skriptu použijete fping

ale až po doinstalování sudo apt install fping  8) a hádám i náležité úpravě skriptu

panRajce

  • Člen
  • **
  • Příspěvků: 107
    • Zobrazit profil
Re:20.04 - skript po startu až po přihlášení do sítě
« Odpověď #13 kdy: 17 Červen 2020, 16:11:05 »
 @WEST
tak jsme se tedy inspiroval a ..... našel jsem trochu jiné řešení pod https://unix.stackexchange.com/questions/184266/bash-ping-script-file-for-checking-host-availability

a tady je výsledek, který zdá se bude doufám funkční ....

Kód: [Vybrat]
#!/bin/sh
while true;
do
  ping -q -c1 8.8.8.8
  if [ $? -eq 0 ]
  then
    /home/vizualizace/Install/Octane/OctaneRender_4_04_linux/octane_slave_daemon --port 48000 --slave /home/vizualizace/Install/Octane/OctaneRender_4_04_linux/octane_slave --alias "Ubuntu 20.04" --out-of-core "8g"
    exit 0
  fi
done

IP 8.8.8.8 jsme nakonec volil úmyslně, než IP routeru, tak google.com .... aby bylo jisté, že lze pinknout i ven a nejen uvnitř sítě .. což je pro výše zmíněné ověření licence důležité.

PS: při ostrém startu je i vidět, že skript je spuštěn již nějakou chvíli a teprve pak dojde k připojení do sítě

DĚKUJI ZA ŘEŠENÍ
« Poslední změna: 17 Červen 2020, 16:13:34 od panRajce »

West

  • Člen
  • **
  • Příspěvků: 239
    • Zobrazit profil
Re:20.04 - skript po startu až po přihlášení do sítě
« Odpověď #14 kdy: 17 Červen 2020, 21:06:32 »
Nemáš zač. Pre istotu si ten skript otestuj zadaním neexistujúcej adresy.
Zdá sa mi, že tá slučka do/while je typu "opakuj donekonečna a zamrzni" ak server nikdy neodpovie.

panRajce

  • Člen
  • **
  • Příspěvků: 107
    • Zobrazit profil
Re:20.04 - skript po startu až po přihlášení do sítě
« Odpověď #15 kdy: 17 Červen 2020, 21:39:58 »
zkusil jsem to jinak, odpojil jsem síťové připojení a pak připojil
jen ještě přijít na to,jak zařídit aby tam nebylo 250 řádku "server nepřipojen"

West

  • Člen
  • **
  • Příspěvků: 239
    • Zobrazit profil
Re:20.04 - skript po startu až po přihlášení do sítě
« Odpověď #16 kdy: 17 Červen 2020, 21:54:53 »
To je práve to, čo mám v tej funkcii vyriešné. Nútené ukončenie po 120 sekundách ak server neodpovedá.

juwa2

  • Závislák
  • ****
  • Příspěvků: 3717
    • Zobrazit profil
Re:20.04 - skript po startu až po přihlášení do sítě
« Odpověď #17 kdy: 17 Červen 2020, 22:32:39 »
zkusil jsem to jinak, odpojil jsem síťové připojení a pak připojil
jen ještě přijít na to,jak zařídit aby tam nebylo 250 řádku "server nepřipojen"

A co takhle klasicky:
Kód: [Vybrat]
if .......; then
.........
else
notify-send "nepřipojeno"
fi

???

panRajce

  • Člen
  • **
  • Příspěvků: 107
    • Zobrazit profil
Re:20.04 - skript po startu až po přihlášení do sítě
« Odpověď #18 kdy: 18 Červen 2020, 08:26:26 »
@juwa2
nj, ale if-fi se provede jen jednou, pokud tam nepřidáš něco na smyčku. Na stránce ze které jsem čerpal kód tam také něco mají na principu if-fi a return (smyčka), ale mě to nefachčilo. Resp. smyčka běžela dál, i když byla splněna podmínka ping, a nebo naopak, v trochou jiné verzi, kód proběhl, skončil, ale ani se nespustil daemon. Tak jsem to opustil a zkusil jsem ten while-done. Ten fungoval a tak jsem to zatím víc neřešil.

Zkusil jsme k ping dát parametr -q , což by měl být nějaký tichý režim,bez výpisu. Ale stejně,pokud je odpojená síť, to v terminálu hlásí "Server nepřipojen" ....nebo tak něco ;) nejsem teď u inkriminované stanice.

panRajce

  • Člen
  • **
  • Příspěvků: 107
    • Zobrazit profil
Re:20.04 - skript po startu až po přihlášení do sítě
« Odpověď #19 kdy: 18 Červen 2020, 10:05:45 »
To je práve to, čo mám v tej funkcii vyriešné. Nútené ukončenie po 120 sekundách ak server neodpovedá.

No zkusil jsem tu funkci implementovat, ale asi blbě, protože mě skript prolítl jak vítr ve strništi a ani nespustil daemona.
Ale hádám, že je to špatným pochopením a implementací funkcionalit.
každopádně se k němu určitě ještě do budoucna vrátím a separuji si jej pro jinou funkci, kterou používám v poněkud jiném tvaru, ale hodila by se mi právě tvá závislost na časovém omezení.

West

  • Člen
  • **
  • Příspěvků: 239
    • Zobrazit profil
Re:20.04 - skript po startu až po přihlášení do sítě
« Odpověď #20 kdy: 18 Červen 2020, 10:13:38 »
Vyskúšaj ten ping spraviť tak, ako to mám v tej funkcii. Inak tie funkcie si môžeš priamo okopírovať do svojho skriptu. Dávajú sa na začiatok skriptu. Volanie funkcie musí nasledovať neskôr.

West

  • Člen
  • **
  • Příspěvků: 239
    • Zobrazit profil
Re:20.04 - skript po startu až po přihlášení do sítě
« Odpověď #21 kdy: 18 Červen 2020, 10:43:42 »
Jo sorry, volanie tej funkcie má vyzerať takto:

HOST="192.168.1.1"

is_network_online $HOST
if [ $? = 0 ]; then
  echo "Start my action"
  start_my_action
else
  echo "Error: network is offline"
fi