MATT62000 Posté(e) le 22 juin 2023 Signaler Posté(e) le 22 juin 2023 Bonjour, J'ai trouvé un script bash fonctionnel et voudrait le transcrire en lua Hormis la transcription des variables et des commentaires je sèche pour les curl et le reste Si quelqu'un a une idée... D'avance, merci pve="ADRESSEIP" node="NOEUD" port=":8006" vmid="VMID" #API info apiu="USER@pam" apip="PASSWORD" url_base="https://$pve$port/api2/json" # this is where you put what ever you want do # https://pve.proxmox.com/pve-docs/api-viewer/ url_end="nodes/$node/qemu/$vmid/status/start" urlqr="$url_base/$url_end" urltk="$url_base/access/ticket" ticket=`curl --insecure --data "username=$apiu&password=$apip" $urltk` # Grab cookie and token from the ticket data cookieid=`echo $ticket | tr -t '"' '\n' | grep "PVE:$apiu"` cookie="PVEAuthCookie=$cookieid" ticketid=`echo $cookie | awk -F ':' '{ print $3 }'` tokenid=`echo $ticket | tr -t '"' '\n' | grep $ticketid | grep -v PVE` token="CSRFPreventionToken:$tokenid" #proxmox api query curl --insecure --cookie $cookie --header $token -X POST "$urlqr"
Lazer Posté(e) le 24 juin 2023 Signaler Posté(e) le 24 juin 2023 Il faut utiliser net.HTTPClient, voir le tuto : Je vois que tu veux faire 2 requêtes à la suite (il y a 2 commandes curl), il faudra donc imbriquer les requêtes, mon tuto explique justement les notions d'asynchronisme à comprendre. Et il faudra mettre les cookies, token, headers, et tout ça dans la table options de la requête.
MATT62000 Posté(e) le 24 juin 2023 Auteur Signaler Posté(e) le 24 juin 2023 Bonsoir Lazer et merci pour ton implication J'ai suivi le tuto que tu as posté. Pour essayer la première requète de demande de ticket, j'ai créé un VD et dans le bouton j'ai repris le spript pour une requete get en y insérant mon url. Par contre je ne sais pas ou j'insère mes login et password Dans le debug, j'ai une erreur sur la ligne 1. Je ne comprends pas, faut-il créer une variable globale? local http = net.HTTPClient() http:request("https://192.168.7.127:8006/api2/json/access/ticket", { success = function(response) if response.status == 200 then print('OK, réponse : '.. response.data) else print("Erreur : status=" .. tostring(response.status)) end end, error = function(err) print("Erreur : " .. err) end, options = { method = 'GET' } }) [ERROR] 22:56:39: line 1: attempt to index global 'net' (a nil value)
Lazer Posté(e) le 25 juin 2023 Signaler Posté(e) le 25 juin 2023 Ah je n'avais pas fait attention, si tu es encore sur HC2, alors ça n'est pas possible dans un VD. Tu pourras uniquement le faire dans une scène. Donc si tu as un VD, il faut que le bouton lance l'exécution de la scène qui fera le job. Pour info dans les VD c'était net.FHTTP() qu'il fallait utiliser, mais ça ne permet pas de manipuler les headers des requêtes, donc tu ne pourras pas récupérer ni envoyer ton cookie. Ultra limité.
MATT62000 Posté(e) le 27 juin 2023 Auteur Signaler Posté(e) le 27 juin 2023 Si j'ai bien compris, pour gérer le monitoring (surtout le démarrage) des VM Proxmox, il faut: - Soit acquérir une box HC3. - Soit bidouiller avec des scènes sur une HC2 Encore merci à Lazer pour ton éclairage sur le sujet.
Lazer Posté(e) le 27 juin 2023 Signaler Posté(e) le 27 juin 2023 Oui effectivement. Malheureusement les VD sur la HC2 sont super limités, ça a toujours été son plus gros défaut à mon avis. (les QuickApps sur HC3 corrigent quasiment tous les défauts des VD.... bon ça ne t'aide pas en disant ça....) Après on s'en sort quand même, perso j'avais 2 ou 3 VD qui utilisaient une scène externe pour gérer les requêtes HTTP évoluées.
Messages recommandés