update
This commit is contained in:
parent
4b42aa2fce
commit
e4b7f615fa
33 changed files with 543 additions and 0 deletions
109
pve-spice
Executable file
109
pve-spice
Executable file
|
|
@ -0,0 +1,109 @@
|
|||
#!/bin/bash
|
||||
|
||||
#
|
||||
# SETTINGS
|
||||
#
|
||||
# Fill the following section with your prefered settings.
|
||||
# Leaving the password field empty is much more secure. It will be prompted on the command line.
|
||||
# Alternatively create a Proxmox user with limited privileges like shown in this template.
|
||||
#
|
||||
|
||||
NODE="pve"
|
||||
VMID="$1"
|
||||
PROXY=""
|
||||
USERNAME="root@pam"
|
||||
PASSWORD="r3478eE3478"
|
||||
|
||||
#
|
||||
# INITIALIZATION
|
||||
#
|
||||
|
||||
if ! type "jq" > /dev/null; then
|
||||
echo 'Command line tool "jq" is needed. Please install.'
|
||||
fi
|
||||
|
||||
if [ -z "$PASSWORD" ]; then
|
||||
read -s -p "Password: " PASSWORD
|
||||
echo
|
||||
fi
|
||||
|
||||
if [ -z "$USERNAME" ]; then
|
||||
USERNAME=root@pam
|
||||
fi
|
||||
|
||||
if [ -z "$PROXY" ]; then
|
||||
PROXY=$NODE
|
||||
fi
|
||||
|
||||
#
|
||||
# AUTHENTICATION PROCESS
|
||||
#
|
||||
|
||||
RESPONSE=$(curl -f -s -S -k -d "username=$USERNAME&password=$PASSWORD" "https://$PROXY:8006/api2/json/access/ticket")
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "ERROR: Authentication failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
TICKET=$(echo $RESPONSE | jq -r '.data.ticket')
|
||||
CSRF=$(echo $RESPONSE | jq -r '.data.CSRFPreventionToken')
|
||||
|
||||
if [ -z "$TICKET" ] || [ -z "$CSRF" ]; then
|
||||
echo "ERROR: Could not process Authentication Ticket"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#
|
||||
# GET SPICE CONFIGURATION
|
||||
#
|
||||
|
||||
RESPONSE=$(curl -f -s -S -k -b "PVEAuthCookie=$TICKET" -H "CSRFPreventionToken: $CSRF" "https://$PROXY:8006/api2/json/nodes/$NODE/qemu/$VMID/spiceproxy" -d "proxy=$PROXY")
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "ERROR: Maybe Proxmox-API changed?"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#
|
||||
# PARSING JSON RESPONSE
|
||||
#
|
||||
|
||||
ATTENTION=$(echo $RESPONSE | jq -r '.data."secure-attention"')
|
||||
DELETE=$(echo $RESPONSE | jq -r '.data."delete-this-file"')
|
||||
PROXY=$(echo $RESPONSE | jq -r '.data.proxy')
|
||||
TYPE=$(echo $RESPONSE | jq -r '.data.type')
|
||||
CA=$(echo $RESPONSE | jq -r '.data.ca')
|
||||
FULLSCREEN=$(echo $RESPONSE | jq -r '.data."toggle-fullscreen"')
|
||||
TITLE=$(echo $RESPONSE | jq -r '.data.title')
|
||||
HOST=$(echo $RESPONSE | jq -r '.data.host')
|
||||
PASSWORD=$(echo $RESPONSE | jq -r '.data.password')
|
||||
SUBJECT=$(echo $RESPONSE | jq -r '.data."host-subject"')
|
||||
CURSOR=$(echo $RESPONSE | jq -r '.data."release-cursor"')
|
||||
PORT=$(echo $RESPONSE | jq -r '.data."tls-port"')
|
||||
|
||||
#
|
||||
# GENERATING REMOTE-VIEWER CONNECTION FILE
|
||||
#
|
||||
|
||||
TMP=$(mktemp)
|
||||
|
||||
echo "[virt-viewer]" > $TMP
|
||||
echo "secure-attention=${ATTENTION}" >> $TMP
|
||||
echo "delete-this-file=${DELETE}" >> $TMP
|
||||
echo "proxy=${PROXY}" >> $TMP
|
||||
echo "type=${TYPE}" >> $TMP
|
||||
echo "ca=${CA}" >> $TMP
|
||||
echo "toggle-fullscreen=${FULLSCREEN}" >> $TMP
|
||||
echo "title=${TITLE}" >> $TMP
|
||||
echo "host=${HOST}" >> $TMP
|
||||
echo "password=${PASSWORD}" >> $TMP
|
||||
echo "host-subject=${SUBJECT}" >> $TMP
|
||||
echo "release-cursor=${CURSOR}" >> $TMP
|
||||
echo "tls-port=${PORT}" >> $TMP
|
||||
|
||||
#
|
||||
# STARTING REMOTE-VIEWER
|
||||
#
|
||||
|
||||
remote-viewer -f $TMP &
|
||||
Loading…
Add table
Add a link
Reference in a new issue