X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=spice-example-sh;h=6fe5c1f59ba4239ff6d97d2a7ebcf69fffe93c7e;hb=11064d3263b9a3620c4ca43cded829e62b235de9;hp=45bfb131bc7e6c16fc1a4d4c893416984dff43a2;hpb=072188dcbf796bd3fe8ea3ee509390b4b3b60f2b;p=pve-manager.git diff --git a/spice-example-sh b/spice-example-sh index 45bfb131..6fe5c1f5 100755 --- a/spice-example-sh +++ b/spice-example-sh @@ -1,21 +1,78 @@ #!/bin/bash +set -e + # needs pve-manager >= 3.1-44 -USERNAME=root@pam -PASSWORD=yoursecretpassword +usage() { + echo "Usage: $0 [-u ] [-p ] 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 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 -VMID=100 +[[ -z "$1" ]] && usage +VMID="$1" + +#[[ -z "$2" ]] && usage +NODE="${2:-$DEFAULTHOST}" + +if [[ -z "$3" ]]; then + PROXY="$NODE" +else + PROXY="$3" +fi + +NODE="${NODE%%\.*}" -NODE=anodename -PROXY=anodename.domain.tld +DATA="$(curl -f -s -S -k --data-urlencode "username=$USERNAME" --data-urlencode "password=$PASSWORD" "https://$PROXY:8006/api2/json/access/ticket")" -DATA=`curl -k -d "username=$USERNAME&password=$PASSWORD" https://$PROXY:8006/api2/json/access/ticket` +echo "AUTH OK" -TICKET=`echo $DATA|sed 's/\\\\\//\//g' | sed 's/[{}]//g' | awk -v k="text" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}' | sed 's/\"\:\"/\|/g' | sed 's/[\,]/ /g' | sed 's/\"// g'|grep -w ticket| awk -F "|" '{print $2}'` +TICKET="${DATA//\"/}" +TICKET="${TICKET##*ticket:}" +TICKET="${TICKET%%,*}" +TICKET="${TICKET%%\}*}" -CSRF=`echo $DATA|sed 's/\\\\\//\//g' | sed 's/[{}]//g' | awk -v k="text" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}' | sed 's/\"\:\"/\|/g' | sed 's/[\,]/ /g' | sed 's/\"// g'|grep -w CSRFPreventionToken| awk -F "|" '{print $2}'` +CSRF="${DATA//\"/}" +CSRF="${CSRF##*CSRFPreventionToken:}" +CSRF="${CSRF%%,*}" +CSRF="${CSRF%%\}*}" -curl -k -b "PVEAuthCookie=$TICKET" -H "CSRFPreventionToken: $CSRF" https://$PROXY:8006/api2/spiceconfig/nodes/$NODE/qemu/$VMID/spiceproxy -d "proxy=$PROXY" > spiceproxy +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 -remote-viewer spiceproxy +exec remote-viewer spiceproxy