Como faço para registrar a saída do comando AT do modem USB?

3

Eu quero ser capaz de enviar o comando "AT + CSQ" para / dev / ttyUSB1 a cada 5 segundos e fazer logoff de resposta para um arquivo de texto. Eu posso fazê-lo manualmente através da tela (screen / dev / ttyUSB1 e digite AT + CSQ e ver a resposta), mas como faço isso como um script bash?

    
por Anthony Agius 23.07.2013 / 12:31

2 respostas

0

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
    
por pabouk 03.09.2013 / 01:15
0

A ferramenta expect é projetada apenas para esse tipo de tarefa. man expect irá ajudá-lo.

    
por waltinator 13.02.2015 / 06:59