Public Access
Add unifi_reboot.py
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
#!/usr/bin/env python3
|
||||
import paramiko
|
||||
import datetime
|
||||
import sys
|
||||
|
||||
# File with device list: "ip user password"
|
||||
DEVICE_LIST = "/usr/local/etc/unifi-devices.txt"
|
||||
LOGFILE = "/var/log/unifi-reboot.log"
|
||||
REBOOT_CMD = "/sbin/reboot"
|
||||
|
||||
def log(message):
|
||||
timestamp = datetime.datetime.now().strftime("[%Y-%m-%d %H:%M:%S]")
|
||||
with open(LOGFILE, "a") as f:
|
||||
f.write(f"{timestamp} {message}\n")
|
||||
print(f"{timestamp} {message}")
|
||||
|
||||
def reboot_device(ip, user, password):
|
||||
log(f"Rebooting {ip} (user: {user})...")
|
||||
try:
|
||||
ssh = paramiko.SSHClient()
|
||||
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
||||
ssh.connect(ip, username=user, password=password, timeout=10)
|
||||
ssh.exec_command(REBOOT_CMD)
|
||||
ssh.close()
|
||||
log(f"SUCCESS: {ip} reboot command sent.")
|
||||
except Exception as e:
|
||||
log(f"ERROR: Failed to reboot {ip}. Reason: {e}")
|
||||
|
||||
def main():
|
||||
try:
|
||||
with open(DEVICE_LIST) as f:
|
||||
for line in f:
|
||||
parts = line.strip().split()
|
||||
if len(parts) != 3:
|
||||
continue # skip malformed lines
|
||||
ip, user, password = parts
|
||||
reboot_device(ip, user, password)
|
||||
except FileNotFoundError:
|
||||
log(f"ERROR: Device list file not found: {DEVICE_LIST}")
|
||||
sys.exit(1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user