mirror of
				https://git.proxmox.com/git/pve-manager
				synced 2025-11-04 00:08:46 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			79 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
 | 
						|
set -e
 | 
						|
 | 
						|
# needs pve-manager >= 3.1-44
 | 
						|
 | 
						|
usage() { 
 | 
						|
    echo "Usage: $0 [-u <string>] [-p <string>] vmid [node [proxy]]"
 | 
						|
    echo
 | 
						|
    echo "-u username. Default root@pam"
 | 
						|
    echo "-p password. Default ''"
 | 
						|
    echo
 | 
						|
    echo "vmid: id for VM"
 | 
						|
    echo "node: Proxmox cluster node name"
 | 
						|
    echo "proxy: DNS or IP (use <node> as default)"
 | 
						|
    exit 1
 | 
						|
}
 | 
						|
 | 
						|
PASSWORD=""
 | 
						|
USERNAME=""
 | 
						|
 | 
						|
while getopts ":u:p:" o; do
 | 
						|
    case "${o}" in
 | 
						|
        u)
 | 
						|
            USERNAME="${OPTARG}"
 | 
						|
            ;;
 | 
						|
        p)
 | 
						|
            PASSWORD="${OPTARG}"
 | 
						|
            ;;
 | 
						|
        *)
 | 
						|
            usage
 | 
						|
            ;;
 | 
						|
    esac
 | 
						|
done
 | 
						|
 | 
						|
shift $((OPTIND-1))
 | 
						|
 | 
						|
if [[ -z "$PASSWORD" ]]; then
 | 
						|
    PASSWORD=""
 | 
						|
fi
 | 
						|
if [[ -z "$USERNAME" ]]; then
 | 
						|
    USERNAME='root@pam'
 | 
						|
fi
 | 
						|
 | 
						|
DEFAULTHOST="$(hostname -f)"
 | 
						|
 | 
						|
# select VM
 | 
						|
[[ -z "$1" ]] && usage
 | 
						|
VMID="$1"
 | 
						|
 | 
						|
#[[ -z "$2" ]] && usage
 | 
						|
NODE="${2:-$DEFAULTHOST}"
 | 
						|
 | 
						|
if [[ -z "$3" ]]; then
 | 
						|
    PROXY="$NODE"
 | 
						|
else
 | 
						|
    PROXY="$3"
 | 
						|
fi
 | 
						|
 | 
						|
NODE="${NODE%%\.*}"
 | 
						|
 | 
						|
DATA="$(curl -f -s -S -k --data-urlencode "username=$USERNAME" --data-urlencode "password=$PASSWORD" "https://$PROXY:8006/api2/json/access/ticket")"
 | 
						|
 | 
						|
echo "AUTH OK"
 | 
						|
 | 
						|
TICKET="${DATA//\"/}"
 | 
						|
TICKET="${TICKET##*ticket:}"
 | 
						|
TICKET="${TICKET%%,*}"
 | 
						|
TICKET="${TICKET%%\}*}"
 | 
						|
 | 
						|
CSRF="${DATA//\"/}"
 | 
						|
CSRF="${CSRF##*CSRFPreventionToken:}"
 | 
						|
CSRF="${CSRF%%,*}"
 | 
						|
CSRF="${CSRF%%\}*}"
 | 
						|
 | 
						|
curl -f -s -S -k -b "PVEAuthCookie=$TICKET" -H "CSRFPreventionToken: $CSRF" "https://$PROXY:8006/api2/spiceconfig/nodes/$NODE/qemu/$VMID/spiceproxy" -d "proxy=$PROXY" > spiceproxy
 | 
						|
 | 
						|
exec remote-viewer spiceproxy
 |