Seriovy buffer z linuxu
Veros Kaplan
veros-XXXX na tac.cz
Středa Říjen 29 18:43:45 CET 2003
Phill wrote/napsal:
: Myslel jsem toto pridat do inittab.
: cat /dev/ttyS1 > /data/serial
:
: Fungovalo by to takhle nejak, nebo mam pouzit nejaky hotovy program?
: Poradte mi prosim lepsi prikaz nez cat, ktery by cekal na data. Neco jako
: tail -f.
Používám cat do souboru, jehož jméno se mění podle času. Soubor je
přilinkován do souboru známého jména, který se při startu skriptu odešle
mailem (při spuštění skriptu se odešle předchozí soubor). Ze schránky si
ho již vyzvedává náš programátor, který s ním něco dělá.
V inittabu je napsaná cesta k následujícímu skriptíku, jednou za den
se zabije, znovu obživne (inittab) a odešle stará data.
V. Kaplan
--
Věroš Kaplan <veros @ tac . cz>
system disaster
Tacoma Computers, Staňkova 18a, Brno, CZ http://www.tac.cz/
--
Názory v tomto mailu uvedené jsou moje vlastní a nemusí se shodovat
s názory mého zaměstnavatele.
--
|| Teplota mého procesoru je 52°C.
||
"Kdyby všichni co o mně škaredě mluví věděli, co si o nich myslím, mluvili
by ještě víc..."
---8<--------------------------
#!/bin/bash
RECIPIENT=veros-XXXX na tac.cz # kam s tím nepořádkem
BASEDIR=/var/data/telefon
PIDS=$BASEDIR/.pids # moje PID (příp.předchůdce)
CURRENT=$BASEDIR/.current # aktuální plněný soubor
START=$BASEDIR/.start # začátek času
PATH=/bin/:/usr/bin
MAILFILE=$BASEDIR/.tmp # temp file
FILENOW=$BASEDIR/`date +%Y-%m/%Y-%m-%d-%H:%M`-$RANDOM
cd $BASEDIR
mkdir -p `dirname $FILENOW`
NOW="$( LC_ALL=cs_CZ date '+%d.%B %Y, %H:%M:%S')"
kill `cat $PIDS` &> /dev/null
# existují-li už nějaká data, odešleme je. Jinak ne neodešleme...
if [ `wc -c < $CURRENT` -ne 0 ]; then
> $MAILFILE
echo Vypis z ustredny >> $MAILFILE
echo =-=-=-=-=-=-=-=- >> $MAILFILE
echo -n 'Od: ' >> $MAILFILE
cat $START >> $MAILFILE
echo -n Do: $NOW >> $MAILFILE
echo >> $MAILFILE
echo >> $MAILFILE
echo '---BEGIN PHONE LISTING---' >> $MAILFILE
cat $CURRENT | tr -d '\r' >> $MAILFILE
echo '---END PHONE LISTING---' >> $MAILFILE
echo >> $MAILFILE
echo $NOW > $START
if [ -s $CURRENT ]; then
mail $RECIPIENT -s "Vypis z ustredny $NOW" < $MAILFILE
fi
touch $FILENOW
ln -sf $FILENOW $CURRENT
fi
stty 1200 raw < /dev/ttyS0
echo $$ > $PIDS
exec dd if=/dev/ttyS0 of=$CURRENT bs=1 2> /dev/null
Další informace o konferenci Linux