Shutdown Script

From NURDspace
Revision as of 22:16, 7 March 2019 by Invict (talk | contribs)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Shutdown Script
Shutdown.png
Participants
Skills Python, Linux
Status Finished
Niche
Purpose Saving energy and money
Tool No
Location
Cost
Tool category

Shutdown Script

Shutdown.png {{#if:No | [[Tool Owner::{{{ProjectParticipants}}} | }} {{#if:No | [[Tool Cost::{{{Cost}}} | }}

A script that shuts PC's down on the space when space state is off.

It checks space status on MQTT and shuts machine down if space is closed.

  • Make sure you have paho installed.
apt install python-pip
pip install paho-mqtt
  • Log in as root and access root folder.
sudo -s
cd /root/
  • Enter crontab.
crontab -e
  • Add a cronjob on the last line with the location of the script file.
* * * * *  python /home/user/space_status_shutdown.py

The Script

Make sure the file has a .py extension.

#!/usr/bin/env python

#2019 The_Niz

#checks space status and shuts machine down if space is closed


import paho.mqtt.client as mqtt
import os 

# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, flags, rc):

    if rc==0:

        client.connected_flag=True #set flag

        print("Connected with result code "+str(rc))

    else:

        print("Bad connection Returned code=",rc)

        client.loop_stop()

        client.disconnect()

    client.subscribe("space/state")

# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):

    print(msg.topic+" "+str(msg.payload))

    if msg.payload=="False":

        print("Space is uit")

        os.system('sudo /bin/systemctl poweroff')

    else:

        print("Space is aan")

    client.loop_stop()

    client.disconnect()


client = mqtt.Client()

client.on_connect = on_connect

client.on_message = on_message

client.connect("arbiter.vm.nurd.space", 1883, 60)

client.loop_forever()