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 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
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.
# 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.
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 :
* * * * * /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,