Archive

Kategorien

Serielle Konsole mit socat und screen ansprechen

Ich stand vor dem „Problem“ meine Serial2LAN-Konverter im Netz erreichbar zu machen. Darüber kann ich auf die seriellen Konsolen meiner Server und Firewalls zugreifen, was sehr nützlich ist sollte man mal die Netzwerk-Interface abgeschossen oder die Firewall verrammelt haben.
Die Konverter stellen dazu einen TCP-Server zur Verfügung, welche die seriellen Schnittstellen ins LAN „übersetzt“. Normalerweise greift man dann mit dem Linux Program

1
socat

auf den TCP-Server zu. Das hat je nachdem „Nachteile“:

  1. Man kann keine ctrl+c Tasten senden d.h. einen ping kann man nicht mehr stoppen
  2. Man kann zwar ctrl+c senden, aber dafür bekommt man die Verbindung nicht mehr zu

1. ist die einfachste Form des Zugriffs via socat

1
socat `tty`,raw,echo=0 TCP4:SERVER_IP:SERVER_PORT

Drückt man hier jedoch crtl+c gilt dies für die socat-Verbindung auf dem Client und nicht für die serielle Konsole. Man beendet also den socat-Prozess und nicht das Kommando auf der seriellen Konsole.

2. crtl+c zur seriellen Konsole senden

1
socat `tty`,raw,echo=0 TCP4:SERVER_IP:SERVER_PORT,setsid

Drückt man jetzt crtl+c dann landet das bei der seriellen Konsole und beendet das Program dort. Allerdings kommt man dann aus der socat-Verbindung nicht mehr heraus.

Das Besten aus beiden Welten: socat und screen in Kombination

Diese beiden Probleme kann man einfach auf einen Schlag lösen. socat kann eine Verbindung zu einer Konsole auch als PTY zugänglich machen. Das Kommando screen kann dann auf diese PTY zugreifen.

1
2
socat TCP4:SERVER_IP:SERVER:PORT PTY,link=/tmp/pty.sock
screen /tmp/pty.sock

Nun kann man mittels crtl+c das Programm auf der seriellen Seite beenden und mittels

1
2
crtl+a
d

screen in den Hintergrund schiessen. Und mittels

1
screen -r

kann man sich wieder auf die serielle Konsole verbinden

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">

  

  

  

12 + eight =

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahren Sie mehr darüber, wie Ihre Kommentardaten verarbeitet werden .