A problémám a következő:
Program nyit egy tcp szervert ha bejön a reset szó akkor gpio meglóbál. Mindez induljon el automatikusan.
A megvalósítással a következőig jutottam:
/usr/bin/resetserver:
if [ $# -ne 2 ]; then
echo "starting resetserver requires 2 arguments: port and gpio number";
else
nc -l -p $1 |
while read a ;
do
if echo $a | grep -q '^reset'; then
echo "0" >/sys/class/gpio/gpio$2/value
sleep 1
echo "1" >/sys/class/gpio/gpio$2/value
echo "AVR reset performed";
fi ;
done
fi;
/etc/init.d/resetserver:
start() {
echo $RESET_GPIO > /sys/class/gpio/export
echo "out" >/sys/class/gpio/gpio$RESET_GPIO/direction
echo "1" >/sys/class/gpio/gpio$RESET_GPIO/value
echo "Starting resetserver";
start-stop-daemoon -S -m -p /var/run/resetserver.pid -q -x $PROG -- $PORT $RESET_GPIO &
}
stop() {
echo "Stopping resetserver";
[ -f /var/run/resetserver.pid ] &\
-p /var/run/resetserver.pid -s TERM
rm -f /var/run/resetserver.pid
}
echo "1" >/sys/class/gpio/gpio$RESET_GPIO/value # to ensure that the avr should not left in reset
}
Problélmám:
Ha resetserver 4242 7 &-el indítom akkor szépen megy.
Ha viszont /et/init.d/resetserver start -al akkor a csatlakozás után kilép az nc.
Továbbá ha a stopot hívom meg akkor az nc tovább fut. pedig a pidfájlban lévő pid jó.
Próbáltam azt is, hogy a resetserver tartalmát belehegesztem az initscriptbe de azzal is ugyanez volt a helyzet.
- 1249 megtekintés
Hozzászólások
Ez csak vazlat, tele van hibaval:
function run() {
nc -l -p $1
echo $$ > /var/run/blabla.pid
}
function start() {
echo -n "Starting blabla... "
run &
echo "OK"
}
Ennek elvben muxenie kene.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Nem jó.
Elindulni elindul, a pid a run függvényből az nc után kiírva olyat ad ami utánna nincs a ps auxban.
Az nc pidje 2vel több.
Illetve az a felállás hogy telnettel belépek és kilép az nc továbbra is él.
- A hozzászóláshoz be kell jelentkezni
A pid a forkolas miatt cseszodik el, de az "nc tovabbra is el" - nem ez az, amit szerentenk?
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Rosszul fogalmaztam, vagy pakoltam a vesszőket.
Tehát ha így indítom el a stuffot akkor az nc csatlakozás után kilép.
Akkor is ha /etc/init.d/resetserver starttal indítom el kézzel.
- A hozzászóláshoz be kell jelentkezni
Most gondolkodtam. Tulajdonkepp miert is kell nekunk nc, es miert nem jo az inetd? Ez utobbi a stdin/stdout -bol varazsol tcp csatornat.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Köszi, kipróbálom, meglátom mire jutok.
- A hozzászóláshoz be kell jelentkezni