API Reboot der Node funktioniert nicht

tomdechain

New Member
Nov 23, 2023
6
0
1
Hallo,

ich habe bereits http-API Befehle für meine einzelnen VMs eingerichtet, aber es gelingt mir nicht, das ich auch die Node "proxmox" herunterfahre oder reboote. Ich wollte das eigentlich über dieses Skript lösen:

Code:
#!/bin/bash
# Host-Informationen
pve="proxmox.fritz.box"
node="proxmox"
port=":8006"

# API-Token-Informationen
apiToken="remote@pve!token=ABCDE"

# Basis-URL für API-Anfragen
url_base="https://$pve$port/api2/json"

# Node Neustart
url_node_action="$url_base/nodes/$node/status/reboot"

# Sendet die Anfrage an den Node

response=$(curl -sk -H "Authorization: PVEAPIToken=$apiToken" -X POST "$url_node_action" 2>&1)


Für den User und Token "remote" habe ich als Rechte auf Ebene "/" bereits "Sys.PowerMgmt" hinterlegt.

In der "Cluster Log" in der Proxmox Oberfläche passiert jedoch nichts, wenn ich das Skript ausführe.
 
Hi,

was kommt den als Response genau zurück? Am besten wäre der gesamte Output von curl -v -sk -H "Authorization: PVEAPIToken=$apiToken" -X POST "$url_node_action". Nicht vergessen evtl. den API-Token etc. zu zensieren.

Steht etwas im Syslog bzw. wird etwas geschrieben wenn das Skript ausgeführt wird?
Im UI: Node > System > System Log bzw. auf der Shell:
[S]journalctl -b[/S]

Edit: Der API-Call ist etwas falsch. Du musst im Body des POST-Requests {"command": "reboot"} mitschicken, und es nicht in der URL angeben.
Also z.B.
Code:
curl -sk -H "Authorization: PVEAPIToken=$apiToken" -H "Content-Type: application/json" --data '{"command":"reboot"}' -X POST "$url_node_action"
sollte funktionieren.
 
Last edited:
Hier der gesamte Output:

Code:
* Trying 192.168.178.13:8006...

* Connected to proxmox.fritz.box (192.168.178.13) port 8006 (#0)

* ALPN: offers h2,http/1.1

} [5 bytes data]

* TLSv1.3 (OUT), TLS handshake, Client hello (1):

} [512 bytes data]

* TLSv1.3 (IN), TLS handshake, Server hello (2):

{ [122 bytes data]

* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):

{ [6 bytes data]

* TLSv1.3 (IN), TLS handshake, Certificate (11):

{ [1291 bytes data]

* TLSv1.3 (IN), TLS handshake, CERT verify (15):

{ [264 bytes data]

* TLSv1.3 (IN), TLS handshake, Finished (20):

{ [52 bytes data]

* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):

} [1 bytes data]

* TLSv1.3 (OUT), TLS handshake, Finished (20):

} [52 bytes data]

* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384

* ALPN: server did not agree on a protocol. Uses default.

* Server certificate:

* subject: OU=PVE Cluster Node; O=Proxmox Virtual Environment; CN=proxmox.local

* start date: Nov 17 12:53:45 2023 GMT

* expire date: Nov 16 12:53:45 2025 GMT

* issuer: CN=Proxmox Virtual Environment; OU=6d204aa0-432a-4d9b-a730-8f12dee94e54; O=PVE Cluster Manager CA

* SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway.

* using HTTP/1.x

} [5 bytes data]

> POST /api2/json/nodes/proxmox/status/reboot HTTP/1.1

> Host: proxmox.fritz.box:8006

> User-Agent: curl/7.88.1

> Accept: */*

> Authorization: PVEAPIToken=remote@pve!token=ABCDE

>

{ [5 bytes data]

* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):

{ [233 bytes data]

* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):

{ [233 bytes data]

* old SSL session ID is stale, removing

{ [5 bytes data]

< HTTP/1.1 401 invalid token value!

< Cache-Control: max-age=0

< Connection: close

< Date: Mon, 25 Mar 2024 14:05:19 GMT

< Pragma: no-cache

< Server: pve-api-daemon/3.0

< Expires: Mon, 25 Mar 2024 14:05:19 GMT

<

{ [0 bytes data]

* Closing connection 0

} [5 bytes data]

* TLSv1.3 (OUT), TLS alert, close notify (256):

} [2 bytes data]

Wenig überraschend, dass in Node > System > System Log nichts geschrieben wurde.
 
Last edited:
< HTTP/1.1 401 invalid token value!
Gut, das gibt zumindest mal einen Hinweis.

Hast du den API token mal double-checked? Ob er vom Format & Inhalt richtig ist (siehe dazu Use API Token im Wiki).
Also: Der Username ist remote und der Tokenname auch token? Zur Sicherheit.
 
Hast du den API token mal double-checked? Ob er vom Format & Inhalt richtig ist (siehe dazu Use API Token im Wiki).
Also: Der Username ist remote und der Tokenname auch token? Zur Sicherheit.
Der Username ist remote und der Tokenname ist auch remote. Den API Token nutze ich 1:1 auch für die VMs.
Kann es am Ende doch etwas mit den Rechten zu tun haben? User und API Token sind jeweils identisch, was die Rechte angeht:
- Unter /vms habe ich die Rechte für VM.PowerMgmt und VM.Audit hinterlegt.
- Unter /nodes sind die Rechte für Sys.PowerMgmt hinterlegt.
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!