62 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
VM=openbsd.codevoid.de
 | 
						|
 | 
						|
restore() {
 | 
						|
    [ -z "${ID}" ] && exit 2
 | 
						|
    hcloud server rebuild \
 | 
						|
        --image ${ID} ${VM}
 | 
						|
    sleep 2
 | 
						|
    hcloud server poweron ${VM}
 | 
						|
}
 | 
						|
delete() {
 | 
						|
    [ -z "${ID}" ] && exit 2
 | 
						|
    printf "Selected:\n%s - %s" "${ID}" "${DESCR}"
 | 
						|
    printf "Are you sure [y/N]? "
 | 
						|
    read -r _sure
 | 
						|
    case $_sure in
 | 
						|
        [yY]) hcloud image delete "${ID}"; ;;
 | 
						|
    esac
 | 
						|
}
 | 
						|
 | 
						|
save() {
 | 
						|
    printf "Description: "
 | 
						|
    read -r _desc
 | 
						|
    hcloud server create-image ${VM} \
 | 
						|
        --type snapshot \
 | 
						|
        --description "${_desc}"
 | 
						|
    sleep 2
 | 
						|
    hcloud server poweron ${VM}
 | 
						|
}
 | 
						|
 | 
						|
list() {
 | 
						|
    hcloud image list \
 | 
						|
        -o columns=id,description \
 | 
						|
        -o noheader \
 | 
						|
        -t snapshot
 | 
						|
}
 | 
						|
 | 
						|
console() {
 | 
						|
    hcloud server request-console ${VM}
 | 
						|
}
 | 
						|
 | 
						|
get_info() {
 | 
						|
    SEL=$(list | fzf)
 | 
						|
    [ -z "${SEL}" ] && exit 2
 | 
						|
    ID="$(echo "$SEL" | cut -d" " -f1)"
 | 
						|
    DESCR="$(echo "$SEL" | cut -d" " -f2- | sed 's/^ *//')"
 | 
						|
}
 | 
						|
 | 
						|
# MAIN PROGRAM
 | 
						|
ACTION="$(printf "quit\nturn vm off\nturn vm on\nget console\ndelete snapshot\ncreate snapshot\nrestore vm" | fzf --header="Action for ${VM}")"
 | 
						|
 | 
						|
case $ACTION in
 | 
						|
    delete*)  get_info && delete; ;;
 | 
						|
    restore*) get_info && restore; ;;
 | 
						|
    create*)  save; ;;
 | 
						|
    *console) console; ;;
 | 
						|
    turn*on)  hcloud server poweron ${VM}; exit 0; ;;
 | 
						|
    turn*off) hcloud server poweroff ${VM}; exit 0; ;;
 | 
						|
esac
 | 
						|
 |