Startseite > Forum > Controller SlimLine e Netsyst (LogicLab) > Verwendung von cURL für den Zugriff auf Webseiten von SlimLine
- Dieses Thema hat 7 Antworten, 2 Teilnehmer und wurde zuletzt aktualisiert 1 Jahr, 3 Monaten da Sergio Bertana.
-
AutorPost
-
Januar 10, 2023 bei 5: 03 pm #69174ChiaraPartecipante
Gegeben irgendein Programm auf einem System SlimLine, genannt gemappte Variablen:
VAR_GLOBAL Var1 AT %MW100.10 : UINT; Var2 AT %MW100.12 : UINT; Var3 AT %MW100.2200 : UINT; END_VAR
Eine benutzerdefinierte Seite hinzugefügt, z. Values.htm (dessen Inhalt auf VAR3 verweist ) Ich kann die Werte von VAR2200 und VAR1 ändern mit:
curl -v -X GET "http://IPPLC/webpages/user/Values.htm?USINT+10=8&USINT+12=7"
Ich würde den Wert von Var3 in der Ausgabe erwarten, stattdessen gibt es mir Folgendes zurück:
* Trying IPPLC:80... * Connected to IPPLC (IPPLC) port 80 (#0) * Server auth using Digest with user 'Admin' > GET /webpages/user/Values.htm HTTP/1.1 > Host: 10.7.208.158 > User-Agent: curl/7.85.0 > Accept: */* > * Mark bundle as not supporting multiuse < HTTP/1.1 302 Found < Server: Elsist CPU module < Location: /Login.html < Transfer-Encoding: chunked < Connection: close * Closing connection 0
Januar 10, 2023 bei 5: 33 pm #69179Sergio BertanaAdministrator des ForumsDas Konzept ist richtig, aber wahrscheinlich befindet sich die Seite, die Sie in cURL anfordern, in einem Ordner, auf den nur ein angemeldeter Benutzer zugreifen kann. Beim Zugriff über den Browser werden Sie zunächst zur Authentifizierung aufgefordert und greifen dann auf die Seite zu. Wenn Sie bemerken, dass die Antwort einen 302-Code enthält, der auf die Anmeldeseite umgeleitet wird. Ich habe das Beispielprogramm erstellt cURLExample (Herunterladen), wo ich im LogicLab-Programm 3 globale Variablen deklariert habe:
VAR_GLOBAL Var1 AT %MW100.10 : UINT; Var2 AT %MW100.12 : UINT; Var3 AT %MW100.2048 : UINT; END_VAR
Und eine wie folgt definierte Webseite:
<head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>SlimLine - Simple page</title> <style type="text/css"> body {font-family: Arial, Helvetica, sans-serif; font-size: 18px; font-style: normal;} </style> </head> <body> This page is served by the <b>SlimLine</b><br> Var3:<!--["%d", UINT, 2048]--> </body> </html>
Ich habe die Seite mit dem Namen geladen Values.htm in C:\Web, der Ordner C:\Web, wie Sie sehen Screenshot es kann auch von einem anonymen Benutzer gelesen werden, also mit dem cURL-Befehl:
curl "http://192.168.0.181/Values.htm?UINT+10=8&UINT+12=20"
Ich schätze Var1=8 e Var2=20 und die Seite mit dem Wert von wird an mich zurückgegeben Var3 der in DB100.2048 zugewiesen ist, hat den Wert, der im Backup gehalten wird, wenn das System ausgeschaltet wird.
C:\Windows\system32>curl "http://192.168.0.181/Values.htm?UINT+10=8&UINT+12=20" <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>SlimLine - Simple page</title> <style type="text/css"> body {font-family: Arial, Helvetica, sans-serif; font-size: 18px; font-style: normal;} </style> </head> <body> This page is served by the <b>SlimLine</b><br> Var3:208 </body> </html>
Januar 11, 2023 bei 3: 25 pm #69228Sergio BertanaAdministrator des ForumsIch füge ein Beispiel für die Verwendung von cURL mit Authentifizierung hinzu, damit Sie auch auf Seiten zugreifen können, die in Ordnern gespeichert sind, auf die nur angemeldete Benutzer zugreifen können.
Der Anmeldemechanismus verwendet Cookies, um den Benutzer zu erkennen, daher besteht der erste Vorgang darin, sich beim System anzumelden, indem das Speichern der zurückgegebenen Cookies in einer Datei aktiviert wird. Der Befehl:
curl -c "C:\Cookie" "http://192.168.0.181/SysCgi/Login.cgi?Username=Admin&Password=Admin&Action=Login"
Melden Sie sich mit Anmeldeinformationen am System an Admin:Admin, wobei die zurückgegebenen Cookies in der Datei gespeichert werden C:\Cookie. Wenn wir nun die Cookie-Datei an die cURL-Befehle übergeben, erkennt das System den Benutzer und ermöglicht den Zugriff. Also davon aus, dass unsere Seite Values.htm wird nun in den Ordner verschoben C:\Web\webpages des Systems, hier könnten wir mit dem Befehl darauf zugreifen:
curl -b "C:\Cookie" "http://192.168.0.181/webpages/Values.htm?UINT+10=8&UINT+12=20"
In den verschiedenen Befehlen können wir den Parameter hinzufügen -v wenn wir eine Rücksendung wünschen verbose der durchgeführten Operation.
Die Authentifizierung hat eine Lebensdauer auf dem System, wenn Sie sich also weiterhin anmelden, wird das Leben automatisch aktualisiert. Wenn nach etwa 1 Minute keine Anmeldungen erfolgen, läuft die Sitzung ab und Sie müssen sich erneut anmelden.
Januar 12, 2023 bei 9: 02 #69236ChiaraPartecipanteDanke für das Beispiel und die Klarstellungen, die Authentifizierung greift also nur beim Lesen, wäre es nicht richtiger, auch die Aufforderungen zur Durchführung der Wertänderung zu ignorieren, wenn man nicht authentifiziert ist?
Januar 12, 2023 bei 4: 00 pm #69245ChiaraPartecipanteKann ich nach der korrekten Syntax fragen, die in den HTM-Dateien verwendet werden soll, um den OUTPUT-Status zu lesen?
"DO1": <!--["%d", BOOL, QX0.1]-->
Das DO1-Tag mit Typ: BOOL und Adresse %QX0.1 im SPS-Programm zeigt den Status korrekt an, während auf HTML der Wert leer ist.
Januar 12, 2023 bei 6: 22 pm #69250Sergio BertanaAdministrator des ForumsVon der Webseite Sie können nicht auf die System-E/A zugreifen Sie können nur auf Variablen zugreifen, die im DB100 zugeordnet sind.
Wenn Sie also die Eingänge lesen oder die Ausgänge setzen möchten, müssen Sie BOOL-Variablen im DB100 zuweisen und dann mit einem Kontaktplan- oder ST-Programm den Zustand der physikalischen E/As auf die zugewiesenen Variablen kopieren.
Januar 13, 2023 bei 8: 43 #69264ChiaraPartecipanteDanke für die Antwort, aber der Status kann gelesen werden mit:
"PLC_DO" : [<!--[OSID_PLC_DO_ALL]-->] "PLC_DI" : [<!--[OSID_PLC_DI_ALL]-->]
Januar 13, 2023 bei 11: 04 #69285Sergio BertanaAdministrator des ForumsDie „OSID_xxxx“-TAGs sind TAGs, die wir verwenden, um unsere System-Webseiten zu verwalten.
Sie werden nicht dokumentiert, während sie arbeiten wir raten von der Verwendung ab weil wir dadurch seine Funktionalität nach eigenem Ermessen ändern können, ohne die Nutzung durch Kunden zu beeinträchtigen.
-
AutorPost
- Sie müssen angemeldet sein, um auf dieses Thema antworten zu können.