Catégories
Nagios Open-source Planet-libre Web

Twitter en ligne de commande (même avec oAuth)

Il y a quelque temps, j’avais écrit un billet sur comment envoyer les alertes de votre serveur Nagios sur un compte Twitter (ou comment réunir les SI et le Web 2.0). Malheureusement, depuis cette date,  Twitter a changé la méthode d’authentification pour poster des tweets. Ce n’est plus une authentification HTTP classique (qui pouvait donc être facilement faite en ligne de commande avec curl par exemple) mais une authentification oAuth, beaucoup plus souple mais nettement plus complexe.

Nous allons donc dans ce nouveau billet voir comment mettre en place l’authentification oAuth pour un script Python qui permettra à partir d’une simple ligne de commande de mettre à jour une timeline Twitter.

A vos fourneaux !

Les ingrédients…

Pour suivre cette recette il faut:

  • un compte Twitter
  • la librairie Python python-tweepy
  • un navigateur Web (pour enregistrer votre application)

Installation de Python-tweepy

Cette librairie Python va vous permettre de parler oAuth avec le serveur Twitter. Il existe un PPA pour Ubuntu (pour les autres distribution GNU/Linux, il faut installer la bête en suivant ces instructions):

sudo add-apt-repository ppa:chris-lea/python-tweepy

sudo aptitude update && sudo aptitude install python-tweepy

Update: Sous Debian la procédure à suivre est la suivante (merci Benjamin):

apt-get install python python-setuptools python-json python-twitter

wget http://pypi.python.org/packages/source/t/tweepy/tweepy-1.7.1.tar.gz

tar xvfz tweepy-1.7.1.tar.gz

cd tweepy-1.7.1

python ./setup.py install

Enregistrement de votre script

C’est la première étape: déclarer votre application (votre script) sur le serveur Twitter. Dans la suite de ce billet je vais procéder à l’enregistrement d’une application qui s’appellera ‘tweetit’ (c’est le nom de mon script en ligne de commande qui permettra de mettre à jour ma Timeline).

Pour cela, il faut se rendre à l’URL suivante: http://twitter.com/oauth_clients

Puis cliquer sur Register a new application »

On saisie ensuite le formulaire:

Une fois le formulaire validée, vous devriez être redirigé vers une page contenant deux informations importantes: Consumer key (la clés) et Consumer secret (le mot de passe) de votre application.

Il faut bien sur mettre ces informations de coté.

Connecter votre script à votre compte Twitter

Nous allons utiliser la librairie python-tweepy pour faire cette étape qui ne devra être faite qu’une seule fois lors du développement de votre application.

Le plus simple est de reprendre le script écrit par Jeff Miller sur son blog. On va donc créer un script nommé tweetit-register.py contenant le code suivant (remplacer les codes):

#!/usr/bin/env python

import tweepy

CONSUMER_KEY = ‘VOTRE CODE CONSUMER KEY’

CONSUMER_SECRET = ‘VOTRE CODE CONSUMER SECRET’

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)

auth_url = auth.get_authorization_url()

print ‘Please authorize: ‘ + auth_url

verifier = raw_input(‘PIN: ‘).strip()

auth.get_access_token(verifier)

print « ACCESS_KEY = ‘%s' » % auth.access_token.key

print « ACCESS_SECRET = ‘%s' » % auth.access_token.secret

On exécute le script:

chmod a+x tweetit-register.py

./tweetit-register.py

Le script va vous afficher une URL  et attendre un code PIN:


Please authorize: http://twitter.com/oauth/authorize?oauth_token=Ndddb0DBsjd6PNYccSEtl8vtdYkNsPRCk5joO7djqO8

PIN:

On copie l’URL dans un navigateur Web:

On récupère ensuite le code PIN que l’on entre dans notre terminal:

PIN: 0665141

On obtient en retour la clés et le mot de passe d’accès :

ACCESS_KEY = ‘7707822-TWzha9rf3icVF1h0FhGnaK5q7iLyNIRzHXDY8aagt4’

ACCESS_SECRET = ‘3dbTcWkU1LIYG4MtwmraausjaoSne5coGbXKOXhDfG0’

Création du script

Voilà (enfin), on peut développer notre application (tweetit.py):

#!/usr/bin/env python


import sys

import tweepy


# Authentification oAuth

CONSUMER_KEY = ‘Consumer Key’

CONSUMER_SECRET = ‘Consumer Secret’

ACCESS_KEY = ‘Access Key’

ACCESS_SECRET = ‘Access Secret’

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)

auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)

api = tweepy.API(auth)


# Main program

api.update_status(sys.argv[1])

On rend le script executable:

chmod a+x tweetit.py

Test de l’application

On lance le script avec le texte à tweeter:

./tweetitcli.py ‘Petit test depuis la ligne de commande Linux…’

Et voilà le travail:

Et voila, bientôt un prochain billet pour voir comment intégrer ce nouveau script à Nagios 🙂

Source pour la rédaction de cet article:

Catégories
Open-source Systeme

Pense-bête: lignes de commandes

Voici un nouvel article que je vais faire évoluer dans le temps au fil de mes découvertes. Le but est d’y centraliser (avec un classement par thème) les lignes de commandes Unix utiles et que j’ai toujours beaucoup de mal à retenir (c’est l’âge mon bon monsieur).

Lecteurs, vous êtes libre d’enrichir cette base avec vos commentaires.

Fichiers & répertoires

Affiche la taille d’un répertoire en octets.

Syntaxe:

[shell]

du -sh /mon/path | awk ‘{print $1}’

[/shell]

Exemple:

[shell]

du -sh /usr/local/ |awk ‘{print $1}’

375M

[/shell]

Système

Ajoute un dépôt PPA sous Ubuntu (9.04 ou supérieur).

Syntaxe:

[shell]

sudo add-apt-repository ppa:nicolargo

[/shell]

Exemple:

[shell]
gpg: requête de la clé CEC06767 du serveur hkp keyserver.ubuntu.com
gpg: clé CEC06767: clé publique « Launchpad Nicolargo PPA » importée
gpg: Quantité totale traitée: 1
gpg:               importée: 1  (RSA: 1)
[/shell]

Réseau

Affiche les informations sur sa carte réseau.

Syntaxe:

[shell]

sudo mii-tool -v

[/shell]

Exemple:

[shell]

eth0: negotiated 100baseTx-FD flow-control, link ok
product info: vendor 00:50:43, model 11 rev 1
basic mode:   autonegotiation enabled
basic status: autonegotiation complete, link ok
capabilities: 1000baseT-HD 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
advertising:  100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
link partner: 1000baseT-HD 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control

[/shell]

Affiche son adresse IP publique.

Syntaxe:

[shell]

curl -s http://checkip.dyndns.org/ | grep -o "[[:digit:].]\+"

[/shell]

Exemple:

[shell]

89.122.166.229

[/shell]

Affiche les ports réseau en écoute sur sa machine.

Syntaxe:

[shell]

sudo lsof -Pni4 | grep LISTEN

[/shell]

Exemple:

[shell]

sshd        912  root    3u  IPv4    4255      0t0  TCP *:22 (LISTEN)
netserver  1355  root    4u  IPv4    5747      0t0  TCP *:12865 (LISTEN)
ntop       1456  ntop    1u  IPv4    6080      0t0  TCP *:3000 (LISTEN)
master     1549  root   12u  IPv4    6175      0t0  TCP *:25 (LISTEN)
cupsd      1644  root    6u  IPv4  649219      0t0  TCP 127.0.0.1:631 (LISTEN)
beam.smp   2256  labo   16u  IPv4   11238      0t0  TCP 127.0.0.1:44732 (LISTEN)
dropbox   15432  labo   19u  IPv4  227846      0t0  TCP *:17500 (LISTEN)

[/shell]

Tester sa connectivité réseau de bout en bout avec mtr (ping+traceroute).

Syntaxe:

[shell]

mtr www.google.fr

[/shell]

Exemple:

Audio/video

Encoder un VOB DVD vers un OGG Theora en qualité correcte.

Syntaxe:

[shell]
ffmpeg2theora -V 900 -x 540 –first-pass log input.vob -o output.ogv</code>  <code>; ffmpeg2theora -V 900 -x 540 –second-pass log input.vob -o output.ogv
[/shell]

Exemple:

A vous de sheller…

Catégories
Open-source Systeme

Shell: mes découvertes de la semaine

Affiche la liste des processeurs de votre machine

[shell]sed -n ‘s/^model name[ \t]*: *//p’ /proc/cpuinfo[/shell]

Résultat:

Intel(R) Core(TM)2 Duo CPU     P8400  @ 2.26GHz
Intel(R) Core(TM)2 Duo CPU     P8400  @ 2.26GHz

[shell]Intel(R) Core(TM)2 Duo CPU     P8400  @ 2.26GHz
Intel(R) Core(TM)2 Duo CPU     P8400  @ 2.26GHz[/shell]

Affiche votre adresse IP publique

[shell]curl ip.appspot.com[/shell]


Résultat:
[shell]82.223.86.122[/shell]

Se localiser en ligne de commande (enfin localiser son DSLAM)

[shell]curl -s "http://www.geody.com/geoip.php?ip=$(curl -s icanhazip.com)" | sed ‘/^IP:/!d;s/<[^>][^>]*>//g'[/shell]

Résultat:

[shell]IP: 82.223.86.122 Location: , France (GANDI)[/shell]

MTR = traceroute+ping

[shell]mtr www.google.com[/shell]

Création d’une image thumbnail à partir d’une vidéo

[shell]ffmpeg  -itsoffset -20 -i $i -vcodec mjpeg -vframes 1 -an -f rawvideo -s 640x272 ${i%.*}.jpg[/shell]

Tester son installation 5.1

[shell]speaker-test -D plug:surround51 -c 6 -l 1 -t wav[/shell]

Résultat:

[shell]Le périphérique de lecture est plug:surround51
Les paramètres du flux sont 48000Hz, S16_LE, 6 canaux
Fichier(s) WAV
Taux fixé à 48000Hz (demandé 48000Hz)
Taille du tampon entre 64 et 16384
Taille de la periode entre 32 et 8192
Utilisation du tampon maximal 16384
Périodes = 4
La durée de la période à été définie= 4096
La taille du tampon à été définie = 16384
0 – Avant Gauche
4 – Centre
1 – Avant Droit
3 – Arrière Droit
2 – Arrière Gauche
5 – Effets basse fréquence
Temps par période = 8,371535[/shell]

Source: http://www.commandlinefu.com/