Update 2024-02-14 07:51 OpenBSD/amd64-x13
This commit is contained in:
158
.bin/OLD/hetzner-cli
Executable file
158
.bin/OLD/hetzner-cli
Executable file
@@ -0,0 +1,158 @@
|
||||
#!/bin/sh -e
|
||||
|
||||
SERVER= # set by set_server()
|
||||
SERVER_NAME= # set by set_server()
|
||||
ACTION= # set by set_action()
|
||||
SNAPSHOT= # set by set_snapshot()
|
||||
IMAGE= # set by set_image()
|
||||
|
||||
show_state() {
|
||||
printf "SERVER: %s\n" "$SERVER"
|
||||
printf "SERVER_NAME: %s\n" "$SERVER_NAME"
|
||||
printf "ACTION: %s\n" "$ACTION"
|
||||
printf "SNAPSHOT: %s\n" "$SNAPSHOT"
|
||||
printf "IMAGE: %s\n" "$IMAGE"
|
||||
printf "\nContinue? "
|
||||
read -r _c
|
||||
case $_c in
|
||||
[Yy]) return; ;;
|
||||
*) exit 2; ;;
|
||||
esac
|
||||
}
|
||||
|
||||
########################
|
||||
### SERVER SELECTION ###
|
||||
########################
|
||||
|
||||
set_server() {
|
||||
SERVER_LIST="$(hcloud server list \
|
||||
-o noheader \
|
||||
-o columns=id,name,status,ipv4,ipv6)"
|
||||
SERVER="$(printf '%s\n%s' \
|
||||
"$SERVER_LIST" \
|
||||
"0 create new server" \
|
||||
| fzf --tac --exact --with-nth=2.. \
|
||||
| cut -d" " -f1 \
|
||||
)"
|
||||
}
|
||||
|
||||
########################
|
||||
### ACTION SELECTION ###
|
||||
########################
|
||||
|
||||
# Format: key Description...
|
||||
ACTION_LIST="\
|
||||
create_snap Create snapshot
|
||||
delete_snap Delete snapshot
|
||||
restore_snap Restore snapshot
|
||||
on Turn on
|
||||
off Turn off
|
||||
delete_server Delete VM(!!!!)
|
||||
"
|
||||
|
||||
set_action() {
|
||||
ACTION="$(printf '%s\n' "$ACTION_LIST" \
|
||||
| fzf --tac --exact --with-nth=2.. \
|
||||
--header="Action for Server ID ${SERVER}" \
|
||||
| cut -d" " -f1 \
|
||||
)"
|
||||
}
|
||||
|
||||
##########################
|
||||
### SNAPSHOT SELECTION ###
|
||||
##########################
|
||||
# needs: SERVER
|
||||
|
||||
set_snap() {
|
||||
SNAPSHOT="$(hcloud image list \
|
||||
-o columns=id,description \
|
||||
-o noheader \
|
||||
-t snapshot \
|
||||
| fzf --tac --exact --with-nth=2.. \
|
||||
| cut -d" " -f1 \
|
||||
)"
|
||||
}
|
||||
|
||||
#######################
|
||||
### IMAGE SELECTION ###
|
||||
#######################
|
||||
|
||||
set_image() {
|
||||
IMAGE="$(hcloud image list \
|
||||
-o columns=id,description \
|
||||
-o noheader \
|
||||
-t system \
|
||||
| fzf --tac --exact --with-nth=2.. \
|
||||
| cut -d" " -f1 \
|
||||
)"
|
||||
}
|
||||
|
||||
#########################
|
||||
### CREATE NEW SERVER ###
|
||||
#########################
|
||||
# needs: SERVER=0, IMAGE
|
||||
create_server() {
|
||||
echo NOT IMPLEMENTED
|
||||
}
|
||||
|
||||
#####################
|
||||
### DELETE SERVER ###
|
||||
#####################
|
||||
# needs: SERVER=0
|
||||
delete_server() {
|
||||
echo NOT IMPLEMENTED
|
||||
}
|
||||
|
||||
#########################
|
||||
### RESTORE FROM SNAP ###
|
||||
#########################
|
||||
# needs: SERVER, SNAPSHOT
|
||||
restore_snap() {
|
||||
echo NOT IMPLEMENTED
|
||||
}
|
||||
|
||||
#######################
|
||||
### CREATE SNAPSHOT ###
|
||||
#######################
|
||||
# needs: SERVER
|
||||
create_snap() {
|
||||
echo NOT IMPLEMENTED
|
||||
}
|
||||
|
||||
#######################
|
||||
### DELETE SNAPSHOT ###
|
||||
#######################
|
||||
# needs: SERVER, SNAPSHOT
|
||||
|
||||
delete_snap() {
|
||||
echo NOT IMPLEMENTED
|
||||
}
|
||||
|
||||
|
||||
|
||||
################################
|
||||
### MAIN PROGRAM STARTS HERE ###
|
||||
################################
|
||||
|
||||
# We need a server
|
||||
set_server
|
||||
|
||||
# In case we want a new server, the action is implicit. For all other
|
||||
# cases, we ask for user input.
|
||||
if [ $SERVER -eq 0 ]; then
|
||||
ACTION=create_server
|
||||
else
|
||||
set_action
|
||||
fi
|
||||
|
||||
# Now we evaluate the action and execute the next steps
|
||||
case $ACTION in
|
||||
delete_snap) set_snap; delete_snap; ;;
|
||||
restore_snap) set_snap; restore_snap; ;;
|
||||
create_snap) create_snap; ;;
|
||||
create_server) create_server; ;;
|
||||
delete_server) delete_server; ;;
|
||||
console) hcloud server request-console ${SERVER}; ;;
|
||||
turn*on) hcloud server poweron ${SERVER}; exit 0; ;;
|
||||
turn*off) hcloud server poweroff ${SERVER}; exit 0; ;;
|
||||
esac
|
||||
Reference in New Issue
Block a user