2015-04-24 2 views
3

Je voudrais envoyer la commande AT à mon modem en utilisant un script shell et analyser le résultat afin de vérifier si l'OK est renvoyé. Quelle est la meilleure façon d'analyser la variable at1 et d'extraire "OK" ou "ERROR" dans le cas contraire?Envoi de la commande AT et résultat de l'analyse du modem

+3

Vous ne pouvez pas envoyer de commande AT à partir de la ligne de commande normale à un modem. Vous devez utiliser quelque chose comme 'socat' ou' minicom' pour établir une connexion série avec le modem. Voir: [** Comment envoyer des commandes AT à un modem sous Linux? **] (http://unix.stackexchange.com/questions/97242/how-to-send-at-commands-to-a-modem- in-linux) –

+0

Vous pouvez également utiliser [kermit] (http://www.kermitproject.org/). –

+0

J'utilise minicom pour établir la connexion série avec la carte. Une fois le modem démarré, j'utilise microcom ou socat pour parler avec. Cependant, il est possible d'envoyer des commandes AT à travers cette interface en utilisant un simple écho, n'est-ce pas? – ogs

Répondre

1

Il est absolument possible d'envoyer des commandes AT à un modem et de capturer sa sortie à partir de la ligne de commande comme vous essayez de le faire, mais pas en utilisant simplement les scripts shell bash. C'est pourquoi j'ai écrit le programme atinout spécifiquement pour soutenir des scénarios comme vous demandez.

test comme suit:

MODEM_DEVICE=/dev/ttyUSB0 

MODEM_OUTPUT=`echo AT | atinout - $MODEM_DEVICE -` 
case $MODEM_OUTPUT 
in 
     *OK*) 
       echo "Hurray, modem is up and running :)" 
       ;; 
     *) 
       echo "Oh no! Something is not working :(" 
       ;; 
esac 

Si vous avez l'intention d'analyser la sortie de quelque façon plus sophistiqué, vous devez enregistrer au lieu de la sortie dans un fichier en donnant un nom au lieu du dernier - et lire.