Skip to content

Instantly share code, notes, and snippets.

@Xeckt
Last active June 18, 2024 14:50
Show Gist options
  • Save Xeckt/436f900e1fee0e79ac5cb73d2a97c393 to your computer and use it in GitHub Desktop.
Save Xeckt/436f900e1fee0e79ac5cb73d2a97c393 to your computer and use it in GitHub Desktop.
Small bash script to manage basic functions for the PiKVMv4 products. Feel free to take and use.
#!/bin/bash
set_edid() {
read -p "enter file location of .hex edid: " edid
if ! [ -f "$edid" ]; then
echo "edid file does not exist"
exit 1
fi
kvmd-edidconf --import="$edid"
}
reset_edid() {
_default="/usr/share/kvmd/configs.default/kvmd/edid"
read -p "select pikvm model [v0/v1/v2/v3/v4mini/v4plus]: " model
kvmd-edidconf --import="$_default/$model-hdmi.hex"
}
web_terminal() {
case "$1" in
"--disable-webterm")
systemctl disable --now kvmd-webterm
;;
"--enable-webterm")
systemctl enable --now kvmd-webterm
;;
*)
echo "unrecognised web terminal option"
;;
esac
}
oled() {
case "$1" in
"--disable-oled")
systemctl disable --now kvmd-oled kvmd-oled-reboot kvmd-oled-shutdown
kvmd-oled --height=32 --interval=0 --clear-on-exit --text=x
;;
"--enable-oled")
systemctl enable --now kvmd-oled kvmd-oled-reboot kvmd-oled-shutdown
;;
esac
}
is_rw() {
if findmnt -n -o OPTIONS / | grep -q -E "^ro,|,ro,|,ro$"; then
echo "pikvm is not in read-write mode, run command: rw"
return 1
fi
return 0
}
set_htpass() {
read -p "enter user: " user
kvmd-htpasswd set "$user"
}
get_htusers() {
kvmd-htpasswd list
}
delete_htuser() {
read -p "enter user: " user
kvmd-htpasswd del "$user"
}
create_htuser() {
read -p "enter username: " user
kvmd-htpasswd set "$user"
}
usage() {
echo
echo "------ Usage (-h|--help) ------"
echo "--disable/enable-oled disable/enable oled screen"
echo "--disable/enable-webterm disable web terminal"
echo "--reset-edid reset edid to default"
echo "--set-edid set edid to passed .hex file"
echo "--get-htusers get web users"
echo "--create-htuser create web user"
echo "--set-htpass set web user password"
echo "--delete-htuser delete a web user account"
echo "------ Usage (-h|--help)------"
echo
}
main() {
if ! is_rw; then
exit 1
fi
for i in "$@"; do
case "$i" in
"--disable-oled"|"--enable-oled")
oled $i
;;
"--disable-webterm"|"--enable-webterm")
web_terminal "$i"
;;
"--reset-edid")
reset_edid
;;
"--set-edid")
set_edid
;;
"--set-htpass")
set_htpass
;;
"--create-htuser")
create_htuser
;;
"--get-htusers")
get_htusers
;;
"--deleteht-user")
delete_htuser
;;
"-h"|"--help")
usage
;;
*)
usage
;;
esac
done
}
main "$@"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment