Tekniset kysymykset > Tiedonkeruujärjestelmät ja etämonitorointi

Talologger apua tarvitaan

(1/95) > >>

jussip:
Voisiko joku ystävällisesti vääntää rautalangasta miten shell-modulin saa lukemaan seuraavanlaista tietoa?

Mulla on skripti joka parsii sääaseman tiedostosta dataa näin:
Ulkolämpö -21.2, Tuuli 3.7, esim1 102.34, jne 12.3, jne2 75, jne3 1


Kiitos  :)

lorvi:

--- Lainaus käyttäjältä: jussip - 13.10.13 - klo:21:53 ---Voisiko joku ystävällisesti vääntää rautalangasta miten shell-modulin saa lukemaan seuraavanlaista tietoa?

Mulla on skripti joka parsii sääaseman tiedostosta dataa näin:
Ulkolämpö -21.2, Tuuli 3.7, esim1 102.34, jne 12.3, jne2 75, jne3 1


Kiitos  :)

--- Lainaus päättyy ---

minä parsisin ensin näin
Ulkolämpö, -21.2
Tuuli, 3.7
esim1, 102.34
jne, 12.3
jne2, 75
jne3, 1

tai
Ulkolämpö, Tuuli, esim1, jne , jne2, jne3
 -21.2, 3.7, 102.34, 12.3, 75, 1

ehkä tästä olisi helpompi poimia

jussip:
Joo, saa ne parsittua vaikka pelkkinä pilkulla erotettuina numeroina.
Tarvinko jokaista arvoa kohti nuo kolme riviä vai saako samoilla riveillä useamman arvon?
Muuten tuo on selkeä mutta REGEXP-rivi ei... 

# Location of the shell script or executable
SHELL1:LOCATION = /usr/bin/uptime

# Script or executable parameters
SHELL1:PARAMETERS =

# Result value regexp.
SHELL1:REGEXP = ^.*load\saverage:\s*(?P<value>[0-9\.]+)\s*,.*$

olammi:

--- Lainaus käyttäjältä: jussip - 14.10.13 - klo:14:53 ---Joo, saa ne parsittua vaikka pelkkinä pilkulla erotettuina numeroina.
Tarvinko jokaista arvoa kohti nuo kolme riviä vai saako samoilla riveillä useamman arvon?
Muuten tuo on selkeä mutta REGEXP-rivi ei... 

# Location of the shell script or executable
SHELL1:LOCATION = /usr/bin/uptime

# Script or executable parameters
SHELL1:PARAMETERS =

# Result value regexp.
SHELL1:REGEXP = ^.*load\saverage:\s*(?P<value>[0-9\.]+)\s*,.*$

--- Lainaus päättyy ---

Yksi kolmen rivin setti pitäisi riittää. Locationiin skriptisi polku, parametreihin sille mahdollisesti annettavat parametrit. REGEXPillä tunnistetaan skriptin ulosteesta osioita, jotka nimetään regexpissä. Tuossa esimerkissä on nimetty yksi ryhmä nimellä "value". MEASURE-konffissa voi käyttää SHELL1.value tässä tapauksessa.

Esimerkki tuosta sinun skriptin parsimisesta (esimerkissä 2 arvoa, loput samaan tapaan: tuuli ja esim1). En kokeillut tuota, joten virheet mahdollisia. Ääkkösten käyttöä en suosittele tunnisteissa, jos vaan mahdollista poistaa ne tuosta tulosteesta:

--- Koodia: ---SHELL1:REGEXP = ^.*Tuuli\s+(?P<tuuli>[0-9\.\-]+)\s*,.*esim1\s+(?P<esim1>[0-9\.\-]+)\s*.*$

--- Koodi päättyy ---
Tuon löytämien arvojen pitäisi olla MEASURE-riveillä käytettävissä SHELL1.tuuli ja SHELL1.esim1.

jussip:

--- Lainaus käyttäjältä: olammi - 14.10.13 - klo:15:59 ---
--- Lainaus käyttäjältä: jussip - 14.10.13 - klo:14:53 ---

--- Koodia: ---SHELL1:REGEXP = ^.*Tuuli\s+(?P<tuuli>[0-9\.\-]+)\s*,.*esim1\s+(?P<esim1>[0-9\.\-]+)\s*.*$

--- Koodi päättyy ---
Tuon löytämien arvojen pitäisi olla MEASURE-riveillä käytettävissä SHELL1.tuuli ja SHELL1.esim1.

--- Lainaus päättyy ---

Jos poistan tekstit parsitusta tulosteesta, tyyliin: -21.2,3.9,2.7, niin toimiiko tämä

--- Koodia: ---SHELL1:REGEXP = ^.*(?P<tuuli>[0-9\.\-]+)\s*,.*(?P<esim1>[0-9\.\-]+)\s*,.*(?P<joku>[0-9\.\-]+)\s*.*$

--- Koodi päättyy ---
Kyseessä on python skripti, laitanko SHELL1:LOCATION = python /home/talo/bin/wd-parse.py
vai ilman tuota "python"?
--- Lainaus päättyy ---

Navigaatio

[0] Viestien etusivu

[#] Seuraava sivu

Siirry pois tekstitilasta