Last active
June 18, 2024 14:50
-
-
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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