add root reboot command

This commit is contained in:
2026-03-19 16:25:55 +07:00
parent 19c1ebed18
commit dbd73958cf
2 changed files with 73 additions and 5 deletions

View File

@@ -157,19 +157,41 @@ function check_router_once(ip::AbstractString; timeout=TIMEOUT_SECS)
end end
end end
# Check if running as root
function is_root()::Bool
try
result = read(`whoami`, String)
return strip(result) == "root"
catch
return false
end
end
# Reboot command selection # Reboot command selection
# Return program and separate args as plain strings # Return program and separate args as plain strings
function reboot_command() function reboot_command()
if Sys.iswindows() if Sys.iswindows()
return ("/usr/bin/cmd", "/C", "shutdown /r /t 0") return ("/usr/bin/cmd", "/C", "shutdown /r /t 0")
elseif Sys.isapple() elseif Sys.isapple()
if is_root()
return ("/sbin/reboot")
else
return ("/usr/bin/sudo", "shutdown", "-r", "now") return ("/usr/bin/sudo", "shutdown", "-r", "now")
end
elseif Sys.islinux() elseif Sys.islinux()
if is_root()
if isfile("/bin/systemctl")
return ("/bin/systemctl", "reboot")
else
return ("/usr/sbin/reboot")
end
else
if isfile("/bin/systemctl") || isfile("/usr/bin/systemctl") if isfile("/bin/systemctl") || isfile("/usr/bin/systemctl")
return ("/usr/bin/sudo", "systemctl", "reboot") return ("/usr/bin/sudo", "systemctl", "reboot")
else else
return ("/usr/bin/sudo", "reboot") return ("/usr/bin/sudo", "reboot")
end end
end
else else
return nothing return nothing
end end

View File

@@ -25,3 +25,49 @@
[2026-03-11T17:37:15.954] Starting check loop. Checking router 192.168.88.1 every 60 seconds. [2026-03-11T17:37:15.954] Starting check loop. Checking router 192.168.88.1 every 60 seconds.
[2026-03-11T20:38:46.720] Starting check loop. Checking router 192.168.88.1 every 60 seconds. [2026-03-11T20:38:46.720] Starting check loop. Checking router 192.168.88.1 every 60 seconds.
[2026-03-11T20:50:40.732] Starting check loop. Checking router 192.168.88.1 every 60 seconds. [2026-03-11T20:50:40.732] Starting check loop. Checking router 192.168.88.1 every 60 seconds.
[2026-03-12T18:00:51.749] Starting check loop. Checking router 192.168.88.1 every 60 seconds.
[2026-03-18T15:31:58.643] Starting check loop. Checking router 192.168.88.1 every 60 seconds.
[2026-03-19T15:08:25.431] 192.168.88.1 is unreachable (last result: ProcessFailedException(Base.Process[Process(`ping -c 1 -W 30 192.168.88.1`, ProcessExited(1))])). Consecutive fails: 1/3.
[2026-03-19T15:12:34.906] 192.168.88.1 is unreachable (last result: ProcessFailedException(Base.Process[Process(`ping -c 1 -W 30 192.168.88.1`, ProcessExited(1))])). Consecutive fails: 2/3.
[2026-03-19T15:16:44.259] 192.168.88.1 is unreachable (last result: ProcessFailedException(Base.Process[Process(`ping -c 1 -W 30 192.168.88.1`, ProcessExited(1))])). Consecutive fails: 3/3.
[2026-03-19T15:16:44.266] Executing reboot command: /usr/bin/sudo systemctl reboot
[2026-03-19T15:16:44.304] Failed to execute reboot command: Base.IOError("could not spawn `/usr/bin/sudo systemctl reboot`: no such file or directory (ENOENT)", -2)
[2026-03-19T15:16:44.305] Reboot attempt failed; will retry after next interval.
[2026-03-19T15:20:53.852] 192.168.88.1 is unreachable (last result: ProcessFailedException(Base.Process[Process(`ping -c 1 -W 30 192.168.88.1`, ProcessExited(1))])). Consecutive fails: 4/3.
[2026-03-19T15:20:53.853] Executing reboot command: /usr/bin/sudo systemctl reboot
[2026-03-19T15:20:53.853] Failed to execute reboot command: Base.IOError("could not spawn `/usr/bin/sudo systemctl reboot`: no such file or directory (ENOENT)", -2)
[2026-03-19T15:20:53.853] Reboot attempt failed; will retry after next interval.
[2026-03-19T15:25:00.572] 192.168.88.1 is unreachable (last result: ProcessFailedException(Base.Process[Process(`ping -c 1 -W 30 192.168.88.1`, ProcessExited(1))])). Consecutive fails: 5/3.
[2026-03-19T15:25:00.573] Executing reboot command: /usr/bin/sudo systemctl reboot
[2026-03-19T15:25:00.573] Failed to execute reboot command: Base.IOError("could not spawn `/usr/bin/sudo systemctl reboot`: no such file or directory (ENOENT)", -2)
[2026-03-19T15:25:00.574] Reboot attempt failed; will retry after next interval.
[2026-03-19T15:29:10.082] 192.168.88.1 is unreachable (last result: ProcessFailedException(Base.Process[Process(`ping -c 1 -W 30 192.168.88.1`, ProcessExited(1))])). Consecutive fails: 6/3.
[2026-03-19T15:29:10.084] Executing reboot command: /usr/bin/sudo systemctl reboot
[2026-03-19T15:29:10.084] Failed to execute reboot command: Base.IOError("could not spawn `/usr/bin/sudo systemctl reboot`: no such file or directory (ENOENT)", -2)
[2026-03-19T15:29:10.084] Reboot attempt failed; will retry after next interval.
[2026-03-19T15:33:19.474] 192.168.88.1 is unreachable (last result: ProcessFailedException(Base.Process[Process(`ping -c 1 -W 30 192.168.88.1`, ProcessExited(1))])). Consecutive fails: 7/3.
[2026-03-19T15:33:19.475] Executing reboot command: /usr/bin/sudo systemctl reboot
[2026-03-19T15:33:19.475] Failed to execute reboot command: Base.IOError("could not spawn `/usr/bin/sudo systemctl reboot`: no such file or directory (ENOENT)", -2)
[2026-03-19T15:33:19.475] Reboot attempt failed; will retry after next interval.
[2026-03-19T15:37:28.886] 192.168.88.1 is unreachable (last result: ProcessFailedException(Base.Process[Process(`ping -c 1 -W 30 192.168.88.1`, ProcessExited(1))])). Consecutive fails: 8/3.
[2026-03-19T15:37:28.886] Executing reboot command: /usr/bin/sudo systemctl reboot
[2026-03-19T15:37:28.887] Failed to execute reboot command: Base.IOError("could not spawn `/usr/bin/sudo systemctl reboot`: no such file or directory (ENOENT)", -2)
[2026-03-19T15:37:28.887] Reboot attempt failed; will retry after next interval.
[2026-03-19T15:41:38.214] 192.168.88.1 is unreachable (last result: ProcessFailedException(Base.Process[Process(`ping -c 1 -W 30 192.168.88.1`, ProcessExited(1))])). Consecutive fails: 9/3.
[2026-03-19T15:41:38.215] Executing reboot command: /usr/bin/sudo systemctl reboot
[2026-03-19T15:41:38.215] Failed to execute reboot command: Base.IOError("could not spawn `/usr/bin/sudo systemctl reboot`: no such file or directory (ENOENT)", -2)
[2026-03-19T15:41:38.215] Reboot attempt failed; will retry after next interval.
[2026-03-19T15:45:47.554] 192.168.88.1 is unreachable (last result: ProcessFailedException(Base.Process[Process(`ping -c 1 -W 30 192.168.88.1`, ProcessExited(1))])). Consecutive fails: 10/3.
[2026-03-19T15:45:47.555] Executing reboot command: /usr/bin/sudo systemctl reboot
[2026-03-19T15:45:47.556] Failed to execute reboot command: Base.IOError("could not spawn `/usr/bin/sudo systemctl reboot`: no such file or directory (ENOENT)", -2)
[2026-03-19T15:45:47.556] Reboot attempt failed; will retry after next interval.
[2026-03-19T15:49:57.051] 192.168.88.1 is unreachable (last result: ProcessFailedException(Base.Process[Process(`ping -c 1 -W 30 192.168.88.1`, ProcessExited(1))])). Consecutive fails: 11/3.
[2026-03-19T15:49:57.051] Executing reboot command: /usr/bin/sudo systemctl reboot
[2026-03-19T15:49:57.052] Failed to execute reboot command: Base.IOError("could not spawn `/usr/bin/sudo systemctl reboot`: no such file or directory (ENOENT)", -2)
[2026-03-19T15:49:57.052] Reboot attempt failed; will retry after next interval.
[2026-03-19T15:54:06.519] 192.168.88.1 is unreachable (last result: ProcessFailedException(Base.Process[Process(`ping -c 1 -W 30 192.168.88.1`, ProcessExited(1))])). Consecutive fails: 12/3.
[2026-03-19T15:54:06.520] Executing reboot command: /usr/bin/sudo systemctl reboot
[2026-03-19T15:54:06.553] Failed to execute reboot command: Base.IOError("could not spawn `/usr/bin/sudo systemctl reboot`: no such file or directory (ENOENT)", -2)
[2026-03-19T15:54:06.554] Reboot attempt failed; will retry after next interval.
[2026-03-19T15:58:26.336] Starting check loop. Checking router 192.168.88.1 every 60 seconds.
[2026-03-19T15:58:26.462] 192.168.88.1 is reachable; resetting consecutive failure counter.