staging.inyokaproject.org

screen Befehl: Eingabe per "echo" Ausgabe in Datei?

Status: Ungelöst | Ubuntu-Version: Ubuntu 16.10 (Yakkety Yak)
Antworten |

rs1302

Anmeldungsdatum:
4. Februar 2016

Beiträge: 57

Hallo, ich kann Befehle über

screen /dev/ttyUSB0

an ein USB LTE Modem schicken. Mit diesen Befehlen kann man Signalwerte auslesen und Verbindungen herstellen. Ich möchte diese Befehle zur Signalauswertung in einem sh Skript einsetzen. Das klappe mit "echo" soweit, jedoch möchte ich die Signale auch auswerten und müsste die Reaktionen des Modems in eine Datei umleiten.

Ich habe zum Test zwei Terminals geöffnet. Über ein Terminal setze ich die echo Befehle ab. im 2ten Fenster kontrollieren ich mit "screen /dev/ttyUSB0" die Eingaben und erhalte die Reaktionen des Befehls. Folgende Echo Eingabe sendet den gewünschten Befehl "AT^HFREQINFO?" an /dev/ttyUSB0. Die Reaktion kann ich prompt im "screen /dev/ttyUSB0" Fenster sehen. Der 2te Teil mit der Pipe funktioniert jedoch nicht. Egal mit bzw. ohne "tee" oder mit ">" anstelle der pipe, die screen Ausgabe die ich am Bildschirm beobachten kann, wird nicht in die Datei umgeleitet. Ohne "tee" erhalte ich eine "permission denied" Fehlermeldung.

1
echo -e -n 'AT^HFREQINFO?\015'  > /dev/ttyUSB0  2>&1 | /tmp/screen.log

Möglicherweise wird der Schreibprozess zu schnell beendet. Die Ausgabe im screen Fenster braucht eine halbe Sekunde. Kann man die pipe des Schreibens irgendwie verzögern bzw eine Zeitspanne lang offen halten?

Alternativ kann ich mit "gcom" arbeiten. "gcom" mit einer passenden config- Datei erzeugt entsprechende txt Dateien mit dem gewünschten Bildschirminhalt. Diese Method eignet sich nicht für Skripte in denen flexibel auf "wenn und aber" reagiert werden soll.

Ziel wäre es, über "/dev/ttyUSB0" oder "/dev/ttyUSB1" einen Befehl an mein LTE Modem zu schicken, und dessen Reaktion in einer Datei zu speichern, welche ich mit "awk" näher untersuchen würde. (ttyUSB1 oder ttyUSB0 bewirken dasselbe) Hat jemand eine Idee?

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Für solche Dialogsteuerung (allerdings normalerweise mit Programmen) gibt es ja expect (→ man expect) ...

Vielleicht kannst Du damit etwas machen ? (mit Schnittstellen habe ich es nämlich noch nicht probiert oder gesehen)

LG,

track

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Hallo!

Ich verwende einen anderen Ansatz für das Absetzen von Befehlen in Screen.

screen -r $nameDesScreens -p 0 -X eval 'stuff \015"BEFEHL | PIPE"\015';

wobei \015 der Zeilenumbruch, bzw. das Return-Signal (oder wie auch immer das korrekt heisst 😀) ist. Vielleicht hilft dir das weiter.

rs1302

(Themenstarter)

Anmeldungsdatum:
4. Februar 2016

Beiträge: 57

expect werde ich mir ansehen.

@Chicken: über "screen /dev/ttyUSB0" kann ich eine screensession öffnen und meine Befehle eingeben. Ich hann auch eine screen -d session öffnen,

screen -d -m -S xxx /dev/ttyUSB0
screen -x xxx  'AT\^HFREQINFO?'

und dann mit dem Sessionnamen meinen Befehl absetzen, Ist jedoch langwieriger als über echo.

Die Umleitung in eine Datei bekomme ich trotzdem nicht hin.

Wie sollte mein Befehl "AT^HFREQINFO?" (bzw mit Enter=\015 "AT^HFREQINFO?\015") und die Zuordnung zu /dev/ttyUSB0 in deinen Befehl eingeben? Habe es nicht geschafft! Ist PIPE eine fifo pipe?

Antworten |