Faite parler votre serveur sur Twitter avec Twython

rp_ubuntu-logo-300x180.jpg

Si vous possédez un serveur et souhaitez le suivre simplement Twython offre la possibilité de faire Twitter votre machine simplement via des scripts Python. Dans ce billet je vais détailler une procédure simple et automatisé afin de faire twitter à votre serveur des informations comme son « uptime ».
Pour le billet je serai dans un environnement virtualisé sous Ubuntu X64 14.04.

On débute par installer les pré-requis,

sudo apt-get install python-setuptools python-dev libffi-dev libssl-dev python-pip
sudo pip install twython
sudo pip install requests[security]

Afin de faire fonctionner la procédure vous devez, créez un compte mail afin d’ouvrir un compte Twitter au nom que vous le désirez puis rendez vous sur la page de gestion des applications Twitter afin de créer la votre.

Lorsque votre application est validée rendez-vous sur le menu, dans l’onglet « Permissions » vérifiez que « Read&Write » est bien coché. Sur l’onglet « Keys and Access Token » générez un Token et notez dans un coin les

  • CONSUMER_KEY
  • CONSUMER_SECRET
  • ACCESS_KEY
  • ACCESS_SECRET

0 option compte application twitter

Vous avez maintenant toutes les infos nécessaires. Ouvrez un éditeur de texte et enregistrez le code ci-dessous en uptime.py en veillant à bien remplacer par votre informations les 4 éléments en début de script, CONSUMER_KEY, CONSUMER_SECRET, ACCESS_KEY, ACCESS_SECRET.

#!/usr/bin/env python
# coding: utf-8
import os
from twython import Twython
CONSUMER_KEY = 'AREMPLACERPARLEVOTRE'
CONSUMER_SECRET = 'AREMPLACERPARLEVOTRE'
ACCESS_KEY = 'AREMPLACERPARLEVOTRE'
ACCESS_SECRET = 'AREMPLACERPARLEVOTRE'

api = Twython(CONSUMER_KEY,CONSUMER_SECRET,ACCESS_KEY,ACCESS_SECRET)

def uptime():

     try:
         f = open( "/proc/uptime" )
         contents = f.read().split()
         f.close()
     except:
        return "Cannot open uptime file: /proc/uptime"

     total_seconds = float(contents[0])

     MINUTE  = 60
     HOUR    = MINUTE * 60
     DAY     = HOUR * 24

     days    = int( total_seconds / DAY )
     hours   = int( ( total_seconds % DAY ) / HOUR )
     minutes = int( ( total_seconds % HOUR ) / MINUTE )
     seconds = int( total_seconds % MINUTE )

     string = ""
     if days > 0:
         string += str(days) + " " + (days == 1 and "D" or "Ds" ) + " "
     if len(string) > 0 or hours > 0:
         string += str(hours) + " " + (hours == 1 and "H" or "Hs" ) + " "
     if len(string) > 0 or minutes > 0:
         string += str(minutes) + " " + (minutes == 1 and "M" or "Ms" ) + " "
     string += str(seconds) + " " + (seconds == 1 and "S" or "Ss" )

     return string;

print "The system uptime is:", uptime()
api.update_status(status='Online since '+uptime())

Vous pouvez à présent placer votre script en tâche planifiée afin qu’il remonte tout seul son uptime. Pour cela on va utiliser « CRON » qui est planificateur de tâches Unix.

crontab -e
no crontab for userlocal - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/ed
  2. /bin/nano        <---- easiest
  3. /usr/bin/vim.tiny

Choose 1-3 [2]:
Sélectionnez l'éditeur de texte de votre choix. Pour faire simple je vais prendre un exemple qui se décompose de la façon suivante, chaque étoile représente un élément dans le temps :
# m h  dom mon dow   command
* * * * * /usr/bin/python /home/laintimesuser/bot/autotweet/uptime.py

Dans cet exemple je vais executer le script uptime.py toutes les 15 minutes via l’interpréteur python. On peut le compléter et devenir plus précis avec « /10 » dans les minutes signifie toutes les 10 minutes. Ou encore « 0-30/2 » dans les minutes signifie : toutes les deux minutes pendant les dix premières minutes de l’heure courante.

  • m désigne les minutes (0-59)
  • h est pour heure (0-23)
  • dom est pour journée du mois (1-31)
  • mon est pour mois, de janvier à décembre (1-12)
  • dow est pour journée du dimanche au samedi (0-6)
  • command désigne le chemin d’accès complet vers votre script

Une fois votre règle en place quittez et redémarrez le service avec,

 sudo service cron restart

Laisser un commentaire