Portál AbcLinuxu, 30. října 2025 02:57
Ahoj, da se nejak jednoduse "shodit" system pres seriovy port? Aniz bych musel vytvaret nejakeho daemona, ktery bude naslouchat, pobezi pod rootem a potom, kdyz prijde odpovidajici retez, tak zada neco jako "sudo halt" / "sudo shutdown -h now"?
Chtel bych si udelat UPSku k raspberry a libilo by se mi, kdyby to fungovalo jako ten apc deamon pro UPSky od APC - apcupsd... Mam ho na serveru - proste vypnou elektriku, tak mi to shodi system a vypne PC - vyhoda je, ze to odmountuje vsechny disky a nedojde k poskozeni FS, nez to cele zdechne.
Existuje uz nejake hotove resni? Asi by se to dalo resit napojenim primo na terminal a zadanim tech prikazu do terminalu - ale to by vyzadovalo nastavit jmeno a heslo do te UPSky (bude tam nejaky jednocip) a to je neprakticke. Radeji bych, aby UPSka zasilala informace o napajeni, prip. stavu baterie a kdyz vypadne napajeni, zaslala neco jako POWER LOST a o zbytek se postaral linux.
Poradite, nasmerujete?
P.
Řešení dotazu:
apcupsd, když ho znáš (nebo nut)?
Aniz bych musel vytvaret nejakeho daemona, ktery bude naslouchat, pobezi pod rootem a potom, kdyz prijde odpovidajici retez, tak zada neco jako "sudo halt" / "sudo shutdown -h now"?Ty jo než zadáš tento dotaz a než nastavíš nějaký existující SW, který ti poradí, tak už to máš hotové, ne? :)
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
Jendo SUPER!!! Sice tomu vubec nerozumim, ale vim, ze to je presne, co jsem hledal... Ano, defakto mi staci bash script, ktery jednou za cas sahne na upsku a zjisti, jestli jede z baterky, nebo ze site. Krasne na tom je, ze si to muze kazdy nascriptovat jak chce a pokud to bezi po seriaku, tak to bude mit podporu NA KAZDEM HW.
Koukam na to znova a uz mi svita... (v bashi jsem toho jeste moc nepsal). Takze - to cte kazdou sekundu ze seriaku a kdyz najde AHOJ, posle to halt.. OK... Jak to udelat, at se to spusti samo po startu? dat do rc.local? A kdyz to dam do rc.local, bude to mit prava roota, takze to dokaze i shodit system, je to tak?
/usr/bin/screen -S foo -d -m /root/foo.sh &takže se k tomu dá připojit a koukat na to (můj skript ovládá modem, což je trochu složitější, než jenom číst).
Uklada to do logu, v kolik hodin se co nepovedlo
))
Ted jeste jedna vec... protoze se mi docela libi ten napad, pripojit to misto na uart na IIC, ktera je defakto paralelni a muze na ni viset vice zarizeni - cili to neomezi vyuziti toho RPi...
Mas s RPi zkusenosti? ja na nem zatim nic HW s vyuzitim GPIO nestavel, takze nevim, jak to tam je s tema ruznyma knihovnama, co pro to jsou? Neda se nahodou v raspbianu pristupovat na to IIC primo, jako na blokove zarizeni? Pripadne vytvorit jen nejaky "mustek", ktery by mi to I2C zpristupnil jako soubor, aby sel jednoduse pouzivat v bash scriptech?
Posledni vec - ma ten bash script nejakou zasadni nevyhodu oproti treba tomu daemonu napr. v C?
Ted jeste jedna vec... protoze se mi docela libi ten napad, pripojit to misto na uart na IIC, ktera je defakto paralelni a muze na ni viset vice zarizeni - cili to neomezi vyuziti toho RPi...No já hlavně nevím, jak tu UPS chceš postavit -- já bych asi připojil na I2C nějaký levný ADC pro měření baterky a nabíjení ovládal pomocí GPIO pinu.
Mas s RPi zkusenosti?Trošku. GPIO se dá ovládat v lecčems, např. v Pythonu RPi.GPIO nebo ve shellu utilitou gpio. Osobně bych na RPi nepsal dlouhoběžící démony v shellu, přecijen je shell asi nejpomalejší jazyk, který si můžeš vybrat.
Hraju si ted s pythonem, tak je to mozna vyzva ho vyzkouset na tohle
Python je podporovany asi v kazdem linuxu, ze ? Da se program v pythonu spustit taky jako daemon a nebude moc zatezovat system?
Jinak co se tyka HW, chci to postavit s jednocipem, aby se ta UPSka chovala zcela autonomne a mimo to, aby posilala informace do RPi. Rizeni te UPSky bude zajistovat ten jednocip, potrebuju jen, aby to komunikovalo s NECIM v tom RPi, cili bud shell, nebo nejaky daemon, ktereho zvladnu naprogramovat 
Python je podporovany asi v kazdem linuxu, ze ?Skoro. Dnes jsou lidé, co nemají Python 3, časem zase budou lidé, co nebudou mít Python 2.
Da se program v pythonu spustit taky jako daemon a nebude moc zatezovat system?Já to spouštím v tom screenu. Na zátěž jaksi nemá vliv, jestli běží interaktivně, nebo jako démon.
jsem linuxova lama, co amatersky provozuje podle stohu tutorialu asi 4 servery, tak semnou prosim mejte strpeni
nasel jsem, ze nekdo uz to primo pro RPi dela, resi to pomoci daemona, ktery komunikuje s tou UPSkou pres IIC sbernici - ale ja si to chci udelat podle sebe - hlavne ten HW, takze bych se jen inspiroval tim, jak resi tu systemovou cast.
http://www.piups.net/support/
Spousti to nejake BASH SCRIPTY??? a protoze jsem lama, chapu to tak, ze bezi daemon, ktery sosa po lince stav te upsky a kdyz prijde nejaka udalost, tak se spusti (ten daemon vyhlasi v systemu nejaky stav???) nejaky script, tzn. ze si treba do rc.0 atd napisu, ze kdyz prijde udalost LOST POWER, ma se udelat shutdown -h now, je to tak?
Asi si to budu muset naprogramovat a asi to nebude az tak slozite, jak se mi ted prave zda, jen bych poptreboval popostrcit, co si mam nastudovat? Chtel bych to resit co nejjednodusejc a pritom tak, aby to bylo spolehlive a nesvazovalo to uzivateli ruce v tom, aby si mohl sam nastavit, co se ma kdy se systemem stat - v tom se mi libi ten daemon, co asi prepina runlevel? V tom nejsem tak kovanej, takze nevim, jestli to takhle jednoduse jde?
P.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.