Vous n’avez plus d’accès ssh à votre serveur ? vous devez faire une chose importante dessus ?
Et bien ce petit programme est là pour ça :
vous allez pouvoir, depuis votre twitter, éxécuter des lignes de commandes sur un ordinateur distant !
Bon, ok…ça sert à rien, mais j’ai trouvé marrant d’y faire, donc voilà un petit tuto, tout petit, vu que le script est court.
D’abord il nous faut le module python-twitter.
Et ensuite, voilà le joli code :
#-*- coding:utf-8 -*-
import twitter
import time
from subprocess import Popen#,PIPE,STDOUT
#voilà un twitt type : shell:maCommande -i saucisson -o chocolat
NOM = « »#l’utilisateur qui va taper des lignes de commandes
FLAG = « shell:« #le flag qui indique que l’utilisateur veut tapper une ligne de commande doit être placé au tout début du twitt
SLEEP = 60#le sleep en secondes
SORTIE_FICHIER = « temp.txt »#le fichier contenant la sortie
NOM_ENVOYEUR = « »#mettre des chaines vides si vous ne voulez pas envoyez le résultat de la sortie
PASS_ENVOYEUR = « »#à l’utilisateur NOM
api = twitter.Api(username=NOM_ENVOYEUR,password=PASS_ENVOYEUR)
idDernierTwittCommande = 0#l’id du dernier twittCommande
while True:
utilisateur = api.GetUser(NOM)#retourne l’utilisateur (instance de la classe twitter.User)
dernierTwitt = utilisateur.GetStatus()#retourne son dernier twitt (instance de la classe twitter.Status)
if(dernierTwitt.text.startswith(FLAG) and idDernierTwittCommande!=dernierTwitt.id):
idDernierTwittCommande = dernierTwitt.id#on change l’id du dernier twittCommande
commande = dernierTwitt.text.split(FLAG)[1]#on prend la commande
print(commande)
commande = commande.split(‘ ‘)# paramètres séparés par 1 espace
fichier = open(SORTIE_FICHIER,’w+’)
ps = Popen(commande,stdout=fichier, stderr=fichier)#on éxécute la commande
ps.communicate()
fichier.close()
print(« commande éxécutée »)
if NOM_ENVOYEUR :#si on a un envoyeur:
#on envoie via MP la sortie de la commande à l’utilisateur l’ayant tapé.
import codecs
fichier = codecs.open(SORTIE_FICHIER,’r',encoding= »utf-8″)
api.PostDirectMessage(NOM,fichier.read())
fichier.close()
print(« sortie envoyée »)
time.sleep(SLEEP)
Je pense que les commentaires devraient suffire à vous expliquer le fonctionnement de ce petit script.
Remplacez NOM par le nom de la personne tapant les lignes de commande.
Si vous voulez envoyer le retour de la ligne en MP, remplissez les champs NOM_ENVOYEUR et PASS_ENVOYEUR , sinon mettez des chaines vides.
D’ailleurs voici mon twitter.