134 liens privés
Trucs et astuces pour la commande Sed. Pour effacer tous les espaces et tabulations d'une ligne et plein d'autres choses sympas.
Sed fait partie des commandes un peu "légendaires" du monde GNU/Linux. Celle qu'on se doit de maitriser pour être pris au sérieux. ;-)
Et je n'ai pas souvent eu l'occasion de l'utiliser... J'en profite que j'ai un gros fichier de plusieurs milliers de ligne que je veux nettoyer pour insérer dans une DB pour le faire.
Les types de lignes qui existent dans mon fichier :
- lignes vides
- lignes de "commentaires"
- lignes avec un "tag"
- lignes avec un "tag" + commentaire.
Je veux récupérer uniquement une liste de tags bien propre. Tous les tags commencent par une chaine précise (exemple: "AZFDEB").
La commande globale :
| ========
| simon@ordi:~/dossier$ cat fichier_bordelique.txt | grep AZFDEB | sed -e 's/#.$//' | sed 's/^.AZF/AZF/' > fichier_clean.txt
| ========
Un peu plus de détails. On commence par utiliser "cat" pour afficher le fichier.
| ========
| simon@ordi:~/dossier$ cat fichier_bordelique.txt
| ========
On fait ensuite un pipe ( | ) pour envoyer le retour de la commande "cat" à la commande suivante, "grep". La commande "grep" permet de récupérer toutes les lignes où la chaine "AZFDEB" apparait. (Et où il y a donc un tag à isoler.)
| ========
| simon@ordi:~/dossier$ cat fichier_bordelique.txt | grep AZFDEB
| ========
On continue avec la commande "sed" pour effacer les commentaires. On peut utiliser la fonction de substitution et les expressions régulières ( miam! ) pour effacer tous les commentaires. (Pour l'expression régulière, on cherche une chaine qui commence par # et fini à la fin de la ligne ($) avec n'importe quoi entre les deux (.). On remplace par rien...)
| ========
| simon@ordi:~/dossier$ cat fichier_bordelique.txt | grep AZFDEB | sed 's/#.$//'
| ========
J'utilise encore un sed pour retirer les tabulations et/ou espaces avant le tag :
| ========
| simon@ordi:~/dossier$ cat fichier_bordelique.txt | grep AZFDEB | sed -e 's/#.$//' | sed 's/^.AZF/AZF/'
| ========
Et on écrit le résultat dans un fichier :
| ========
| simon@ordi:~/dossier$ cat fichier_bordelique.txt | grep AZFDEB | sed -e 's/#.$//' | sed 's/^.AZF/AZF/' > fichier_clean.txt
| ========
Ça fonctionne ! Par curiosité, j'ai regardé combien de temps toute la commande met à s'exécuter et s'il y a moyen d'optimiser tout ça. Certainement au moins un peu. On peut déjà dire à grep d'aller chercher le fichier tout seul au lieu d'appeler cat. On peut aussi demander à sed d'appliquer les deux fonctions en une seule fois.
| ========
| simon@ordi:~/dossier$ grep AZFDEB fichiers_bordelique.txt | sed -e 's/#.$//' -e 's/^.AZF/AZF/' > fichier_clean.txt
| ========
Il y a certainement moyen de faire encore mieux... Une prochaine fois. :-)
Utilisation d'iptables et de l'argument TARPIT pour contrer les attaques DDOS. Très intéressant !
Pour changer le mot de passe sur GNU/Linux, on utilise la command "passwd" :
| ========
| root@ordi:~# passwd
| Enter new UNIX password:
| Retype new UNIX password:
| passwd: password updated successfully
| root@ordi:~#
| ========
Un outil pour modifier la RAM à la volée en passant par le port FireWire. L'attaque est rendue possible car le port FireWire peut accéder et modifier la plage mémoire normalement réservée au noyau. (Il n'y a pas de vérification pour aller plus vite...)
Un exemple d'utilisation : http://progdupeu.pl/tutoriels/285/jouons-avec-lauthentification-windows/
Pour l'installer, télécharger l'archive ( cv-master.zip ) et la décompresser dans le dossier de votre choix. ( /home/simon/Programmes/ dans mon cas )
Ensuite, tenter un "make" :
| ==============
| simon@ordi:~/Programmes/CV/cv-master$ sudo make
| cc -g -Wall -D_FILE_OFFSET_BITS=64 -c cv.c
| cv.c:32:20: fatal error: curses.h: Aucun fichier ou dossier de ce type
| compilation terminated.
| make: *** [cv.o] Erreur 1
| =============
Dans le fichier cv.c, à la ligne 32, j'ai ça :" #include <curses.h>"
Il me manque donc une librairie. En cherchant deux secondes, je tombe sur libncurses5-dev ( https://packages.debian.org/wheezy/libncurses5-dev )
============= | simon@ordi: ~ $ sudo aptitude search libncurses | v libncurses-dev - | p libncurses-gst - Ncurses bindings for GNU Smalltalk | p libncurses-ruby - Transitional package for ruby-ncurses | p libncurses-ruby1.8 - Transitional package for ruby-ncurses | p libncurses-ruby1.9 - Transitional package for ruby-ncurses | p libncurses-ruby1.9.1 - Transitional package for ruby-ncurses | i libncurses5 - Bibliothèques partagées pour l'utilisation | p libncurses5-dbg - debugging/profiling libraries for ncurses | p libncurses5-dev - developer's libraries for ncurses | p libncursesada-dbg - Ada binding to the ncurses text interface l | p libncursesada-doc - Ada binding to the ncurses text interface l | p libncursesada2 - Ada binding to the ncurses text interface l | p libncursesada2-dev - Ada binding to the ncurses text interface l | i libncursesw5 - Bibliothèques partagées pour la gestion de | p libncursesw5-dbg - debugging/profiling libraries for ncursesw | p libncursesw5-dev - developer's libraries for ncursesw |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
simon@ordi: ~ $ sudo aptitude install libncurses5-dev | |||||||||||||||||
Les NOUVEAUX paquets suivants vont être installés : | |||||||||||||||||
libncurses5-dev libtinfo-dev{a} | |||||||||||||||||
0 paquets mis à jour, 2 nouvellement installés, 0 à enlever et 0 non mis à jour. | |||||||||||||||||
Il est nécessaire de télécharger 306 ko d'archives. Après dépaquetage, 1145 ko seront utilisés. | |||||||||||||||||
Voulez-vous continuer ? [Y/n/?] | |||||||||||||||||
Prendre : 1 http://ftp.belnet.be/debian/ wheezy/main libtinfo-dev i386 5.9-10 [93,2 kB] | |||||||||||||||||
Prendre : 2 http://ftp.belnet.be/debian/ wheezy/main libncurses5-dev i386 5.9-10 [212 kB] | |||||||||||||||||
306 ko téléchargés en 1min 28s (3471 o/s) | |||||||||||||||||
Sélection du paquet libtinfo-dev:i386 précédemment désélectionné. | |||||||||||||||||
(Lecture de la base de données... 152185 fichiers et répertoires déjà installés.) | |||||||||||||||||
Dépaquetage de libtinfo-dev:i386 (à partir de .../libtinfo-dev_5.9-10_i386.deb) ... | |||||||||||||||||
Sélection du paquet libncurses5-dev précédemment désélectionné. | |||||||||||||||||
Dépaquetage de libncurses5-dev (à partir de .../libncurses5-dev_5.9-10_i386.deb) ... | |||||||||||||||||
Paramétrage de libtinfo-dev:i386 (5.9-10) ... | |||||||||||||||||
Paramétrage de libncurses5-dev (5.9-10) ... | |||||||||||||||||
============= |
Maintenant je peux réessayer d'installer cv : | ============= | simon@ordi:~/Programmes/CV/cv-master$ sudo make | cc -g -Wall -D_FILE_OFFSET_BITS=64 -c cv.c | cc -g -Wall -D_FILE_OFFSET_BITS=64 -c sizes.c | cc -g -Wall -D_FILE_OFFSET_BITS=64 -c hlist.c | cc -Wall cv.o sizes.o hlist.o -o cv -lncurses -lm |
---|---|---|---|---|---|---|
simon@ordi:~/Programmes/CV/cv-master$ sudo make install | ||||||
Installing to /usr/local/bin ... | ||||||
============= |
Il est apparemment bien installé :
| =============
| simon@debian:~/Programmes/CV/cv-master$ cv
| No command currently running: cp, mv, dd, tar, gzip, gunzip, cat, grep, fgrep, egrep, cut, sort, exiting.
| =============
Plus qu'à penser à l'essayer lors d'une copie prochaine. :-)
[Edit: Je l'ai testé pour une copie avec "dd". Voici ce que ça donne :
| ========
| simon@ordi:~$ sudo cv
| [ 2239] cat inactive/flushing/streaming/...
| [ 2167] dd /dev/sdb 2.1% (162.6 MiB / 7.5 GiB)
| ========
(via Oros : https://ecirtam.net/links/?E2Q4uQ
Yome : https://links.yome.ch/?mqu1CQ
Riduidel : http://nicolas-delsaux.hd.free.fr/Shaarli/?9SE5eA )
Rdesktop fonctionne vraiment bien pour se connecter en RDP. J'ai vu qu'on pouvait bloquer la résolution avec l'option "-g" (pas très explicite dans le man).
commande :
simon@ordi ~ $ rdesktop -u NomUtilisateur -g 1280x1024 192.168.1.xx
Après Feednix, voici un autre outil présenté par Korben pour cette fois écouter de la musique depuis le terminal.
Un lecteur RSS pour Feedly en ligne de commande.
J'arrivais à accéder à des dossiers partagés avec le protocole samba en tapant dans la barre de nautilus :
smb://192.168.xx.xx/chemin/vers/le/dossier
Il est possible de monter ce dossier, par exemple dans le dossier /media et d'y accéder dans le terminal. Par exemple :
simon@ordi ~ $ sudo mkdir /media/dossier_partage
simon@ordi ~ $ sudo mount.cifs //192.168.xx.xx/chemin/vers/le/dossier /media/dossier_partage -o username=IDENTIFIANT
| Password :
Tmux, une alternative à Screen ?
Ce sont tous deux des "Multiplexeurs de terminaux". J'utilise régulièrement screen, il permet de "découper" le terminal et d'avoir, par exemple, une partie avec un "man" et l'autre où on teste la commande. Vraiment très pratique même si je n'utilise pas 1% de la puissance de la bête.
Tmux sur Wikipédia : https://fr.wikipedia.org/wiki/Tmux
Screen sur Wikipédia : https://fr.wikipedia.org/wiki/GNU_Screen
J'aime bien les petites astuces qui me permettent d'utiliser le terminal au maximum. En voici une qui permet d'écouter la radio dans le terminal.
Il suffit d'entrer la commande suivante :
$ mplayer -playlist ADRESSE_DU_FLUX
Par exemple, pour écouter "Classic 21" (radio belge).
$ mplayer -playlist http://www.static.rtbf.be/radio/classic21/m3u/classic21_128k.m3u
Il y a une longue liste des radios belges, françaises, canadiennes, suisses, et d'autres sur ubuntu-fr : http://doc.ubuntu-fr.org/radio