Sichere SFTP-Uploads in IEC 61131-3 mit Curl implementieren
Vor einigen Wochen erhielt ich folgende Frage: Sie müssen eine Logdatei auf einen SFTP-Server hochladen, indem Sie ein Programm verwenden, das im ESM läuft.
Das SSH File Transfer Protocol (auch Secure File Transfer Protocol oder SFTP) ist ein Netzwerkprotokoll, das Dateizugriff, Dateiübertragung und Dateimanagement über jeden zuverlässigen Datenstrom bietet. Es wurde von der Internet Engineering Task Force (IETF) als Erweiterung des Secure Shell Protocols (SSH) Version 2.0 entworfen, um sichere Dateiübertragungsfunktionen bereitzustellen.
SFTP ist in der PLCnext-Firmware enthalten, das sollte also kein Problem sein.
Schritt 1: Ich begann, eine Logdatei mit Structured Text zu erstellen. Beispiele dazu finden Sie hier:
https://www.plcnext-community.net/en/hn-makers-blog/438-datalogging-in-iec-61131-3-the-basic-principle.html
https://www.plcnext-community.net/en/hn-makers-blog/447-datalogging-in-iec-61131-3-create-your-own-file-manager.html
Schritt 2: Ich brauchte einen SFTP-Server zum Testen meiner PLC-Anwendung. Ich habe CrushFTP verwendet, das ich in einer virtuellen Maschine auf meinem Laptop installiert habe.
Nach der Installation der Software müssen Sie einen Admin-Benutzer für die Web-Oberfläche erstellen. Sobald dies erledigt ist, können Sie einen Benutzer für den PLC-Zugang erstellen.
Für dieses Beispiel: Benutzer = PLCnext, Passwort = 123456789
Schritt 3: Datei über die Kommandozeile hochladen.
Im obigen Screenshot sehen Sie, dass wir zuerst einen Befehl eingeben und in einem zweiten Schritt das Passwort eingeben. Wenn wir diesen Vorgang mit dem „PBCL_SysLinuxShell_1“ FB automatisieren wollen, benötigen wir einen Einzeiler-Befehl.
Dieser FB findet sich in der PLCnextBase Library. (https://www.plcnextstore.com/#/720)
Also brauchen wir einen anderen Befehl für den Datei-Upload. Schauen wir uns Curl an.
Die mit Firmware 2020.6.1 installierte Version unterstützt kein SFTP. Dank Oliver Warneke konnte ich eine andere Version von Curl installieren. Wir gehen nicht den kompletten Installationsprozess durch, aber das Ergebnis ist eine Version, die SFTP unterstützt. Mit Firmware 2021.0.0 LTS können Sie folgende Version verwenden.
Dank Curl können wir nun einen anderen Befehl verwenden.
curl -k -sS --key ~/.ssh/id_rsa --max-time 25 --connect-timeout 10 "sftp://192.168.1.50:22/test/Upload/" --user "PLCnext:12345679" -T "/opt/plcnext/Test.pdf" --ftp-create-dirs
Wenn Sie diesen Befehl für den Shell FB verwenden, können Sie das Ergebnis in der folgenden Logdatei überprüfen.
/opt/plcnext/PLCnextBase.ServiceProvider.log
Einige Erklärungen zu den Argumenten:
- -k, --insecure (TLS) Standardmäßig wird jede SSL-Verbindung, die curl herstellt, auf Sicherheit überprüft. Diese Option erlaubt curl, fortzufahren und auch für Serververbindungen zu arbeiten, die ansonsten als unsicher gelten.
- -S, --show-error In Kombination mit -s, --silent, zeigt curl eine Fehlermeldung an, wenn es fehlschlägt.
- -s, --silent Stiller Modus. Zeigt keinen Fortschrittsbalken oder Fehlermeldungen. Macht curl stumm. Es werden trotzdem die angeforderten Daten ausgegeben. Verwenden Sie -S, --show-error zusätzlich, um den Fortschrittsbalken zu deaktivieren, aber Fehlermeldungen anzuzeigen.
- --key <key> (TLS SSH) Name der privaten Schlüsseldatei. Erlaubt Ihnen, Ihren privaten Schlüssel in dieser separaten Datei bereitzustellen. Für SSH, wenn nicht angegeben, versucht curl folgende Kandidaten in Reihenfolge: '~/.ssh/id_rsa', '~/.ssh/id_dsa', './id_rsa', './id_dsa'.
- -m, --max-time <seconds> Maximale Zeit in Sekunden, die Sie für den gesamten Vorgang zulassen. Nützlich, um Batch-Jobs daran zu hindern, stundenlang aufgrund langsamer Netzwerke oder ausfallender Links zu hängen.
- --connect-timeout <seconds> Maximale Zeit in Sekunden, die Sie für den Verbindungsaufbau von curl zulassen. Dies begrenzt nur die Verbindungsphase.
- -T, --upload-file <file> Überträgt die angegebene lokale Datei an die Remote-URL. Wenn kein Dateiteil in der angegebenen URL vorhanden ist, hängt curl den lokalen Dateinamen an.
- --ftp-create-dirs (FTP SFTP) Wenn ein FTP- oder SFTP-URL/Vorgang einen Pfad verwendet, der auf dem Server noch nicht existiert, ist das Standardverhalten von curl, zu fehlschlagen. Mit dieser Option versucht curl stattdessen, fehlende Verzeichnisse zu erstellen.
Referenzen:
Industrietechnik
- SPICE über die Kommandozeile: Die Bedeutung des „<“-Operators
- Industrial IoT für Wachstum nutzen: Jenseits von Kosteneinsparungen
- Vier Schlüsseltests zur Bewertung der Effizienz von Leistungstransformatoren
- Stromausfall-Prävention: 5 essenzielle Strategien zum Schutz Ihres Unternehmens
- Brownout vs. Blackout: Unterschiede verstehen & Geschäftsauswirkungen
- Schlüsselfaktoren für die Wartungshäufigkeit von Dieselgeneratoren
- Passenden Notstromgenerator wählen: 4 Schlüsselfragen für zuverlässige Stromversorgung
- Teslas Virtual Power Plant: Transformation des globalen Energienetzes
- Energiemonitoring in Industrie 4.0: Effizienz steigern – Experten-Webinar
- Fabrikeffizienz steigern: Teamwork meistern für überlegenes Management