Test skriptu vnstat-zenity.

Sekcia: Programovanie 07.09.2016 | 14:40
Avatar qw11 ubuntu mate 22.04 HP 17-ca1006nc  Používateľ

Zdravim. Nedavno tu bol clanok o rozsirovani funkcii nautila kde bol spomenuty program zenity. Trochu som sa s tymto hral a spravil som si skript ktori vypisuje informacie z vnstat(statistika prenosu sietovych dat) pomocou zenity. U mna ten skript ide len som chcel poprosit ci by sa naslo par ludi na jeho vyskusanie aby som vedel ci ide aj na inych konfiguraciach systemu. Prednostne je pre ubuntu kde treba doinstalovat len vnstat a ostatne komponenty by tam mali byt. Kedze skript sem nejde vlozit pre jeho dlzku tak je pridany ako subor.

    • RE: Test skriptu vnstat-zenity. 07.09.2016 | 15:11
      Avatar Andrej Lacho Debian, CentOS ...  Administrátor

      Pastebin ;)

      • RE: Test skriptu vnstat-zenity. 07.09.2016 | 15:42
        Avatar qw11 ubuntu mate 22.04 HP 17-ca1006nc  Používateľ

        Hmm, mas to tam Odkaz - pastebin To som este nepouzil. :D

        P.s Tu sa neda editovat aj ked som prihlaseny? Nikde to nevidim.

        • RE: Test skriptu vnstat-zenity. 07.09.2016 | 16:12
          Avatar vxmery Mint 21.3 Cinnamon  Používateľ

          Veru nedá ;)

    • RE: Test skriptu vnstat-zenity. 07.09.2016 | 19:25
      Avatar WlaSaTy   Návštevník

      A čo by ten skript ako mal robiť ak sa smiem spýtať?

      • RE: Test skriptu vnstat-zenity. 07.09.2016 | 19:42
        Avatar qw11 ubuntu mate 22.04 HP 17-ca1006nc  Používateľ

        Zdetekuje sietove karty, doplni ich do nastavenia vnstat, da vybrat aku statistiku chces zobrazit a vypise to pomocou zenity v okne. Mal som ten skript aj s vypisom do terminalu ale tam som musel vyberat cez klavesnicu a toto je klikacie.

        • RE: Test skriptu vnstat-zenity. 07.09.2016 | 19:53
          Avatar WlaSaTy   Návštevník

          Tie karty síce vylistuje, ale nechá k nim rýchlosť v okrúhlych zátvorkách. Máš prvú chybu v sed-e. Čo to robilo tebe ak sa smiem opýtať?

          • RE: Test skriptu vnstat-zenity. 07.09.2016 | 20:00
            Avatar qw11 ubuntu mate 22.04 HP 17-ca1006nc  Používateľ

            Toto mi da vnstat --iflist

            Available interfaces: wlp3s0 lo enp2s0f1 (10 Mbit)

            a toto sed vnstat --iflist | sed 's/.*: \(.*\) (.*/\1/'

            wlp3s0 lo enp2s0f1

            • RE: Test skriptu vnstat-zenity. 07.09.2016 | 20:07
              Avatar qw11 ubuntu mate 22.04 HP 17-ca1006nc  Používateľ

              Takto to vyzera u mna vnstat-zenity ako vidis u mna to rozpoznalo karty spravne

          • RE: Test skriptu vnstat-zenity. 07.09.2016 | 20:11
            Avatar qw11 ubuntu mate 22.04 HP 17-ca1006nc  Používateľ

            Mozem vidiet co dava tebe

            vnstat --iflist 

            • RE: Test skriptu vnstat-zenity. 07.09.2016 | 20:37
              Avatar WlaSaTy   Návštevník
              $ vnstat --iflist
              Available interfaces: vnet0 (10 Mbit) enp7s0 (10 Mbit) lo virbr0 wlp13s0 virbr0-nic vnet1 (10 Mbit) 
              

              Prvý problém máš v sed-e, nevyhodí text v zátvorkách.

              • RE: Test skriptu vnstat-zenity. 07.09.2016 | 20:40
                Avatar qw11 ubuntu mate 22.04 HP 17-ca1006nc  Používateľ

                Ak mas cas mozes vyskusat zmenit riadok 34 z

                karta_zoznam=$(vnstat --iflist | sed 's/.*: \(.*\) (.*/\1/')
                na

                karta_zoznam=$(vnstat --iflist | sed 's/.*: \(.*\) (.*/\1/' | sed 's/ (.*)//g')

                Vdaka.

                • RE: Test skriptu vnstat-zenity. 07.09.2016 | 20:43
                  Avatar qw11 ubuntu mate 22.04 HP 17-ca1006nc  Používateľ

                  Aj tam bude problem ak na konci riadku nebude rychlost, cize skor

                  karta_zoznam=$(vnstat --iflist | sed 's/.*: \(.*\)/\1/' | sed 's/ (.*)//g')

                  • RE: Test skriptu vnstat-zenity. 07.09.2016 | 23:21
                    Avatar samalama   Návštevník
                    vnstat --iflist | sed -e 's/^Available interfaces: //' -e 's/([^)]*)//g'

                    viacnasobne medzery v zozname nevadia. ale keby predsa, tak este

                    -e 's/[[:space:]]\+/ /g'
                • RE: Test skriptu vnstat-zenity. 07.09.2016 | 21:17
                  Avatar WlaSaTy   Návštevník

                  Áno, to vyzerá lepšie. Ale nie je(dummy0 môžeš odignorovať, to ma len zaujímalo či si do pol hodiny všimne vnstat nové rozhranie):

                  $ vnstat --iflist | sed 's/.*: \(.*\) (.*/\1/' | sed 's/ (.*)//g'
                  vnet0 lo dummy0 virbr0 wlp13s0 virbr0-nic vnet1
                  
                  pričom by to malo logicky ukázať toto:

                  vnet0 enp7s0 lo dummy0 virbr0 wlp13s0 virbr0-nic vnet1 
                  

                  Najzvláštnejšie na tom je to, že to skúšam na Ubuntu 16.04, teda na OS ktorý máš v profile a dostávam rozdielne výsledky.

                  Ďalej nerozumiem prečo sa tam volá 2x za sebou sed, keď sa to dá v jednom sede. Ďalšia chyba je ohľadne testu či zoznam kariet nie je prázdny. Test "$var" == "" zlyhá. Namiesto toho sa používa -z.

                  Potom tam máš blok kódu ktorý som kompletne nepochopil. Prelievaš zoznam sieťových zariadení podľa toho či majú vytvorenú databázu pre vnstat. Tu vidím prvý problém s tým že takto asi vyradíš čerstvo vytvorené sieťové rozhranie. To nie je rozumné ak to robíš pre ĺudí s mobilným internetom čo si potrebujú skontrolovať koľko preniesli cez dodatočne zasunutý USB modem.

                  Ďalší problém je ten, že podávaš zoznam sieťových rozhraní aj s plusmi programu vnstat ktorý za parametrom -i očakáva len jedno rozhranie.

                  • RE: Test skriptu vnstat-zenity. 07.09.2016 | 21:31
                    Avatar qw11 ubuntu mate 22.04 HP 17-ca1006nc  Používateľ

                    2x sed je pre mna citatelnejsie ale samozrejme da sa to napisat lepsie. Toto nieje program ktori bezi neustale tak som neriesil spotrebu prostriedkov.

                    Test "$var" == "" zlyhá pozriem .

                    Test s vytvorenou databazou som pridal po tom co my system po spusteni virtualboxu vytvoril nove rozhranie a vnstat spadol s chybou ze chcem od neho vypis z rozhrania ktore nema databazu. Cize kym vnstat nevytvori databazu tak sa rozhranie ignoruje. Vnstat ma nastaveny urcity cas kym zaregistruje nove rozhranie, inak by bolo treba tuto databazu vytvarat pri spusteni skriptu co nechcem od tohto skriptu aby zasahoval do systemu. Iba cita.

                    Co sa tyka plusiek je to z man vnstat parameter -i vyber viacerych rozhrani. Syntax interface1+interface2+...

                    • RE: Test skriptu vnstat-zenity. 07.09.2016 | 21:37
                      Avatar qw11 ubuntu mate 22.04 HP 17-ca1006nc  Používateľ

                      Este doplnim ze pre ludi s docasnym modemom toto nieje vhodne. To by som musel este vytvorit cast kde by si clovek mohol vybrat z ktoreho zariadenia/databazy sa maju zobrazit vysledky. To by bolo dalsie okno a nechcem z toho spravit uklikavacku cez mnozstvo okien. Toto je prednastavene pre zobrazovanie informacii zo vsetkych sietovych rozhrani. Je to skor pre ntb s pripojenim niekedy cez LAN niekedy cez wifi.

                    • RE: Test skriptu vnstat-zenity. 07.09.2016 | 21:40
                      Avatar WlaSaTy   Návštevník

                      Čo sa týka vnstat -i, mne man tvrdil že to očakáva len jedno rozhranie. Ak ich aj napriek tomu očakáva viac, tak by to vysvetľovalo prečo mi to useklo názov jedného z aktívnych rozhraní a padlo to. Videl si koľko ich mám, a používam ich, na desktope.

                      • RE: Test skriptu vnstat-zenity. 07.09.2016 | 21:48
                        Avatar qw11 ubuntu mate 22.04 HP 17-ca1006nc  Používateľ

                        Hmm, nedari sa mi nic najst o obmedzeni mnozstva rozhrani vo vnstat. Nemohol to useknut niektori iny prikaz?

                        • RE: Test skriptu vnstat-zenity. 07.09.2016 | 22:00
                          Avatar WlaSaTy   Návštevník

                          Mohol. To je tvoj kód, spúšťaný na distribúcii ktorú máš v profile. Ty si ten kód písal z pamäti a chcel po niekom inom nech ti ho otestuje? To nie je moc dobré.

                          • RE: Test skriptu vnstat-zenity. 07.09.2016 | 22:03
                            Avatar qw11 ubuntu mate 22.04 HP 17-ca1006nc  Používateľ

                            Jj, prave pre toto co sa stalo u teba som to chcel otestovat. :D Ale az s tolkymi rozhraniami som nepocital :D To je dobry extrem(aspon pre mna) Idem googlit zatial vdaka.

                            • RE: Test skriptu vnstat-zenity. 07.09.2016 | 22:13
                              Avatar WlaSaTy   Návštevník

                              Pretože, znova opakujem: skúšal som to u seba na rovnakom distre ako máš ty a napríklad sed mi handloval ten boobie výraz inak ako tebe. A skôr sa divím že to tebe prechrústal lebo to malo robiť niečo iné.

                  • RE: Test skriptu vnstat-zenity. 07.09.2016 | 23:02
                    Avatar samalama   Návštevník

                    - dummy0 môžeš odignorovať - a co interface, ktory "bezi" len na L2 vrstve?

                    - problem s rozdielnym vysledkoch je v tom, ako sed pracuje. sed (ako aj ine text spracujuce procesory) je nenazrany - ak sa mu definuje nejaky wildcard, tak zoberie najvaciu mnozinu, ktora mu vyhovuje. preto vysledok

                    $ echo "vnet0 (10 Mbit) enp7s0 (10 Mbit) lo virbr0 wlp13s0 virbr0-nic vnet1" | sed 's/ (.*)//g'

                    bude
                    vnet0 (10 Mbit) enp7s0 (10 Mbit) lo virbr0 wlp13s0 virbr0-nic vnet1

                    - Test "$var" == "" zlyhá - nezlyha, ale musi sa spravne pouzit (ano v tomto skripte zlyha)

                    - Tu vidím prvý problém s tým že takto asi vyradíš čerstvo vytvorené sieťové rozhranie. - ja vidim problem v tom, ze asi nemas logicke myslenie - tazko zobrazis data pre sietove rozhranie, ktore esta nema vytvorenu databazu. ze?

                    - Ďalší problém je ten, že podávaš zoznam sieťových rozhraní aj s plusmi programu vnstat ktorý za parametrom -i očakáva len jedno rozhranie. - tu pouzijem tvoj sposob vyjadrovania - zrus si tie cudzie repozitare a nainstaluj si original vnstat balik, ktory argument v takom tvare podporuje (ze nemas taky repozitar? ale urcite ho mas, 100%)

                    • RE: Test skriptu vnstat-zenity. 08.09.2016 | 07:44
                      Avatar WlaSaTy   Návštevník

                      Znova sa mýliš.

                      Test "$var" == "" zlyhá. Buď sa použije old school "x$var" == "x" alebo new -z $var. Každé má svoje pre a proti.

                      Ak čerstvo vytvorené sieťové rozhranie nemá ešte vytvorenú databázu a spadá do podmienok, tak preň zobrazím nulové hodnoty. Problém je v tom, že sa aspoň mne tie nové rozhrania nepridávajú automaticky, teda tak ako by mali. A tento klikací nástroj tým pádom stráca na význame.

                      Program vnstat za parametrom i berie len 31 znakov na rozhrania, a tam sa tých sieťoviek veľa nezmestí. Ak by ten program očakával sieťové rozhrania, tak nemá tak stupídny limit na dĺžku.

                      • RE: Test skriptu vnstat-zenity. 08.09.2016 | 09:31
                        Avatar samalama   Návštevník
                        $ echo $string
                        
                        $ if [[ "$string" == "" ]]; then echo nic; fi
                        nic
                        $ string=text
                        $ if [[ "$string" == "" ]]; then echo nic; fi



                        z -i parametra sa kopiruje 32 znakov...

                        • RE: Test skriptu vnstat-zenity. 08.09.2016 | 09:55
                          Avatar WlaSaTy   Návštevník

                          Ako obvykle. Nie vždy je vhodné riešenie spoliehať sa pri shell skriptoch na doplnky v bash-i, inak by si mal aj tu rozšírené otázky typu "nefunguje mi vo wrt alebo na servri z doby bronzovej skript čo mi funguje na desktope". Preto som vravel že použitie závisí od ... A berie to do úvahy len 31 znakov, zabudol si pri rátaní cez echo a wc že ti to dáva aj \n.

                          • RE: Test skriptu vnstat-zenity. 08.09.2016 | 11:12
                            Avatar samalama   Návštevník

                            ... ale on pouzil bash

                            cez echo a wc - zase varis z vody? strapnujes sa (uz dlhodobo)...

                            strncpy(interface, argv[currentarg+1], 32);
                            • RE: Test skriptu vnstat-zenity. 08.09.2016 | 12:55
                              Avatar WlaSaTy   Návštevník

                              Návyky je pre teba neznámy pojem.

                              A strápňovanie? V tom si expert ty 32 znak:

                              $ vnstat -w -i 1234567890123456789012345678901234567890
                              Error: Unable to read database "/var/lib/vnstat/1234567890123456789012345678901": No such file or directory
                              

                              • RE: Test skriptu vnstat-zenity. 08.09.2016 | 14:46
                                Avatar samalama   Návštevník

                                si odporny slizky had, ktory stale meni, prekruca a vymysla si argumenty vzdy, ked sa mu to hodi, takze ako som uz skor avizoval, nemienim na teba dalej reagovat...

                                • RE: Test skriptu vnstat-zenity. 08.09.2016 | 18:46
                                  Avatar WlaSaTy   Návštevník

                                  A to všetko len preto, že ťa nepodporujem v tvojich nepravdách.

                                  Keď ti raz mamina povedala že máš vyniesť smeti, tak ich vynes. Aby to nesmrdelo. A neprotestuj na internete tým, že sa budeš na niekoho nevhodne obracať.

                                  • RE: Test skriptu vnstat-zenity. 08.09.2016 | 19:09
                                    Avatar qw11 ubuntu mate 22.04 HP 17-ca1006nc  Používateľ

                                    Teda, taka blbost, jeden skript a vy sa pomali idete pobit. :D

                                    Klud. Nadych, vydych. :D

                                    • RE: Test skriptu vnstat-zenity. 08.09.2016 | 19:29
                                      Avatar WlaSaTy   Návštevník

                                      Ja sa nemám prečo chovať slušne k človeku čo sa sám nevie chovať slušne k iným. Inými slovami: aký požičaj, taký vráť. Ak mu to vadí, tak je to len jeho problém.

                                      Ale naspäť k skriptu. Jeho návrh nie je moc rozumný. Čo keby si mal prvú otázku, vyber si z sieťových rozhraní: všetky, hento, tamto, onamto (s predvoleným všetky)? A druhú otázku štatistika pre vybrané rozhranie denná, týždenná, mesačná alebo testovacie info?

                                      Zoznam rozhraní ktoré majú skolektované prietoky cez vnstat získaš ľahko, majú vo výpise vnstat bez parametrov na konci riadku dvojbodku o ktorú to ešte môžeš očistiť. vnstat|grep :\$|tr -d ' :'

                                      • RE: Test skriptu vnstat-zenity. 08.09.2016 | 19:46
                                        Avatar qw11 ubuntu mate 22.04 HP 17-ca1006nc  Používateľ

                                        Pozriem.

                                        • RE: Test skriptu vnstat-zenity. 08.09.2016 | 21:38
                                          Avatar qw11 ubuntu mate 22.04 HP 17-ca1006nc  Používateľ

                                          Nuz neviem ta cast s ponukou kariet... pastebin

                                          • RE: Test skriptu vnstat-zenity. 09.09.2016 | 10:13
                                            Avatar WlaSaTy   Návštevník

                                            Skús sa zamyslieť nad tým, v akom formáte ti dáva výstup ten výber kariet. Je to oddelené plusom alebo rúrou?

                                            A silno odporúčam aby si to spúšťal z terminálu ako debug aby si videl čo to robí, čo to predá ďalej a tak.

                                            • RE: Test skriptu vnstat-zenity. 09.09.2016 | 10:36
                                              Avatar qw11 ubuntu mate 22.04 HP 17-ca1006nc  Používateľ

                                              Samozrejme cez terminal som to skusal. Dam si cez echo vypisat premennu. Okno vyberu mi posle v premennej

                                              "wlp3s0"+"enp2s0f1"
                                              To plus som si nastavil v okne zenity parametrom --separator="+". Uz len odstranim uvodzovky a pouzivam to ako parameter za vnstat -i . U mna to ide, u teba to robi problem?

                                              • RE: Test skriptu vnstat-zenity. 09.09.2016 | 11:40
                                                Avatar WlaSaTy   Návštevník

                                                Jaj, ne. Ja som ten oddelovač zabudol zadať. Inak, ten koniec by bol prehladnejší keby si použil case, v ktorom si naplníš "zobrazovaný text". Statement case je totižto výber, a občas je ho vhodnejšie použiť ako if, elif a podobné kľúčové slová známe z rôznych jazykov.

                                                case ${vyber} in 
                                                  "Denný")     vnstat -d -i "$zoznam_aktivnych_kariet" | zenity --text-info --height=500 --width=700 --font='DejaVu Sans Mono';;
                                                  "Týždenný")  vnstat -w -i "$zoznam_aktivnych_kariet" | zenity --text-info --height=500 --width=700 --font='DejaVu Sans Mono';;
                                                  "Mesačný")   vnstat -m -i "$zoznam_aktivnych_kariet" | zenity --text-info --height=500 --width=700 --font='DejaVu Sans Mono';;
                                                  "Koniec")    exit;;  #IMO zbytočné.
                                                  "*")         zenity --info --text="$text_informacie";;
                                                esac
                                                

                                                Case môže mať pochopiteľne viac riadkov kódu na jednu podmienku, oddelujú sa cez (nájdeš v dokumentácii).

                                                PS: Moc som to netestoval, nemám prečo. Nie všetky potrebné rozhrania sa mi zobrazujú cez vnstat, a to aj napriek tomu že sa používajú. A navyše nemám rád klikacie aplikácie keďže majú ťažkopádnejšie ovládanie ako cez command line. Ale, takéto niečo by mohlo mať okruh nenulový užívateľov, ak to zdetekuje rozhranie pre mobilný internet. Resetnúť štatistiky po dobití alebo na začiatku obdobia, zobraziť koľko bolo približne minuté, a možno vyvolať alarm pri hodinkách. I keď také niečo už asi existuje.

                                                • RE: Test skriptu vnstat-zenity. 09.09.2016 | 11:59
                                                  Avatar qw11 ubuntu mate 22.04 HP 17-ca1006nc  Používateľ

                                                  To case pozriem. Ten koniec v ponuke je este z doby ked som sa snazil vytvorit programovu slucku. Toto bol jediny sposob ako tu slucku ukoncit, pretoze som zistil ze zenity posiela rovnaky vystupny kod 0 pri staceni OK, zrusit a aj pri kliknuti na krizik. Preto som to potom nechal v tomto rezime zaciatok-koniec.

                                          • RE: Test skriptu vnstat-zenity. 09.09.2016 | 14:35
                                            Avatar samalama   Návštevník

                                            mas to nejake rozbite...

                                            # vnstat | grep :\$ | tr : + | tr -d ' \n'
                                            # vnstat
                                            Database updated: Fri Sep  9 14:03:42 2016
                                            
                                               eth0 since 09/09/16
                                            
                                                      rx:  1.49 GiB      tx:  54.33 MiB      total:  1.54 GiB
                                            
                                               monthly
                                                                 rx      |     tx      |    total    |   avg. rate
                                                 ------------------------+-------------+-------------+---------------
                                                   Sep '16      1.49 GiB |   54.33 MiB |    1.54 GiB |   17.45 kbit/s
                                                 ------------------------+-------------+-------------+---------------
                                                 estimated      5.21 GiB |     188 MiB |    5.39 GiB |
                                            
                                               daily
                                                                 rx      |     tx      |    total    |   avg. rate
                                                 ------------------------+-------------+-------------+---------------
                                                     today      1.49 GiB |   54.33 MiB |    1.54 GiB |  255.74 kbit/s
                                                 ------------------------+-------------+-------------+---------------
                                                 estimated      2.54 GiB |      92 MiB |    2.63 GiB |
                                            
                                            • RE: Test skriptu vnstat-zenity. 09.09.2016 | 16:01
                                              Avatar WlaSaTy   Návštevník

                                              Dovolím si ťa zacitovať:

                                              zrus si tie cudzie repozitare a nainstaluj si original vnstat balik
                                              Na Ubuntu, ktorého sa toto týka to zobrazuje podľa očakávaní. A to jak v 12.04, tak aj 16.04. Mimochodom, rád by som pridal aj to o tvojom hadovi dlhom 32 znakov, ale môžeš si ho dať za klobúk ako pierko zo sojky.

    • RE: Test skriptu vnstat-zenity. 07.09.2016 | 21:09
      Avatar samalama   Návštevník

      blbobsti:

      cat /etc/vnstat.conf | grep -i "DatabaseDir"

      if [ "$meno_karty" != "" ]; then
      if [ "`find "$cesta_k_databaze" -name "$meno_karty"`" == ""$cesta_k_databaze""$meno_karty"" ]; then
      meno_karty1="$meno_karty"+"$meno_karty1"
      vnstat --iflist | sed 's/.*: \(.*\)/\1/' | sed 's/ (.*)//g'
      milion znakove riadky
      nefunkcne...
      • RE: Test skriptu vnstat-zenity. 07.09.2016 | 21:14
        Avatar qw11 ubuntu mate 22.04 HP 17-ca1006nc  Používateľ

        To vsetko ti nefungovalo?

        • RE: Test skriptu vnstat-zenity. 07.09.2016 | 23:03
          Avatar samalama   Návštevník

          ano aj nie. skript je samozrejme nefunkny, ale poukazoval som hlavne na nevhodne riesenie/pouzite prikazov...

    • RE: Test skriptu vnstat-zenity. 08.09.2016 | 09:40
      Avatar samalama   Návštevník