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