OUARZA
Février 7, 2024, 9:47
1
Bonsoir à tous,
J’ai un problème avec un bloc code qui fonctionnait jusqu’à maintenant…
Le résultat de $json est vide.
$url = 'https://192.168.1.27/cgi-bin/api.cgi?cmd=Login';
$username = 'XXXXXXX';
$password ='MxA5-XXXXXXXXXXXXXXXX';
$payload = '
[
{ "cmd":"Login",
"param":{ "User":
{ "Version": "0",
"userName":"'.$username.'",
"password":"'.$password.'"
}
}
}
]
';
$json = shell_exec('curl -s -k -X POST -H "Content-Type: application/json" -d \'' . $payload . '\' ' . $url);
$scenario->setLog("Json : ".$json);
$data = json_decode($json, true);
$token = $data[0]['value']['Token']['name'];
$scenario->setLog("Token : ".$token);
$tags['#token#'] = $token;
Log :
[2024-02-07 21:58:12][SCENARIO] -- Start : Scenario execute automatiquement sur programmation.
[2024-02-07 21:58:13][SCENARIO] - Exécution du sous-élément de type [condition] : if (strtotime('+0 day') - variable(Date_Token_Reolink)) >= 33
[2024-02-07 21:58:13][SCENARIO] Evaluation de la condition : [(1707339493 - 1707339433) >= 33] = Vrai
[2024-02-07 21:58:13][SCENARIO] - Exécution du sous-élément de type [action] : then
[2024-02-07 21:58:13][SCENARIO] Exécution d'un bloc élément : 1597
[2024-02-07 21:58:13][SCENARIO] - Exécution du sous-élément de type [action] : code
[2024-02-07 21:58:13][SCENARIO] Exécution d'un bloc code
[2024-02-07 21:58:13][SCENARIO] Json :
[2024-02-07 21:58:13][SCENARIO] Token :
La même commande dans postman me donne bien un résultat.
On dirait que la commande shell_exec est cassée.
Pouvez vous m’aider ?
Merci
OUARZA
Février 8, 2024, 7:43
2
Bonjour,
J’ai pensé à un problème de droit, alors j’ai fait ça, mais sans succès
sudo su -
chmod -R 775 /var/www/html
chown -R www-data:www-data /var/www/html
J’ai trouvé cela dans les logs des scénarios :
0999|sh: 1: curl: not found
root@raspberrypi:~# apt install php-curl
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
php-curl est déjà la version la plus récente (2:7.3+69)
Bon, finalement j’ai trouvé, j’ai installé curl via apt-get install curl.
Ai-je bien fait ?
Merci
Mathieu
jpty
Février 8, 2024, 8:39
3
Bonjour,
Oui, c’est la commande UNIX curl qui manquait. 0999|sh: 1: curl: not found
La requête peut aussi se faire avec la commande PHP curl sans utiliser shell_exec.
https://www.php.net/manual/fr/book.curl.php
OUARZA
Février 8, 2024, 11:16
4
Hello,
Merci.
Je me demande si la suppression n’est pas liée à la mise à jour foireuse de Monitoring.
@jpty c’est la commande curl_exec ?
Du coup ça serait ça :
$json = curl_exec('-s -k -X POST -H "Content-Type: application/json" -d \'' . $payload . '\' ' . $url);
Mathieu
jpty
Février 8, 2024, 1:15
5
Un plugin ne doit pas désinstaller les paquets de l’OS qu’il aurait installés.
Les paquets sont partagés par tout le monde. Un plugin ne peut pas savoir s’il est le seul à l’utiliser.
Avec curl_exec, c’est un peu plus compliqué.
Voir les exemples d’utilisation là: PHP: curl_exec - Manual
Elle correspond à quoi l’url que vous interrogez ?
Un autre exemple ici : File_put_contents - #2 par jpty
OUARZA
Février 8, 2024, 1:35
6
C’est un script qui récupère des informations sur une caméra.