virtual-dsm/agent/agent.sh

83 lines
1.3 KiB
Bash
Raw Normal View History

2023-04-01 18:43:53 +02:00
#!/usr/bin/env bash
set -u
2023-04-17 02:27:50 +02:00
# Functions
2023-04-10 20:13:59 +02:00
function checkNMI {
2023-04-17 03:17:26 +02:00
local nmi
nmi=$(awk '/NMI/ {for (i=2; i<=NF; i++) if ($i ~ /^[0-9]+$/) {sum+=$i}} END {print sum}' /proc/interrupts)
2023-04-10 20:13:59 +02:00
2023-04-16 19:52:56 +02:00
if [ "$nmi" != "" ] && [ "$nmi" -ne "0" ]; then
2023-04-10 20:13:59 +02:00
echo "Received shutdown request through NMI.." > /dev/ttyS0
/usr/syno/sbin/synoshutdown -s > /dev/null
2023-04-17 03:13:00 +02:00
exit
2023-04-10 20:13:59 +02:00
fi
}
2023-04-17 03:13:00 +02:00
finish() {
2023-04-17 04:43:24 +02:00
echo "Shutting down Guest Agent.." > /dev/ttyS0
2023-04-17 03:13:00 +02:00
exit
}
trap finish SIGINT SIGTERM
2023-04-17 02:27:50 +02:00
# Setup serialport
2023-04-01 18:43:53 +02:00
chmod 666 /dev/ttyS0
2023-04-10 20:13:59 +02:00
checkNMI
2023-04-01 22:54:03 +02:00
2023-04-17 02:27:50 +02:00
# Install packages
first_run=false
for filename in /usr/local/packages/*.spk; do
2023-04-02 23:33:58 +02:00
if [ -f "$filename" ]; then
first_run=true
fi
done
if [ "$first_run" = true ]; then
for filename in /usr/local/packages/*.spk; do
2023-04-02 23:33:58 +02:00
if [ -f "$filename" ]; then
2023-04-02 21:38:34 +02:00
2023-04-17 04:16:48 +02:00
/usr/syno/bin/synopkg install "$filename" > /dev/ttyS0
2023-04-02 21:38:34 +02:00
2023-04-02 23:33:58 +02:00
BASE=$(basename "$filename" .spk)
2023-04-08 02:38:24 +02:00
BASE="${BASE%%-*}"
2023-04-02 21:38:34 +02:00
2023-04-17 04:16:48 +02:00
/usr/syno/bin/synopkg start "$BASE" > /dev/ttyS0
2023-04-02 21:38:34 +02:00
2023-04-02 23:33:58 +02:00
rm "$filename"
2023-04-02 23:33:58 +02:00
fi
2023-04-02 21:38:34 +02:00
done
else
2023-04-02 21:38:34 +02:00
2023-04-10 20:13:59 +02:00
sleep 5
2023-04-02 21:38:34 +02:00
fi
2023-04-17 02:27:50 +02:00
# Display message in docker log output
2023-04-08 02:41:05 +02:00
echo "-------------------------------------------" > /dev/ttyS0
2023-04-10 20:13:59 +02:00
echo " You can now login to DSM at port 5000 " > /dev/ttyS0
2023-04-08 02:41:05 +02:00
echo "-------------------------------------------" > /dev/ttyS0
2023-04-01 18:43:53 +02:00
2023-04-17 04:43:24 +02:00
# TODO: Auto-update agent
2023-04-17 02:27:50 +02:00
# Wait for NMI interrupt as a shutdown signal
2023-04-01 18:43:53 +02:00
while true; do
2023-04-10 20:13:59 +02:00
checkNMI
2023-04-17 04:43:24 +02:00
sleep 2
2023-04-01 18:43:53 +02:00
done