Reboot a Raspberry Pi

#!/usr/bin/env python
# reboot_pi.py

import os
import sys
import subprocess

#output to log
sys.stdout = open('/etc/pyscriptlog.txt', 'w')
print(sys.argv[1:])

#check connectd installer package
def check_connectd():
    if(os.path.isfile("/usr/bin/connectd_task_notify") and os.path.isfile("/usr/bin/task_notify.sh")):
        print("target device running both connectd and weavedconnectd")
        return("/usr/bin/connectd_task_notify")

    elif (os.path.isfile("/usr/bin/connectd_task_notify")):
        print("target device running connectd")
        return("/usr/bin/connectd_task_notify")

    elif(os.path.isfile("/usr/bin/task_notify.sh")):
        print("target device running weavedconnectd")
        return("/usr/bin/task_notify.sh")

    else:
        print("target device has neither...how is that possible?")
        exit()

#necessary for utilities
clear = " "
finalize_job = "Job Complete"
task_id = sys.argv[1]
api = sys.argv[2]
task_notifier = check_connectd()
columns = ['a','b','c','d','e']

print(task_id)
#clear status columns
for column in columns:
    print(task_id)
    subprocess.Popen([task_notifier, column, task_id, api, clear]).wait()

#create python script that tells connectd job is done and sends message to user then deletes itself
with open(os.path.join("/etc", "boot.py"), "w+") as boot_python_script:
    boot_python_script.write("#!/usr/bin/env python\n")
    boot_python_script.write("import os\n")
    boot_python_script.write("import subprocess\n")
    boot_python_script.write('subprocess.Popen(["{}", "a", "{}", "{}", "Pi Rebooted!"]).wait()\n'.format(task_notifier, task_id, api))
    boot_python_script.write('subprocess.Popen(["{}", "1", "{}", "{}", "{}"]).wait()\n'.format(task_notifier, task_id, api, finalize_job))
    boot_python_script.write('os.remove(__file__)\n')

#write lines to rc.local which will run at startup 
with open("/etc/rc.local", "w+") as boot_shell_script:
    boot_shell_script.write('#!/bin/sh -e\n')
    boot_shell_script.write('sleep 60\n')
    boot_shell_script.write('sudo python /etc/boot.py &\n')
    boot_shell_script.write('exit 0')

#set permissions to boot.py
subprocess.Popen(["sudo", "chmod", "+x", "/etc/boot.py"]).wait()

#reboot device
subprocess.Popen([task_notifier, "a", task_id, api, "Rebooting Pi..."]).wait()
subprocess.Popen(["sudo", "reboot", "now"]).wait()
Was this article helpful?
0 out of 0 found this helpful