Portál AbcLinuxu, 7. května 2025 05:39
Ahoj, dostal jsem porazen script, ktery by mel cist ze seriaku a kdyz prijde definovany retezec, provest prikaz - v tomto pripade shodit server. Jenomze to nejak nechodi. Ten program vstoupi do cyklu jen jednou a vubec mi nevypisuje co prislo ze seriaku.
Jak je to mozne? kde je chyba? Diky moc.
ups="/dev/ttyS0" stty -F "$ups" cs8 cread clocal -cstopb -echo -ignpar while sleep 1; do while read line; do if echo "$line" | grep -qE "^AHOJ"; then halt fi echo "$line" done < "$ups" done
No zrovna ty ses tvurce toho scriptu zadal jsem bash -x a malem se mi zavaril terminal
)) hele, kdyz zadam cat < /dev/ttyS0 a poslu si neco na seriak, tak mi to normalne vypisuje. Cili tohle chodi.
Rychlost jsem nstavil pomoci stty, ale mohl bych zadat primo do toho scriptu, protoze jedu na 19200.
fakt tam neni nejaka drobna chybka? Upravil jsem to takhle a po spusteni mi to vypise:
ahoj...
19200
ctu...
a konec... stoji a ceka. je mi divne, proc to vypise 19200? neni tam nejaka chyba?
#!/bin/bash echo "ahoj..." ups="/dev/ttyS2" stty -F "$ups" speed 19200 cs8 cread clocal -cstopb -echo -ignpar while sleep 1; do echo "ctu..." while read line; do if echo "$line" | grep -qE "^AHOJ"; then echo "prislo to" fi echo "$line" done < "$ups" done
tak uz to chodi... ja vul nemel v terminalu zapnute CR LF na konci radku, takze jsem to neposilal jako radky, ale jako posloupnost znaku
Jenom se jeste zeptam . zatezuje ten script nejak moc procesor? Muze takhle bezet nonstop? a da se treba nejak ovladat? tzn. predat mu nejak parametr, aby neco poslal na to zarizeni? Jde o to, ze on obsadi ten seriak, takze se k nemu ze systemu nedostanu. Pobezi porad a bude cekat na prichod znaku, aby shodil system.
Kdyz ale budu chtit zjistit, zda to zarizeni bezi z baterek nebo ze site, muzu nejak provest dotaz? To uz bude na bash script asi tvrdsi orisek, ze?
MAZEC !!! takze kdyz jeden script shodim na pozadi, tak normalne bezi a pritom muzu posilat dalsim scriptem znaky na dany seriak, cili to resi muj problem interakce. Myslel jsem, ze port bude zablokovany, ale neni, SUPER.
man k nut je velmi jednoduchyZkusil jsem otevřít ten a upsd.conf (5). Vidím nějaké listen a další direktivy, nikde tam nevidím straightforward „jak to pověsit na sériák“.
ups je v nut/apcupsd "implementovana" predsa ovladacmiOpravdu má apcupsd ovladač k JendaUPS™ 3000™?
a ups nerobi nic ine, len posiela info o svojom stave a kazdy stav sa da osetritMusím si přečíst, v jakém formátu se to info posílá, vybrat si nějaký jednoduchý z těch 1000 existujících formátů a ten implementovat.
takze neviem, co si mam predstavit pod "implementacii ups do apcupsd"Zařídit, aby tam fungovala UPS, které po sériáku posílá každou vteřinu čtveřici čísel, což je napětí na vstupu, napětí na baterce a napětí na SENSE odporech vůči nějaké referenci ADC.
:) ups podporuje aj siet, je to jednoduche spolahlive riesnieMoje UPS teda rozhodně sít nepodporuje.
Zařídit, aby tam fungovala UPS, které po sériáku posílá každou vteřinu čtveřici čísel, což je napětí na vstupu, napětí na baterce a napětí na SENSE odporech vůči nějaké referenci ADC.Marně přemýšlím, k čemu je to dobré. Co jsem dělal s UPSkama, tak to fungovalo vždy tak, že pokud chtěl počítač nějaké hodnoty z UPS, tak do ní poslal dotaz a naopak, pokud UPS zjistila, že vypadlo 230VAC tak poslala do onoho PC nějaký event. A už vůbec pochybuji, že by si Jenda vyráběl vlastní UPSku
Co jsem dělal s UPSkama, tak to fungovalo vždy tak, že pokud chtěl počítač nějaké hodnoty z UPS, tak do ní poslal dotaz a naopak, pokud UPS zjistila, že vypadlo 230VAC tak poslala do onoho PC nějaký event.Je to tak nejjednodušší, ale OK. Problém zůstává.
A už vůbec pochybuji, že by si Jenda vyráběl vlastní UPSkuPravda, já ne (neprovozuju nic kritickýho, výpadek elektřiny doma nepamatuju a stejně mám notebook a baterkou), ale třeba brmdoor má samodomo UPS, aby šlo odemykat i při výpadku (který je v brmlabu častější).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.