From 74dfc74dd2659c269aff5aaadb174216ba86492a Mon Sep 17 00:00:00 2001 From: mofeng-git Date: Fri, 4 Oct 2024 15:46:51 +0000 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20KVM=20=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E5=99=A8=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/build_img.sh | 1 + build/init.sh | 1 + configs/kvmd/kvm_input.sh | 32 ++++++++++++++++++++++++++++++++ configs/kvmd/override.yaml | 24 ++++++++++++++++++++++-- 4 files changed, 56 insertions(+), 2 deletions(-) create mode 100755 configs/kvmd/kvm_input.sh diff --git a/build/build_img.sh b/build/build_img.sh index 05f4ce82..7aaa9f39 100644 --- a/build/build_img.sh +++ b/build/build_img.sh @@ -89,6 +89,7 @@ sudo chroot --userspec "root:root" $ROOTFS bash -c " \ #服务自启 sudo chroot --userspec "root:root" $ROOTFS bash -c " \ cat /One-KVM/configs/os/sudoers/v2-hdmiusb >> /etc/sudoers \ + && cat /One-KVM/configs/os/udev/v2-hdmiusb-generic.rules > /etc/udev/rules.d/99-kvmd.rules \ && echo 'libcomposite' >> /etc/modules \ && mv /usr/local/bin/kvmd* /usr/bin \ && cp /One-KVM/configs/os/services/* /etc/systemd/system/ \ diff --git a/build/init.sh b/build/init.sh index 1df396ac..18cdbe8f 100755 --- a/build/init.sh +++ b/build/init.sh @@ -14,6 +14,7 @@ if [ ! -f /etc/kvmd/.init_flag ]; then && mv /etc/kvmd_backup/* /etc/kvmd/ \ && touch /etc/kvmd/.docker_flag \ && sed -i 's/localhost.localdomain/docker/g' /etc/kvmd/meta.yaml \ + && sed -i 's/localhost/localhost:4430/g' /etc/kvmd/kvm_input.sh \ && /usr/share/kvmd/kvmd-gencert --do-the-thing \ && /usr/share/kvmd/kvmd-gencert --do-the-thing --vnc \ || echo -e "${RED}One-KVM config moving and self-signed SSL certificates init failed.${NC}" diff --git a/configs/kvmd/kvm_input.sh b/configs/kvmd/kvm_input.sh new file mode 100755 index 00000000..e907d7ca --- /dev/null +++ b/configs/kvmd/kvm_input.sh @@ -0,0 +1,32 @@ +#!/bin/bash +# Written by @srepac FILENAME: input.sh +# Input switcher script for use with KVM switches that use CTRL+CTRL+# +# ... pass in # into the script +# +usage() { + echo "usage: $0 <#> where # is the input number on the KVM switch" + exit 1 +} +password=admin + +#HOTKEY="ScrollLock" +HOTKEY="ControlLeft" + +if [[ "$1" == "" ]]; then + usage +else + NUM="$1" +fi + +if [[ "$2" == "" ]]; then + IP="localhost" +else + IP="$2" +fi + +OSD=$( echo $HOTKEY | sed -e 's/ControlLeft/CTRL/g' ) +echo "Sending $OSD + $OSD + $NUM to $IP" + +curl -X POST -k -u admin:$password "https://$IP/api/hid/events/send_key?key=$HOTKEY" 2> /dev/null +curl -X POST -k -u admin:$password "https://$IP/api/hid/events/send_key?key=$HOTKEY" 2> /dev/null +curl -X POST -k -u admin:$password "https://$IP/api/hid/events/send_key?key=Digit${NUM}" 2> /dev/null \ No newline at end of file diff --git a/configs/kvmd/override.yaml b/configs/kvmd/override.yaml index 18157a10..519753b3 100644 --- a/configs/kvmd/override.yaml +++ b/configs/kvmd/override.yaml @@ -59,6 +59,12 @@ kvmd: reset_press: type: cmd cmd: [/etc/kvmd/atx.sh, reset] + input1: + type: cmd + cmd: [/etc/kvmd/kvm_input.sh, 1] + input2: + type: cmd + cmd: [/etc/kvmd/kvm_input.sh, 2] scheme: wol_server1: driver: wol_server1 @@ -80,18 +86,32 @@ kvmd: pin: 0 mode: output switch: false + input1-button: + driver: input1 + pin: 0 + mode: output + switch: false + input2-button: + driver: input2 + pin: 0 + mode: output + switch: false view: header: - title: 电源管理 + title: 高级功能 table: - ["#电源管理"] - - [] - ["#短按(开/关机):", short_button|按下] - ["#长按(强制关机):", long_button|按下] - ["#重启:", reset_button|按下] - [] - ["#网络唤醒"] - ["#被控机设备", wol_server1|网络唤醒] + - [] + - ["#KVM 切换"] + - ["#HDMI 1", input1-button|切换] + - ["#HDMI 2", input2-button|切换] + vnc: keymap: /usr/share/kvmd/keymaps/ru