Aller au contenu
MATT62000

Script démarrage VM Proxmox

Recommended Posts

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"

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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)

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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é.

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

×