Shutdown Script: Difference between revisions

From NURDspace
No edit summary
No edit summary
(8 intermediate revisions by the same user not shown)
Line 2: Line 2:
|Name=Shutdown Script
|Name=Shutdown Script
|Skills=Python, Linux,
|Skills=Python, Linux,
|Status=Finished
|Purpose=Saving energy and money
|Picture=Shutdown.png
|Tool=No
|Tool=No
}}
}}
A script that shuts PC's down on the space.
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.
* Make sure you have paho installed.
Line 12: Line 17:
  sudo -s
  sudo -s
  cd /root/
  cd /root/
* Enter crontab job.
* Enter crontab.
  crontab -e
  crontab -e
* Add a crontab job on the last line.  
* Add a cronjob on the last line with the location of the script file.  
  * * * * *  python /home/user/space_status_shutdown.py
  * * * * *  python /home/user/space_status_shutdown.py


==The Script==
==The Script==
Make sure the file has a .py extension.


<pre><nowiki>
<pre><nowiki>

Revision as of 22:16, 7 March 2019

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()