Abaixo está um exemplo de script com alguma lógica para registro e limpeza quando o script termina (o comando trap
). Um truque importante é manter a entrada da porta serial aberta, caso contrário a entrada do momento em que a porta foi fechada pode se perder.
#!/bin/bash
LOGFILE=/var/tmp/modemlog
MODEM=/dev/ttyUSB1
MODEMCMD=AT+CSQ
INTERVAL=5
LOGDATE="date +%Y%m%dT%H%M%S"
# write command to modem
wrmodem () {
echo -ne "$*"'\r\n' >"$MODEM"
log "--- sent: $*"
}
# log message to a logfile
log () {
echo "$($LOGDATE) $@" >>"$LOGFILE"
}
# logger
{
trap 'log "=== logger stopped $BASHPID"' EXIT
log "=== logger started: $BASHPID"
while true ; do
if read ; then
log "$(tr -d \r <<<"$REPLY")"
fi
done
} <"$MODEM" &
LOGGERPID=$!
trap 'kill $LOGGERPID' EXIT
# requester
while true ; do
wrmodem "$MODEMCMD"
sleep $INTERVAL
done