INÍCIO > Fórum > controladores SlimLine e Netsyst (LogicLab) > Usando cURL para acessar páginas da web de SlimLine
- Este tópico tem 7 respostas, 2 participantes e foi atualizado pela última vez 1 ano, 3 meses atrás da Sergio Bertana.
-
autorPublique
-
Janeiro 10, 2023 em 5: 03 pm #69174Chiaraparticipante
Dado qualquer programa em um sistema SlimLine, chamadas variáveis mapeadas:
VAR_GLOBAL Var1 AT %MW100.10 : UINT; Var2 AT %MW100.12 : UINT; Var3 AT %MW100.2200 : UINT; END_VAR
Adicionada uma página personalizada, por exemplo Values.htm (cujo conteúdo aponta para VAR3 ) Posso alterar os valores de VAR2200 e VAR1 com:
curl -v -X GET "http://IPPLC/webpages/user/Values.htm?USINT+10=8&USINT+12=7"
Eu esperaria o valor de Var3 na saída, em vez disso, ele me retorna:
* 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
Janeiro 10, 2023 em 5: 33 pm #69179Sergio BertanaAdministrador do fórumO conceito está correto, mas provavelmente a página que você solicitou no cURL está em uma pasta acessível apenas por um usuário logado. Ao aceder a partir do browser é-lhe primeiro solicitada a autenticação para depois aceder à página. Se você perceber que a resposta contém um código 302, que é um redirecionamento para a página de login. Eu fiz o programa de amostra cURLExample (Baixar) onde no programa LogicLab declarei 3 variáveis globais:
VAR_GLOBAL Var1 AT %MW100.10 : UINT; Var2 AT %MW100.12 : UINT; Var3 AT %MW100.2048 : UINT; END_VAR
E uma página da web definida da seguinte forma:
<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>
Eu carreguei a página com o nome Values.htm in C:\Web, a pasta C:\Web como você vê em imagem de tela ele também pode ser lido por um usuário anônimo, portanto, com o comando cURL:
curl "http://192.168.0.181/Values.htm?UINT+10=8&UINT+12=20"
Eu valorizo Var1=8 e Var2=20 e a página com o valor de é retornada para mim Var3 que sendo alocado em DB100.2048 tem o valor mantido em backup quando o sistema é desligado.
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>
Janeiro 11, 2023 em 3: 25 pm #69228Sergio BertanaAdministrador do fórumEu adiciono um exemplo para usar cURL com autenticação para que você também possa acessar páginas armazenadas em pastas acessíveis apenas por usuários logados.
O mecanismo de login usa cookies para reconhecer o usuário, portanto, a primeira operação é fazer login no sistema, permitindo salvar os cookies retornados em um arquivo. O comando:
curl -c "C:\Cookie" "http://192.168.0.181/SysCgi/Login.cgi?Username=Admin&Password=Admin&Action=Login"
Faça login no sistema com credenciais Admin:Admin, salvando os cookies retornados no arquivo C:\Cookie. Agora se fornecermos o arquivo cookie aos comandos cURL, o sistema reconhecerá o usuário e habilitará o acesso. Supondo que nossa página Values.htm agora é movido para a pasta C:\Web\webpages do sistema, aqui poderíamos acessá-lo com o comando:
curl -b "C:\Cookie" "http://192.168.0.181/webpages/Values.htm?UINT+10=8&UINT+12=20"
Nos vários comandos podemos adicionar o parâmetro -v se quisermos ter um retorno verbose da operação realizada.
A autenticação tem uma vida útil no sistema, portanto, se você continuar logando, a vida é atualizada automaticamente, se não houver logins após cerca de 1 minuto, a sessão expira e você precisa fazer login novamente.
Janeiro 12, 2023 em 9: 02 am #69236ChiaraparticipanteObrigado pelo exemplo e pelos esclarecimentos, então a autenticação só surte efeito na leitura, não seria mais correto também ignorar as requisições para realizar a alteração de valor caso você não esteja autenticado?
Janeiro 12, 2023 em 4: 00 pm #69245ChiaraparticipantePosso pedir a sintaxe correta para usar nos arquivos htm para ler o status OUTPUT?
"DO1": <!--["%d", BOOL, QX0.1]-->
O tag DO1 com tipo: BOOL e endereço %QX0.1 no programa plc mostra o status corretamente, enquanto no html o valor está vazio.
Janeiro 12, 2023 em 6: 22 pm #69250Sergio BertanaAdministrador do fórumDa página da web você não pode acessar a E/S do sistema você só pode acessar variáveis alocadas no DB100.
Portanto, se você deseja ler as entradas ou definir as saídas, deve alocar variáveis BOOL em DB100 e, em seguida, com uma escada ou programa ST, copiar o estado das E/S físicas nas variáveis alocadas.
Janeiro 13, 2023 em 8: 43 am #69264ChiaraparticipanteObrigado pela resposta, mas o status pode ser lido com:
"PLC_DO" : [<!--[OSID_PLC_DO_ALL]-->] "PLC_DI" : [<!--[OSID_PLC_DI_ALL]-->]
Janeiro 13, 2023 em 11: 04 am #69285Sergio BertanaAdministrador do fórumAs TAGs “OSID_xxxx” são TAGs que usamos para gerenciar as páginas da web do nosso sistema.
Eles não são documentados enquanto trabalham desaconselhamos o seu uso porque isso nos permite modificar sua funcionalidade a nosso critério, sem afetar o uso dos clientes.
-
autorPublique
- Você deve estar logado para responder a este tópico.