Solutions CLI pour connexion hostile / dégradée
Mini-tutos pour screen, irssi, bitlbee, cone et gcalcli.
Ne plus avoir de connexion de qualité au net, et devoir passer par un wifi non sécurisé et qui n'est pas de confiance, comme c'est mon cas en ce moment, est un véritable calvaire. Je suis actuellement sur une connexion FreeWifi, et le bilan n'est pas bon :
- Il faut re-donner ses identifiants FreeWifi régulièrement sinon la connexion se coupe (aucune idée de l'intervalle, ça semble assez aléatoire)
- Utiliser Pidgin pour MSN est hors de question, le protocole n'étant pas chiffré
- utiliser Meebo.com (pour jabber/msn) est lent
- GMail ne fonctionne pas, le login ne se termine jamais (ça va un peu mieux avec la correction de MTU mais ça marche quand même pas bien)
- Google Calendar ne fonctionne pas non plus
- Twitter est lent et impossible de poster un twit
Heureusement, ssh est là ! Faire un proxy SOCKS / HTTP ? Trop chiant, il faudrait le relancer régulièrement quand la session FreeWifi expire. Faire un tunnel avec VPN ? Pfiou c'est relou ! Pourquoi ne pas plutôt être le plus léger / indépendant possible, et retrouver sa session quand on se connecte ? C'est la magie d'une connexion SSH et de GNU/Screen !
D'abord régler le problème de l'expiration de session FreeWifi avec le script shell suivant (qui inclut la correction de MTU mentionnée précédemment) :
#!/bin/sh
LOGIN="remplacer par mon login freewifi" PASSWORD="remplacer par mon passe freewifi" INTERFACE="remplacer par l'interface wifi"
RESULT=`curl -s -A "Opera/10.11" -F login=$LOGIN -F "password=$PASSWORD" \ -F submit=Valider https://wifi.free.fr/Auth | fgrep "CONNEXION AU SERVICE REUSSIE"`
if [ "$RESULT" == "" ] then echo "FAIL" else echo $RESULT ifconfig $INTERFACE mtu 1460 fi
Ne pas oublier de chmod +x le script. Ensuite relancer ce script dans un terminal à intervalle régulier :
$ while true; do ./freewifi-connect.sh; sleep 30m; done;
Trente minutes me semble un bon délai, ça marche jusque là.
Recherche web
Une fois la connexion établie, première chose désactiver les scripts sur google.com (noscript roxor), ce qui évite de faire une requête à google à chaque fois qu'on clique sur un résultat dans la page de recherche (tracking des clics, c'est lent et c'est pas cool pour votre vie privée). Si vous avez un brouteur qui trouve pas utile de bloquer les scripts site par site (au hasard, Chrome), utilisez Scroogle.
Session Screen
Première chose, connectez-vous à un serveur distant en ssh, et installez screen (apt-get install screen) si ce n'est pas déjà fait. Pour rendre screen un peu plus attractif visuellement, recopiez la ligne suivante dans ~/.screenrc :
startup_message off hardstatus alwayslastline "%?%{kw}%-Lw%?%{kR}%n*%f %t%?(%u)%?%?%{kw}%+Lw%?"
Lancez screen. Voyez screen comme un genre de gestionnaire de fenêtres en mode texte, avec la configuration affichée ci-dessus vous verrez en bas les fenêtres ouvertes en ce moment, la fenêtre active étant en rouge. Voici quelques commandes pour commencer, à précéder par la séquence Ctrl-A (attention aux majuscules) :
c Créer une nouvelle fenêtre A Renommer la fenêtre active n Aller à la fenêtre suivante p Aller à la fenêtre précédente Ctrl-A Alterner la fenêtre active et celle active précédemment k Tuer la fenêtre active (kill) 0 Aller à la fenêtre n°0 1 Aller à la fenêtre n°1 (etc. jusqu'à 9) x Locker la session screen courante (il faudra donner votre mot de passe) d Détacher la session screen (permet de reprendre la session plus tard)
Voilà qui donne déjà de bonnes bases. Le plus important étant de créer, fermer des fenêtres (quitter un shell d'une fenêtre fermera la fenêtre automatiquement), et s'y promener. Si votre connexions ssh est coupée, que le terminal est fermé, ou que vous détachez la session, vous pourrez la rependre à tout moment en tapant screen -r -d (-r pour rattacher et -d pour détacher si un autre terminal est encore attaché à cette session, par exemple une connexion ssh qui ne fonctionne plus mais pas encore expirée). Comme vous le voyez, screen est très résistant aux coupures involontaires, tant que vous n'arrêtez pas la session screen et que la machine où elle est reste allumée, les programmes qui sont dans la session continueront de fonctionner comme si vous êtiez devant. Screen est un programme génial aux multiples capacités (on peux même faire une copie écran-texte de la fenêtre en cours en faisant Ctrl-A h), mais ce n'est pas le sujet ici, je vous invite donc à taper "Ctrl-A ?" pour lister les commandes clavier, et à lire le man de screen pour le programme lui-même et ses multiples options.
Chat IRC
Le plus simple : installer irssi ou weechat.
# apt-get install irssi
Lancer irssi et là rajouter un réseau :
/network add Freenode
Y ajouter un serveur :
/server add -auto -ssl -network Freenode irc.freenode.net 7000
Puis des salons :
/channel add -auto ##openweb Freenode
Enfin sauvegarder ce qu'on vient de faire et l'exécuter :
/save /connect Freenode
Et voilà !
Chat MSN, Jabber, AIM, Yahoo, Twitter, Status.net, etc.
Personnellement mon préféré pour l'IM (Instant Messaging) est bitlbee qui est un serveur qui fait passerelle IRC <-> IM. En se connectant sur un serveur Bitlbee (ça peut être celui que vous avez installé vous-même ou un des serveurs publics), avec n'importe quel client IRC vous pourrez ajouter vos compte de messagerie instantanée et parler avec tous vos contacts, vous verrez les contacts en ligne sur un salon #bitlbee.
L'installation est simple, il suffit ensuite de se connecter avec un client IRC (comme irssi, vu au dessus) sur 'localhost' si vous avez installé votre instance de Bitlbee, ou sur un serveur bitlbee public.
Là il faudra vous créer un compte sur le serveur (oui vous pouvez être plusieurs sur le même serveur Bitlbee) :
register mot_de_passe
Vous devrez ensuite vous identifier quand vous vous reconnecterez à bitlbee avec :
identify mot_de_passe
Ensuite pour ajouter par exemple un compte MSN :
account add msn msn.really.sucks.a.lot@bohwaz.net mot_de_passe_msn
Et s'y connecter :
account on
Pour parler à un contact il suffit de lancer une query :
/query KnuX
Si un contact a un pseudo qui ne vous rappelle rien, vous pouvez le renommer :
rename KnuX Knuckles
Ça fonctionne aussi avec les comptes Facebook (il faut avoir un login facebook unique) :
account add jabber login@chat.facebook.com mot_de_passe_fb account set nick_source full_name account on
La seconde ligne n'est là que pour le cas particulier de facebook dont les logins sont en fait des IDs numériques, on demande donc à bitlbee de créer le pseudo (nick) à partir du nom complet.
Et ça fonctionne aussi avec Twitter :
account add twitter bohwaz foo account on
A ce moment, une query s'ouvrira avec une URL à visiter, allez sur cette URL, acceptez l'autorisation, et recopiez le code PIN dans la query déjà ouverte. Pas besoin de votre mot de passe, c'est pour ça que j'ai mis 'foo' comme mot de passe. Une fois l'autorisation avec le code PIN effectuée, un channel #twitter_bohwaz apparaîtra qui affichera les messages des gens que vous suivez.
Pour twitter il suffit d'écrire sur le salon #twitter_pseudo. Par exemple pour répondre à Thanh qu'il est pas rigolo :
Thanh: rho même pas drôle :)
Apparaîtra dans votre timeline comme suit :
@Thanh rho même pas drôle :)
Bref la plus pure tradition IRC pour twitter comme des gens bien élevés.
Alternatives pour la messagerie instantanée
Tout le monde n'est pas fan de l'approche IRC et je le comprends. Alors quelques pistes testées et approuvées :
- Pour MSN/Jabber/etc. : CenterIM
- Pour Twitter/Status.net/etc. : ttytter, qui est particulièrement impressionnant en terme de fonctionnalités, et permet même de filtrer les statuts par regexp.
Mails
Et oui le plus important au final c'est quand même de lire ses mails. Alors je sais qu'il y a quelques années, lire ses mails en console relevait du parcours du combattant, et rien qu'à voir les 3000 lignes de la configuration d'exemple de Mutt rendait blêmes les plus barbus d'entre nous, mais de nos jours tout a changé, le mail en console est enfin accessible au plus grand nombre. Et tout ça grâce à un merveilleux client mail cone issu de la non moins merveilleuse suite 'courier' (qui fait aussi serveur de mail, webmail, etc., je vous en reparlerais dans un autre billet un jour). Nous allons ici prendre l'exemple d'un compte GMail mais vous allez voir que c'est assez simple, il suffit de suivre ce qui est indiqué.
D'abord installer cone :
# apt-get install cone
Ensuite lancez cone, et accédez au menu principal en appuyant sur la touche 'M', puis avec les flèches allez sur 'New Account' et faites Entrée, appuyez sur la touche 'I' pour indiquer un compte IMAP. Dans 'Account name' indiquer 'Gmail' par exemple (peu importe), dans 'Server', indiquer 'imap.gmail.com:993/novalidate-cert', donner login et mot de passe, ne pas cocher 'Do not send password in clear text' et cocher 'Use an encrypted connection'. Voilà, le compte est ajouté et fonctionnel. Avec les flèches vous pouvez désormais vous promenez dans les dossiers. Les commandes sont affichées en bas de l'écran, il suffit d'appuyer sur la touche indiquéer pour réaliser l'action. C'est relativement aisé.
Attention pour supprimer un compte, positionnez-vous bien sur le nom du compte, pas sur INBOX, sinon cela pourrait effacer vos messages.
Un petit truc, pour envoyer un message dans la fenêtre écrire/répondre, c'est Ctrl-X qu'il faut appuyer :)
Agenda Google
Simple ! Il suffit d'installer gcalcli :
# apt-get install gcalcli
Ensuite configurez-le en éditant ~/.gcalclirc :
<a href="gcalcli">gcalcli</a> user: mon_login_google pw: mon_passe_google
Ensuite pour voir les événements des 5 prochains jours :
$ gcalcli agenda
Ce qui donne de manière assez colorée (mais en N&B ici) :
Tue Jan 11 6:30pm Etat des lieux
Wed Jan 12 12:00am Début soldes d'hiver 12:00am Ciné Green Hornet
Thu Jan 13 11:52am Train > Paris
Fri Jan 14 8:00pm Concert GY!BE @ La Villette
D'autres commandes sont disponibles, par exemple :
# Ajouter un événement $ gcalcli remind "10pm 10/31 Miam miam" # Voir l'agenda de la semaine $ gcalcli calw # Voir l'agenda du mois $ gcalcli calm
Conclusion
Voilà on a fait tour relativement complet des outils en ligne de commande qui vous permettront de survivre depuis un modem 56K ou un wifi pourri en plein centre d'une ville. N'hésitez pas à partager si vous avez d'autres bons plans du genre, je suis toujours intéressé. Je rappelle évidemment que tous es outils peuvent aussi très bien servir pour une utilisation quotidienne, même sans avoir des problèmes de connexion. D'ailleurs j'utilise bitlbee et irssi régulièrement car il serait difficile de leur trouver un logiciel graphique qui soit aussi pratique à utiliser dans le temps.
develo-man
Merci pour toutes ces astuces. Je confirme : c'est vraiment la plaie de devoir se connecter sur un réseau wifi non sécurisé ou sur un réseau wifi public quand notre connexion habituelle tombe en panne.