Catégories
Open-source Planet-libre Systeme

Dropbox et la ligne de commande

Je suis utilisateur du service Dropbox depuis maintenant quelques temps. Il me permet de synchroniser les fichiers entres mes différentes machines (même les serveurs). Depuis ses débuts, Dropbox propose un client pour système GNU/Linux complètement intégré dans l’environnement graphique.

Ce qui est moins connu, c’est l’utilisation de la bonne vieille ligne de commande pour profiter de ce service. C’est ce que nous allons voir ensemble dans ce billet en parcourant quelques fonctions disponibles.

Ré-initialiser du cache

Dans certains cas, il se peut que votre client Dropbox tourne dans le vide (l’icône de notification reste bloqué sur une mise à jour de fichier). Je suis bien placé pour le savoir car cela vient de m’arriver…

Pour repartir d’une configuration propre, il est nécessaire de nettoyer le cache de Dropbox. Il n’y a pas de commande à proprement parler pour faire cela mais un simple:

rm -R ~/Dropbox/.dropbox.cache/*

devrait suffire à remettre votre Dropbox dans le droit chemin de la synchronisation.

Arrêter puis relancer Dropbox en ligne de commande

Si vous avez à écrire un script shell qui va générer des fichiers non désirables (ou bien trop volumineux) dans un des répertoire de votre Dropbox, il peut être utile d’arrêter puis de relancer le service depuis le script. On évitera ainsi de saturer sa ligne internet avec des transferts inutiles.

Pour cela on utilisera les commandes:

dropbox stop
...
<votre script ici>
...
dropbox start

Obtenir des informations sur l’état de Dropbox

Pour obtenir le status du démon Dropbox (processus dropboxd), il est possible d’utiliser:

$ dropbox  status
Idle

Note: la commande ‘dropbox running’ renvoie le code retour 1 si le démon Dropbox est lancé, 0 sinon. 

Si vous souhaitez avoir l’état de synchronisation de votre répertoire ~/Dropbox:

$ dropbox filestatus ~/Dropbox/
/home/nicolargo/Dropbox/: up to date

Il est possible de passer en paramètre de cette dernière fonction un fichier (ou un répertoire):

$ dropbox filestatus ~/Dropbox/Public/ESIL2010-Cloud.pdf 
/home/nicolargo/Dropbox/Public/ESIL2010-Cloud.pdf: up to date

Obtenir l’URL publique des fichiers de votre Dropbox

Last but not least, Dropbox permet de partager vos fichiers en générant une URL publique. Celle-ci peut être obtenue en ligne de commande (ou dans vos scripts) via:

$ dropbox puburl ~/Dropbox/Public/ESIL2010-Cloud.pdf 
https://dl.dropboxusercontent.com/u/1112933/ESIL2010-Cloud.pdf

Pour aller plus loin: l’API Python

Si (comme moi), vous développez en Python, il existe une API permettant de jouer avec le service Dropbox. Je vous conseille la lecture de la page officielle sur le sujet.

Catégories
Open-source Planet-libre Reseau Systeme

Debian et les mails depuis la ligne de commande

Suite à l’installation d’un serveur Kimsufi 16G sous Debian 6.0 puis configuré avec mon script de post installation spécial serveur, j’ai attendu en vain la réception des premiers apports de Fail2ban qui devaient être envoyés par mail.

Une petit visite des fichiers de logs me montre rapidement d’ou vient le problème:

… Can’t exec /usr/lib/sendmail: No such file or directory…

Par défaut, il n’y a donc pas de brique système permettant d’envoyer des mails.

Installation de Postfix

Pour résoudre cela, j’ai donc exécuté la commande suivante qui va installer le serveur de messagerie Postfix:

[cc lang= »bash »]

sudo apt-get install postfix

[/cc]

Puis configuré Postfix de la manière suivante:

Puis:

Configure le Firewall

Cette section est optionnelle et ne concerne que les serveurs qui embarque un Firewall système (Iptables).

Si vous avez un Firewall sur votre serveur (j’utilise ce script que je place dans /etc/init.d/), il faut autoriser les flux sortant sur le port SMTP (TCP/25) sous risque d’avoir le message suivant dans votre fichier syslog:

Dec 11 08:46:00 ks387949 kernel: IN= OUT=eth0 SRC=176.31.252.29 DST=217.70.184.162 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=30778 DF PROTO=TCP SPT=59718 DPT=25 WINDOW=14600 RES=0x00 SYN URGP=0

Pour cela, il faut éditer le script puis ajouter le port 25 dans la variable REMOTE_TCP_SERVICES:

REMOTE_TCP_SERVICES= »22 25 80 443″

Et enfin relancer le script:

[cc lang= »bash »]

sudo /etc/init.d/firewall.sh restart

[/cc]

On teste

Le plus simple est d’utiliser la ligne de commande et la commande mail:

[cc lang= »bash »]

$ mail contact@nicolargo.com

Subject: Test

Test de 09:27

.

[/cc]

Quelques secondes plus tard, vous devriez recevoir le mail:

A vous les rapports Fail2ban

Catégories
Developpement Open-source Planet-libre Reseau Systeme

Glances: vos stats systèmes en un clin d’oeil

Il y a quelques jours, je vous avais parlé de Saidar, un logiciel permettant de regrouper dans un terminal|console un certain nombre de statistiques sur votre machine. Après quelques heures d’utilisations, j’ai identifié des choses qui ne me convenait pas:

  • pas d’affichage de la mémoire réellement disponible (comme on peut le trouver sur la deuxième ligne de la commande free -m)
  • pas de détail au niveau des processus
  • affichage des débits réseaux en octets/sec alors que j’utilise toujours les bits/sec
  • pas d’information sur l’espace disque disponible

Comme je ne trouvais pas la « killer application » dans ce domaine (même si il existe de très bon outils comme top), j’ai décidé de repartir d’une feuille blanche et de développer le logiciel Glances (licence LGPL) dont je vais vous présenter les grandes lignes dans ce billet.

Glances screenshot

Objectifs

Ils sont multiples:

  • prises en compte de mes griefs sur Saidar
  • accès à la fois depuis un environnement graphique (terminal) qu’à distance (console)
  • mise en avant des statistiques importantes à la compréhension d’un éventuel problème
  • affichage des processus triés de manière intelligente et automatique
  • développement en langage Python (je connais assez bien, c’est portable et facile à maintenir)

Installation

Après avoir téléchargé la dernière version stable disponible , il suffit de saisir les commandes suivantes:

[cc lang= »bash »]

tar zxvf glances-version.tar.gz

cd glances-version

./configure

make

sudo make install

[/cc]

Notes: remplacer « version » par le numéro de version que vous avez téléchargé…

Glances a besoin de la librairie python-statgrab version 0.5 (ou supérieure) pour fonctionner correctement. Sous Ubuntu, il suffit de lancer la commande:

[cc lang= »bash »]

sudo apt-get install python-statgrab

[/cc]

Sous Debian Squeeze, seule la version 0.4 de python-statgrab est disponible dans les dépôts. Il faut donc installer la version 0.5:

[cc lang= »bash »]

sudo apt-get install libstatgrab-dev

wget http://ftp.uk.i-scream.org/sites/ftp.i-scream.org/pub/i-scream/pystatgrab/pystatgrab-0.5.tar.gz

tar zxvf pystatgrab-0.5.tar.gz

cd pystatgrab-0.5/

./setup.py build

sudo ./setup.py install

[/cc]

Utilisation

On lance le logiciel avec la commande:

[cc lang= »bash »]

glances.py

[/cc]

Par défaut, le rafraîchissement des données se fait toutes les secondes. Il est possible de l’augmenter avec l’option -t. Par exemple pour avoir un taux de rafraîchissement de 5 secondes:

[cc lang= »bash »]

glances.py -t 5

[/cc]

Une fois lancé, les touches suivantes sont actives:

  • ‘a’: passer le tri des processus en automatique (c’est le mode par défaut). Glances utilisera par défaut un tri décroissant sur l’utilisation CPU. Si une alerte sur la mémoire globale apparaît (mémoire occupé > 70%), le tri se fera alors par occupation mémoire.
  • ‘c’: forcer le tri des processus en fonction de leurs utilisations de la CPU.
  • ‘m’: forcer le tri des processus en fonction de leurs occupations mémoire.
  • ‘q’: quitter le programme (on peut également utiliser CTRL-C).

Si votre terminal|console est compatible avec un affichage couleur, alors les statistiques importantes (à mes yeux…) sont mises en avant de la manière suivante:

  • VERT: le compteur est < 50%
  • BLEU: le compteur est > 50% et < 70%
  • VIOLET: le compteur est > 70% et < 90%
  • ROUGE: le compteur est > 90%

Limitations

L’API python-statgrab comporte actuellement un bug pour la récupération des statistiques sur les espaces disques. Dès que ce dernier sera corrigé, je pense inclure ces statistiques dans l’espace libre en bas à gauche de la fenêtre de Glances.

Un problème ?

Si vous rencontrez un problème lors de l’installation ou de l’utilisation de Glances:

  1. Vérifié que le problème n’est pas référencé
  2. Saisir le nouveau bug dans le tracker GitHub

Lors de la saisie du bug merci de fournir les informations suivantes:

  • Système d’exploitation (nom, version)
  • version de Python (python -v)
  • version de la librairie statgrab (apt-cache show statgrab)
  • version de la librairie python-statgrab (apt-cache show python-statgrab)

Contribuer ?

Le logiciel est distribué sous licence libre LGPL. Il est disponible dans le GitHub suivant: https://github.com/nicolargo/glances

Si vous trouvé ce logiciel intéressant et que vous souhaitez vous impliquer, j’ai besoin de vous sur les sujet suivants:

  • packaging de Glances pour Debian, Ubuntu (PPA), Fedora, Redhat, Free|Open|NetBSD…
  • amélioration/optimisation du code (lire le billet contribuer à un projet hébérgé sur GitHub)
  • inclure la vérification de la présence de la librairie python-statgrab lors du .configure (j’ai un bug dans le configure.ac)
  • ‘Man’ page
  • Afficher une fenêtre d’aide avec les touches disponibles quand on clique sur F1
  • Corriger le bug de python-statgrab afin que l’on puisse inclure les statistiques sur les systèmes de fichiers

J’attends vos retours. 🙂

Catégories
Open-source Planet-libre Systeme

Supervision simple en ligne de commande avec Saidar

Marre des interfaces graphiques qui ne sont là que pour faire plaisir à vos chefs ? Marre de passer vos journées dans les méandres des fichiers de configuration de Nagios ? Vous avez besoin d’un moyen simple et rapide pour voir ce qui cloche sur une machine ?

Si vous avez répondu oui aux questions précédentes ou que comme moi la première chose que vous faites en cas de problème sur une machine est de regarder la charge, la mémoire et l’espace disque disponible  alors Saidar est fait pour vous !

C’est quoi donc ?

Saidar est un logiciel libre (GPL v2), en ligne de commande permettant d’afficher sur dans une console l’état de votre machine. Il se base sur la librairie libstatgrab qui apporte une couche d’abstraction pour la récupération des informations sur les systèmes d’exploitations Solaris 2.x, Linux 2.2/2.4/2.6, FreeBSD 4.x/5.x, NetBSD 1.6.x, OpenBSD 3.x, DragonFly BSD 1.0, HP-UX, et Cygwin (donc Windows).

Cette librairie dispose également de binfing (interface) vers les langages suivants:

Comment cela marche ?

Sous Debian/Ubuntu, l’installation est facilité par la présence de Saidar dans les dépôts officiels:

[cc lang= »bash »]

# apt-get install saidar

[/cc]

Il suffit ensuite de lancer le logiciel depuis une console (/ terminal):

[cc lang= »bash »]

# saidar

[/cc]

Pour voir afficher les merveilleuses statistiques:

Personnellement j’ai ajouté un raccourci à mon fichier .bashrc pour activer certaines options (couleur et rafraîchissement toute les secondes):

[cc lang= »bash »]

alias saidar=’saidar -c -d 1′

[/cc]

Et voilà le résultat:

Si un chiffre apparaît en gras, c’est que la valeur dépasse les 60%. Au dessus de 90% il est affiché en avec un fond de couleur.

Bref, un outil bien sympathique dans l’esprit GNU à laisser tourner sur vos machines critiques !

Catégories
Open-source Planet-libre Systeme

Ajouter un utilisateur à un groupe sous GNU/Linux

Petit pense-bête à usage intern(et): gérer les utilisateurs dans ses groupes sous GNU/Linux et en ligne de commande.

Modification du groupe primaire d’un utilisateur

Pour changer le groupe primaire de l’utilisateur nicolargo à admin, il suffit d’utiliser la commande usermod:

usermod -g admin nicolargo

Ajout d’un groupe secondaire à un utilisateur existant

Pour ajouter un groupe secondaire networkadmin  un utilisateur existant nicolargo, c’est encore la commande usermod qu’il faut utiliser:

usermod -a -G networkadmin nicolargo

Ajout d’un nouvel utilisateur à un groupe primaire

Pour ajouter le nouvel utilisateur ritchy et lui configurer un comme groupe primaire admin, il suffit d’utiliser la commande useradd:

useradd -g admin ritchy

Ajout d’un nouvel utilisateur à un groupe secondaire

Pour ajouter le nouvel utilisateur ritchy et lui configurer un comme groupe secondaire networkadmin, il suffit d’utiliser la commande useradd:

useradd -G networkadmin ritchy

A noter qu’il est possible d’utiliser l’option -G avec plusieurs groupes. Exemples pour ajouter ritchy au groupe secondaire networkadmin et systemadmin:

useradd -G networkadmin,systemadmin ritchy

Vérifier les groupes associés à un utilisateur

Rien de plus simple avec la commande groups:

# groups ritchy
ritchy: networkadmin systemadmin
Catégories
Musique Open-source Video

Petite ligne de commande anti vuvuzela

Marre d’entendre les vuvuzelas lors des matchs de la coupe du monde 2010 ? Il y a un moyen très simple de supprimer les fréquences correspondantes à partir d’un filtre VLC.

Voici donc une ligne de commande qui va:

  • récupérer le fichier vidéo du match sur le site de France Television
  • ouvrir le fichier vidéo en utilisant VLC et en y appliquant le filtre « anti vuvuzelas« 

La ligne de commande en question:

[shell]
vlc –audio-filter param_eq –param-eq-f1=233 –param-eq-f2=466 –param-eq-f3=932 –param-eq-gain1=-20 –param-eq-gain2=-20 –param-eq-gain3=-20 –param-eq-lowf=100 –param-eq-lowgain=15 –param-eq-q1=10 –param-eq-q2=10 –param-eq-q3=10 mms://direct.francetv.fr/siege/_\!/evt/fr/soccer_wc_2010.wsx\?aifp=v18\&auth=daEcSbicgdCaGa1dYdobEbSbTbyc2cYaKbQ-bmf28I-dW-FytntDdLd9dc
[/shell]

Catégories
Open-source Reseau

SpiderOAK en ligne de commande

Vous savez (ou pas) tout le bien que je pense du service de stockage en ligne SpiderOAK. Après avoir détailler l’installer et la configuration du logiciel client SpiderOAK sur un PC Ubuntu Desktop disposant d’une interface graphique, nous allons voir comment utiliser ce service sur un serveur seulement accessible en ligne de commande (SSH).

Principe

En effet, le client SpiderOAK peut être lancé en ligne de commande (vous pouvez voir la liste des options disponibles en lancant /usr/bin/SpiderOak –help). Malheureusement, il n’est, à l’heure actuelle, pas possible de configurer le client par cette méthode. Nous allons donc:

  • installer le client SpiderOAK sur le serveur
  • en utilisant les fonctions x-forwarding de SSH, lancer le client à distance (l’interface s’affichera sur  votre machine locale) puis faire la configuration (c’est à dire choisir les répertoires à sauvegarder)
  • automatiser le lancement du client en ligne de commande (via crontab)

Aller zou à vos claviers…

Installation du client SpiderOak sur le serveur

On commence par télécharger la dernière version du client (attention de choisir une version compatible avec votre serveur: AMD64 / i386…) sur sa machien locale (on doit obtenir un fichier nommé spideroak_9658_i386.deb ou quelque chose comme ça…).

On copie ensuite ce fichier vers le serveur:

[shell]scp spideroak_9658_i386.deb monlogin@monserveur.com[/shell]

On se connecte en SSH sur le serveur:

[shell]ssh login@monbeauserveur.com[/shell]

Puis on lance l’installation:

[shell]sudo dpkg -i spideroak_9658_i386.deb[/shell]

Avant de fermer la session SSH, on installe xauth qui va nous permettre de lancer SSH en mode x-forwarding (exemple d’installation sur une distribution Ubuntu Serveur) ainsi que quelques librairies dépendantes:

[shell]

sudo aptitude install xauth dbus libice6 libsm6 libxrender1

exit

[/shell]

Configuration du client à distance

On lance une nouvelle session SSH en activant le x-forwarding (option -X):

[shell]ssh -X login@monbeauserveur.com[/shell]

Puis on lance le client SpiderOak:

[shell]/usr/bin/SpiderOak[/shell]

Il ne reste plus qu’a choisir dans l’interface graphique les répertoires à sauvegarder (voir un screencast de démonstration ici).

Une fois le client configuré, vous pouvez fermer l’application.

Lancement du client sur le serveur

Pour lancer le client sans interface graphique, il suffit de saisir la commande suivante (dans votre session SSH):

[shell]/usr/bin/SpiderOak –headless &[/shell]

Enfin pour automatiser le lancement du client au démarrage du serveur, il suffit d’ajouter une ligne à votre crontab:

[shell]

# crontab -e

@reboot /usr/bin/SpiderOak –headless &

[/shell]

Si vous avez besoin de reconfigurer votre client (pour ajouter ou supprimer un répertoire à sauvegarder), il faut:

  • se connecter au serveur en SSH avec l’option -X
  • tuer le process SpiderOak existant
  • lancer la commande: /usr/bin/SpiderOak
  • Configurer puis quitter l’interface
  • lancer la commande: /usr/bin/SpiderOak –headless &

Voili, plus d’excuses pour perde ses données 🙂

Source: Le blog de Marc Seeger

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 Planet-libre Reseau

TShark, l’autre TcpDump

TShark est un logiciel avec une interface de type ligne de commande permettant d’analyser les protocoles réseaux capturé depuis une interface (en utilisant la librairie libpcap) ou depuis un fichier de capture au format Wireshark. Développé en parallèle de Wireshark, il est distribué sous licence GNU GPL.

Installation de TShark

Sous Ubuntu, il suffit de l’installer à partir des dépôts avec la commande suivante:

sudo aptitude install tshark

Remarque: il est également possible de faire l’installation depuis les sources.

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/