Files
Michal 5b04d3162b fix: disable logging --host (UDP not exposed), add nomodeset + JetKVM helper
- logging --host blocks Anaconda when syslog UDP port not reachable
- nomodeset prevents amdgpu hang on SER9MAX (Radeon 780M)
- JetKVM helper script for device control (status, reboot, power)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 11:07:48 +01:00

83 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
# JetKVM helper — authenticate and interact with JetKVM device.
# Usage:
# jetkvm.sh status — check device status
# jetkvm.sh reboot — reboot the target machine via ATX
# jetkvm.sh poweron — power on via ATX short press
# jetkvm.sh poweroff — power off via ATX long press
#
# Environment:
# JETKVM_HOST — JetKVM IP (default: 192.168.3.10)
# JETKVM_PASS — device password
set -euo pipefail
HOST="${JETKVM_HOST:-192.168.3.10}"
PASS="${JETKVM_PASS:-}"
if [ -z "$PASS" ]; then
echo "ERROR: JETKVM_PASS not set" >&2
exit 1
fi
BASE="http://$HOST"
# Authenticate and get token
login() {
local resp
resp=$(curl -s -X POST "$BASE/auth/login-local" \
-H "Content-Type: application/json" \
-d "{\"password\":\"$PASS\"}" 2>&1)
local token
token=$(echo "$resp" | grep -oP '"token"\s*:\s*"[^"]*"' | head -1 | grep -oP '"[^"]*"$' | tr -d '"')
if [ -z "$token" ]; then
echo "ERROR: Login failed: $resp" >&2
exit 1
fi
echo "$token"
}
# Make authenticated request
api() {
local method="$1" path="$2" body="${3:-}"
local token
token=$(login)
if [ -n "$body" ]; then
curl -s -X "$method" "$BASE$path" \
-H "Authorization: Bearer $token" \
-H "Content-Type: application/json" \
-d "$body"
else
curl -s -X "$method" "$BASE$path" \
-H "Authorization: Bearer $token"
fi
}
case "${1:-status}" in
status)
curl -s "$BASE/device/status" 2>&1
;;
device)
api GET /device
;;
reboot)
echo "Sending ATX reset..."
api POST /device/atx/reset
;;
poweron)
echo "Sending ATX short power press..."
api POST /device/atx/power-short
;;
poweroff)
echo "Sending ATX long power press..."
api POST /device/atx/power-long
;;
*)
echo "Usage: $0 {status|device|reboot|poweron|poweroff}"
exit 1
;;
esac