Accueil > Forum > contrôleurs SlimLine e Netsyst (LogicLab) > Utilisation de cURL pour accéder aux pages Web de SlimLine
- Ce sujet a 7 réponses, 2 participants et a été mis à jour pour la dernière fois 1 année, 3 mois da Sergio Bertana.
-
auteurPost
-
Janvier 10, 2023 à 5: pm 03 #69174ChiaraPartecipante
Étant donné n'importe quel programme sur un système SlimLine, appelées variables mappées :
VAR_GLOBAL Var1 AT %MW100.10 : UINT; Var2 AT %MW100.12 : UINT; Var3 AT %MW100.2200 : UINT; END_VAR
Ajout d'une page personnalisée, par ex. Values.htm (dont le contenu pointe vers VAR3 ) Je peux changer les valeurs de VAR2200 et VAR1 avec :
curl -v -X GET "http://IPPLC/webpages/user/Values.htm?USINT+10=8&USINT+12=7"
Je m'attendrais à la valeur de Var3 dans la sortie, à la place, il me renvoie :
* 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
Janvier 10, 2023 à 5: pm 33 #69179Sergio BertanaAdministrateur du forumLe concept est correct, mais la page que vous demandez dans cURL se trouve probablement dans un dossier accessible uniquement par un utilisateur connecté. Lorsque vous accédez à partir du navigateur, vous êtes d'abord invité à vous authentifier, puis accédez à la page. Si vous remarquez que la réponse contient un code 302 qui est une redirection vers la page de connexion. J'ai fait le programme d'exemple cURLExample (Télécharger) où dans le programme LogicLab j'ai déclaré 3 variables globales :
VAR_GLOBAL Var1 AT %MW100.10 : UINT; Var2 AT %MW100.12 : UINT; Var3 AT %MW100.2048 : UINT; END_VAR
Et une page web définie comme suit :
<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>
J'ai chargé la page avec le nom Values.htm in C:\Web, le dossier C:\Web comme vous le voyez depuis capture d'écran il peut aussi être lu par un utilisateur anonyme, donc avec la commande cURL :
curl "http://192.168.0.181/Values.htm?UINT+10=8&UINT+12=20"
je valorise Var1=8 e Var2=20 et la page avec la valeur de m'est retournée Var3 qui étant alloué dans DB100.2048 a la valeur conservée dans la sauvegarde lorsque le système est éteint.
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>
Janvier 11, 2023 à 3: pm 25 #69228Sergio BertanaAdministrateur du forumJ'ajoute un exemple pour utiliser cURL avec authentification afin que vous puissiez également accéder aux pages stockées dans des dossiers accessibles uniquement par les utilisateurs connectés.
Le mécanisme de connexion utilise des cookies pour reconnaître l'utilisateur. La première opération consiste donc à se connecter au système en activant l'enregistrement des cookies renvoyés dans un fichier. La commande:
curl -c "C:\Cookie" "http://192.168.0.181/SysCgi/Login.cgi?Username=Admin&Password=Admin&Action=Login"
Connectez-vous au système avec des informations d'identification Admin:Admin, enregistrant les cookies renvoyés dans le fichier C:\Cookie. Maintenant, si nous fournissons le fichier cookie aux commandes cURL, le système reconnaîtra l'utilisateur et autorisera l'accès. Donc, en supposant que notre page Values.htm est maintenant déplacé dans le dossier C:\Web\webpages du système, ici on pourrait y accéder avec la commande :
curl -b "C:\Cookie" "http://192.168.0.181/webpages/Values.htm?UINT+10=8&UINT+12=20"
Dans les différentes commandes on peut ajouter le paramètre -v si nous souhaitons avoir un retour verbose de l'opération effectuée.
L'authentification a une durée de vie sur le système, donc si vous continuez à vous connecter, la vie est automatiquement actualisée, s'il n'y a pas de connexion après environ 1 minute, la session expire et vous devez vous reconnecter.
Janvier 12, 2023 à 9: 02 am #69236ChiaraPartecipanteMerci pour l'exemple et les précisions, donc l'authentification ne prend effet qu'à la lecture, ne serait-il pas plus correct d'ignorer également les requêtes pour effectuer le changement de valeur si vous n'êtes pas authentifié ?
Janvier 12, 2023 à 4: pm 00 #69245ChiaraPartecipantePuis-je demander la syntaxe correcte à utiliser dans les fichiers htm pour lire le statut OUTPUT ?
"DO1": <!--["%d", BOOL, QX0.1]-->
La balise DO1 de type : BOOL et d'adresse %QX0.1 dans le programme plc affiche correctement l'état, alors que sur html la valeur est vide.
Janvier 12, 2023 à 6: pm 22 #69250Sergio BertanaAdministrateur du forumÀ partir de la page Web vous ne pouvez pas accéder aux E/S du système vous ne pouvez accéder qu'aux variables allouées dans DB100.
Donc, si vous voulez lire les entrées ou définir les sorties, vous devez allouer des variables BOOL dans DB100, puis avec un programme à relais ou ST copier l'état des E/S physiques sur les variables allouées.
Janvier 13, 2023 à 8: 43 am #69264ChiaraPartecipanteMerci pour la réponse, mais le statut peut être lu avec:
"PLC_DO" : [<!--[OSID_PLC_DO_ALL]-->] "PLC_DI" : [<!--[OSID_PLC_DI_ALL]-->]
Janvier 13, 2023 à 11: 04 am #69285Sergio BertanaAdministrateur du forumLes TAG « OSID_xxxx » sont des TAG que nous utilisons pour gérer les pages Web de notre système.
Ils ne sont pas documentés car ils fonctionnent nous déconseillons son utilisation car cela nous permet de modifier sa fonctionnalité à notre discrétion sans impact sur l'utilisation par les clients.
-
auteurPost
- Vous devez être connecté pour répondre à ce sujet.