]>
Commit | Line | Data |
---|---|---|
1 | #!/bin/bash | |
2 | ||
3 | set -e | |
4 | ||
5 | # needs pve-manager >= 3.1-44 | |
6 | ||
7 | usage() { | |
8 | echo "Usage: $0 [-u <string>] [-p <string>] vmid [node [proxy]]" | |
9 | echo | |
10 | echo "-u username. Default root@pam" | |
11 | echo "-p password. Default ''" | |
12 | echo | |
13 | echo "vmid: id for VM" | |
14 | echo "node: Proxmox cluster node name" | |
15 | echo "proxy: DNS or IP (use <node> as default)" | |
16 | exit 1 | |
17 | } | |
18 | ||
19 | PASSWORD="" | |
20 | USERNAME="" | |
21 | ||
22 | while getopts ":u:p:" o; do | |
23 | case "${o}" in | |
24 | u) | |
25 | USERNAME="${OPTARG}" | |
26 | ;; | |
27 | p) | |
28 | PASSWORD="${OPTARG}" | |
29 | ;; | |
30 | *) | |
31 | usage | |
32 | ;; | |
33 | esac | |
34 | done | |
35 | ||
36 | shift $((OPTIND-1)) | |
37 | ||
38 | if [[ -z "$PASSWORD" ]]; then | |
39 | PASSWORD="" | |
40 | fi | |
41 | if [[ -z "$USERNAME" ]]; then | |
42 | USERNAME='root@pam' | |
43 | fi | |
44 | ||
45 | DEFAULTHOST="$(hostname -f)" | |
46 | ||
47 | # select VM | |
48 | [[ -z "$1" ]] && usage | |
49 | VMID="$1" | |
50 | ||
51 | #[[ -z "$2" ]] && usage | |
52 | NODE="${2:-$DEFAULTHOST}" | |
53 | ||
54 | if [[ -z "$3" ]]; then | |
55 | PROXY="$NODE" | |
56 | else | |
57 | PROXY="$3" | |
58 | fi | |
59 | ||
60 | NODE="${NODE%%\.*}" | |
61 | ||
62 | DATA="$(curl -f -s -S -k --data-urlencode "username=$USERNAME" --data-urlencode "password=$PASSWORD" "https://$PROXY:8006/api2/json/access/ticket")" | |
63 | ||
64 | echo "AUTH OK" | |
65 | ||
66 | TICKET="${DATA//\"/}" | |
67 | TICKET="${TICKET##*ticket:}" | |
68 | TICKET="${TICKET%%,*}" | |
69 | TICKET="${TICKET%%\}*}" | |
70 | ||
71 | CSRF="${DATA//\"/}" | |
72 | CSRF="${CSRF##*CSRFPreventionToken:}" | |
73 | CSRF="${CSRF%%,*}" | |
74 | CSRF="${CSRF%%\}*}" | |
75 | ||
76 | 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 | |
77 | ||
78 | exec remote-viewer spiceproxy |