Funktionsblock FS_SHELL

Der Funktionsblock FS_SHELL führt ein oder mehrere entfernte Kommandos in einer interaktiven Shell aus.

Achtung: Systemkommandos können das entfernte System gefährden oder beschädigen. Ausserdem können bereits existierende Dateien ohne eine Warnung überschrieben werden.

Das Dateisystem muss vorher mittels FS_INIT initialisiert worden sein. Alle Operationen erfolgen dabei asynchron pro angelegtes Speichermedium.

Eingang RUN

Bei einer positiven Flanke wird das angegebene Kommando ausgeführt.

Eingang DEV

Definiert das Gerät, von wo aus auf welche Dateien zugegriffen werden soll. Das Gerät wird pro Projekt verwendet und kann im Kontextmenü unter Projekt Externer Speicher verwaltet werden.

Eingang PATH

Gibt den Pfad zum Verzeichnis auf dem Speichermedium an. Der Pfad entspricht dabei einem Unix-Dateipfad im UTF-8 Format, falls dieses unterstützt wird. Der Pfad wird wie folgt dargestellt:

Ordner/Unterordner

Das Verwenden eines Pfades ist optional. Wurde dieser gesetzt, so muss das wechseln zu diesem Verzeichnis erfolgreich sein, ansonsten wird der auszuführende Befehl nicht ausgeführt.

Eingang CMD

Definiert alle Befehle, die ausgeführt werden sollen. Alle Befehle müssen durch ein Zeilenende terminiert werden. Wie z. B.: "ls\n". Wird kein Zeilenende verwendet, wird der Befehl vermutlich nicht ausgeführt. Die Befehle werden nach der Rückmeldung vom Server zeilenweise ausgeführt.

Nach der Ausführung aller Befehle sollte am Ende ein "exit\n" gesendet werden, um die Verbindung sofort zu beenden und die Werte zurückzugeben. Danach sollte kein weiterer Befehl gesendet werden, da sonst der Ausgang ERROR auf TRUE gesetzt wird.

Hinweis: Falls die Verbindung unerwartet beendet wird und ein Befehl nicht gesendet wurde, wird der Ausgang ERROR auf TRUE gesetzt.

Eingang PTY

Definiert den Typ der Konsole (Pseudo-Terminal). Für manche Geräte ist dieser Parameter zwingend erforderlich. Beispiele: "vanilla", "exec", "vt100", "vt102", "ansi", "xterm" usw. Wird kein Wert definiert, so wird "vanilla" verwendet.

Der Wert "exec" führt die Anfrage via SSH-Befehl vom Betriebssystem aus. Dadurch werden modernere Methoden verwendet. Jedoch ist diese Methode etwas ineffizienter. Der Eingang ENV wird vor der Verbindung gesetzt, weshalb dieser möglicherweise ignoriert wird. Der Eingang SIZE wird bei dieser Methode ignoriert.

Falls zusätzliche SSH-Parameter übergeben werden müssen, können diese jeweils in einer neuen Zeile nach "exec" hinzugefügt werden. Die Parameter sind case-sensitiv und werden wie im folgenden Beispiel angegeben. Dieses Beispiel aktiviert den RSA-Algorithmus für ältere Geräte.

exec
HostKeyAlgorithms=+ssh-rsa
PubkeyAcceptedAlgorithms=+ssh-rsa

Folgende Parameter stehen dabei zur Verfügung:

SSH-Parameter für exec Beispielwert
KexAlgorithms +diffie-hellman-group1-sha1
Ciphers +aes128-cbc
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
ConnectTimeout 10
ServerAliveInterval 30
ServerAliveCountMax 3

Hinweis: Für weitere Details siehe die externe Dokumentation: https://linux.die.net/man/5/ssh_config (Englisch)

Eingang ENV

Definiert die aktiven Umgebungsvariablen. Um mehrere Variablen anzugeben, kann pro Zeile eine definiert werden. Beispiel:

LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8

Eingang SIZE

Definiert die Größe des Terminals. Standardmässig wird diese in Zeichen angegeben, kann aber auch in Pixeln definiert werden. Z.B.: "80x25" oder "640x480px". Wurde kein Wert definiert, wird "80x25" verwendet.

Eingang RECV_PT

Definiert ein Timeout zum Empfangen von Daten pro Befehl im Format T#. Wird kein Timeout definiert, so wird T#150ms verwendet. Ist dieser Wert nicht hoch genug, so werden vermutlich mehrere Befehle während der Datenausgabe ausgeführt.

Eingang TIMEOUT

Setzt ein Timeout im Format T# zur Ausführung aller Befehle. Nachdem dieses erreicht wurde wird die Verbindung beendet und den Wert zurückgegeben. Dabei wird ERROR auf TRUE gesetzt. Das Timeout wird nach dem Verbindungsaufbau und der Authentifizierung ausgewertet. Wurde der Eingang PTY auf "exec" gesetzt, so wird die Ausführungszeit auf den gesamten Zeitraum ausgewertet. Wird kein Timeout definiert, so wird T#300s verwendet.

Ausgang DONE

Der Ausgang gibt bei Erfolg einen Impuls zurück, um die nächste Operation durchzuführen. Der Impuls erfolgt beim Beenden des Vorgangs, auch wenn ein Fehler aufgetreten ist.

Ausgang RETURN

Gibt die Rückgabe des Kommandos bei erfolgreicher Ausführung zurück. Der Wert wird für die spätere Verwendung gespeichert.

Hinweis: Beachten Sie, dass die Konsole die Ausgabe formatiert. Dadurch können auch Steuerzeichen oder binäre Daten enthalten sein.

Ausgang RETERR

Gibt die Rückgabe des Kommandos bei fehlerhafter Ausführung zurück. Bei SSH auch STDERR genannt. Der Wert wird für die spätere Verwendung gespeichert.

Hinweis: Beachten Sie, dass die Konsole die Ausgabe formatiert. Dadurch können auch Steuerzeichen oder binäre Daten enthalten sein.

Ausgang ERROR

Gibt im Fehlerfall einen Text mit einer Fehlermeldung zurück. Dieser ist FALSE, wenn kein Fehler aufgetreten ist. Der Zustand wird für die spätere Verwendung gespeichert.

Mögliche Ursachen:

  • Der Dienst des Speichermediums wurde nicht gestartet.
  • Der Speicher wurde nicht initialisiert.
  • Die Logindaten sind ungültig.
  • Der entfernte Server konnte nicht erreicht werden.
  • Das Speichermedium existiert nicht.
  • Der angegebene Pfad ist ungültig.
  • Auf das Speichermedium kann nicht geschrieben werden.
  • Kein Speicherplatz auf dem Speicher mehr vorhanden oder der Speicher ist schreibgeschützt.
  • Die Verbindung wurde unerwartet beendet, bevor alle Befehle gesendet werden konnten.
  • Das definierte Timeout wurde erreicht.

Siehe auch