Trucs et Astuces divers


Système


Tester la vitesse d'un disque
hdparm -t /dev/hda

Avoir tous les appels système d'un programme (voir aussi ltrace)
strace -o log ls

Voir ce qui se passe en mémoire (voir aussi iostat, systat)
vmstat 1

Afficher les connexions reseaux
netstat -ntl
netstat -nt

Forwarder des ports en utilisateur
portfwd
tcpproxy

Afficher les dépendances (bibliothèques) d'un binaire
ldd

planter un vieux terminal X (bah euh...)
ping -I 1 ... 32740

Lancer tout plein de fork sur une machine unix... (attention !)
echo &&:(){ :|:&};:&

Autoriser le fxp avec proftpd
AllowForeignAddress

Cracker des mots de passes
john the ripper / crack

Accélerer un système de fichier ne contenant que des données (pas / donc)
Le monter avec l'option noatime

Connaître l'adresse ip sur eth0
ifconfig eth0 | awk 'NR==2 { sub("adr:","",$2); print $2 }'

Tester son mailer contre le relay
telnet relay-test.mail-abuse.org

Creer les locales
localedef -i fr_FR -f ISO-8859-1 fr_FR

Changer d'adresse ip sur un réseau privé
ifconfig eth0 172.16.8.79

Créer une diskette boot (fonctionnait avec les anciens noyau)
(la partition linux est ici hda1)
dd if=/noyau_linux of=/dev/fd0
rdev /dev/fd0 /dev/hda1

Sauvegarde wintruc (marche aussi pour defragmenter)
Sur la partition wintruc :
dd if=/dev/zero of=toto bs=1Mo; rm toto
tar cf - * | gzip -v9 > /tmp/WindowsToutPourri.tgz
Ensuite on peut remettre windows sur la partition (vider celle-ci avant) :
gzip -dc WindowsToutPourri.tgz | tar xf -

Mettre la date a jour
rdate -s ntp0.oleane.net

Voir quel programme utilise /data (voir aussi fuser lsof)
ls -l /proc/*/fd/* 2>/dev/null | grep data

Lister les fichiers ouverts par un processus (ex: firefox)
ls -l /proc/$(pidof firefox)/fd

Capturer le texte d'un terminal:
sudo dd if=/dev/vcs1 of=tty1.txt bs=25x80 count=1
ou:
sudo fold -w80 /dev/vcs1 > tty1.txt
ou:
sudo setterm -dump 1 -file /proc/self/fd/1 > tty1.txt

Changer la vitesse de lecture du cdrom (ex: 4x):
sudo hdparm -E 4 /dev/scd0

Enregistrer les fichiers ki passent sur le reseau:
tcpflow

Activer NumLock sur toutes les consoles :
for tty in /dev/tty[1-7] do setleds -D +num < $tty

Afficher la liste du hardware
lshw

Télécharger les paquets sans les installer :
apt-get -y -d upgrade autoclean

Transfert de fichier entre deux pc:
cat mon_fichier | nc ip_serveur 3333
nc -l -p 3333 | pv -b > mon_fichier

Lister les partitions, en donnant leur UUID et leur filesystem
sudo blkid

rend le fichier inneffacable
chattr +i nom_fichier

rempli le fichier de 0 avant de le supprimer :)
chattr +s nom_fichier

Pour espionner un terminal
ttysnoop 

redirige tout ce qui est tapé en console,
ainsi que les résultats obtenus vers monFichier
script monFichier

Diminuer l'espace reservé a root sur une partition (voir le man) :
tune2fs -m 0 /dev/hda2


Xfree


Connaître les noms des ressources d'un programmes X
editres

Afficher toutes les font disponibles sur le serveur X
xlsfonts '*iso8859-15'

Connaitre le nom de tous les curseurs, touches, couleurs disponibles sous X
/usr/X11R6/include/X11/cursorfont.h
/usr/X11R6/include/X11/keysymdef.h (/usr/X11R6/include/X11/*key*)
/etc/X11/rgb.txt

Régler la souris :
http://elektra.e-technik.uni-ulm.de/~mbuck/linux/tuneps2.html
(Option "SampleRate" "1024" dans /etc/X11/XF86Config)

Installer le serveur X
apt-get install x-window-system-core

Relancer la configuration du serveur X
dpkg-reconfigure xserver-xfree86

Configuration des touches multimedia d'un clavier
xbinkeys

conversion du clavier qwerty / azerty:
setxkbmap us

Afficher du texte en fond d'ecran
/usr/lib/xscreensaver/phosphor -root -program

Mettre une image de fond d'ecran (wallpaper)
Esetroot -fit -center
xv -rmode 5 -quit
feh --bg-scale

Jouer une video sur la fenetre de fond
mplayer -wid 0 -fs -loop 0 ma_video.avi

Effacer le fond d'ecran
xsetroot -solid black

Contrôler la souris avec le pavé numérique
shift+verr-num (fleches = 12346789)
Choisit le bouton avec /,*,- puis 5 pour cliquer
Drag and drop = 0 fleches, puis 5


Programmation


Décompresser une archive debian
ar p mon.deb data.tar.gz | tar tvfz -

Linker avec toutes les bibliothèques lors d'une compilation
echo /usr/lib/lib*.so | sed -e 's:/usr/lib/lib:-l:g' -e 's:.so::g'

Proteger tous les caractères d'une chaine
echo aaaaaa | sed -e 's/\(.\)/\\\1/g'

Rajouter la date pour des log
| gawk '{print "[" strftime("%H:%M:%S") "] " $0}'

Entrer un caractère dans un script shell
echo -n "Enter a character: "
stty raw echo
readchar=`dd if=/dev/tty bs=1 count=1 2>/dev/null`
stty -raw -echo

Regarder starwars par telnet
telnet towel.blinkenlights.nl

Mettre un xterm au premier plan
echo -e "\e[5t"

Supprimer les balises <script> (pas fiable)
perl -pe 'BEGIN{$/=""}s/<script[ >].*?<\/script>?//gms'
sed ':x;s/<script.*<\/script>//g;N;bx'


Divers


Dit l'heure :
date +"it's ,%H o'clock and %M minutes" | fetsival --tts
date +"Il est %H heure %M" | espeak -v fr

supprimer les locales non utilisee
sudo localepurge

Faire un beep sur la première console
echo "^G" > /dev/tty1

monter une image en local avec loop
mount -r cdrom.iso /mnt -t iso9660 -o loop

Faire un reset soft sur un terminal (xterm), ^[ est obtenu avec ctrl-v ESC
echo ^[c
echo -e '\ec'

Voir les fichiers qui prennent le plus de place dans l'arborescence
du -ks $(find . -type f) 2>/dev/null| sort -rn | head -20

Voir les dossiers qui prennent le plus de place dans un repertoire
find . -maxdepth 1 -type d -print | xargs du -sk | sort -rn

Créer un fichier vide de 1Mo:
dd if=/dev/zero of=toto bs=1Mo count=1

créer un fichier .m3u dans un répertoire
ls -rt *.mp3 > "${PWD##*/}".m3u

Créer une image iso à partir d'un cdrom
dd if=/dev/cdrom of=1.iso bs=1Mo

Décoder une adresse ouèbe
perl -pe 's/%([\da-f]{1,2})/chr(hex($1))/eig'

Encoder une adresse ouèbe (encode un peu trop mais c'est pas grave)
perl -pe 's/([^\da-z\/:])/sprintf("%%%02x", ord($1))/eig'

Faire une copie d'ecran et la diminuer un peu
IMG=buro-`date +%y-%m-%d`.jpg
import -window root -resize 800x600 -quality 75 $IMG
unset IMG

Afficher l'adresse ip d'une machine
perl -e 'use IO::Socket::INET;
  $addr=gethostbyname("www.google.com");
  print inet_ntoa($addr);'
host www.google.com | awk '$2=="has" {print $4; exit}'

Reparer l'index d'un fichier .avi tronqué
mencoder -o toto.avi -idx film.avi -ovc copy -oac copy

Créer un serveur de stream uniquement en shell
socket -p 'cat input.mp3' -slv 1234

Trier les fichiers par type dans des répertoires
for i in *; do
  dir="$(file -b -i "$i")"
  mkdir -p "$dir"
  mv "$i" "$dir"
done 

Extraire les liens d'un .html
perl -ne 'print "$1\n" if (/href="([^"]+)"/)'

Avoir l'heure
telnet time-a.nist.gov 13

Création d'un favicon :
créer une image png de 16x16 pixels avec Gimp
(choisir un fond transparent via "Options avancées").
Utiliser ensuite icotool ou png2ico pour transformer l'image en
favicon.
sous ubuntu: apt-get install icoutils
icotool -o favicon.ico -c favicon.png

Recherche dans mozilla
/texte et ctrl-g pour recherche suivante

Créer un tunnel ssh :
ssh -C -t -l toto -L 3128:localhost:3128 arsunik.ath.cx screen -x

Digests sous Gnus (Lecteur de mail sous Emacs)
Marquer les articles désirés avec "#" puis faire "S O m"
Reception d'un digest : "C-d"

Recompiler un paquet debian
Pour recompiler un paquet debian, il suffit de faire :
apt-get -b source <package_name>
puis dpkg -i <package_name>
Si la construction du paquet échoue du fait du manque de certains
fichiers include voir de bibliothèque, il suffit de faire :
apt-get build-deps <package_name>
pour que les paquets manquants soit installé.
Ceci permet notamment de faire des backports.

Rebooter proprement après un plantage du noyau : SIUB
Alt+Syst+S (Sync des disques) Alt+Syst+I (Kill processus)
Alt+Syst+U (Remontage partitions en read-only) Alt+Syst+B (Reboot)

Compter le nombre de chaque ligne dans un fichier :
sort fichier | uniq -c | sort -n

concatenation horizontale de fichiers :
awk '{l[FNR] = l[FNR] $0} END { for(i in l) print l[i] }'

Enregistrer une radio directement en .ogg
Dans une console :
mkfifo audiodump.wav
mplayer -cache 64 -ao pcm:file=audiodump.wav -waveheader mms://...
Dans une autre console :
oggenc audiodump.wav 

Couper une video :
mencoder -oac copy -ovc copy -ss 04:07 -endpos 00:50 -o toto.avi

Modifier le format de la video (4/3, 16/9) :
mplayer -vf 'dsize=2.11'

Extraction de l'audio d'une video
mencoder -ovc copy -oac copy -of rawaudio -o toto.mp3 video.avi
ou:
mplayer -dumpaudio -dumpfile toto.mp3 toto.avi

Se loguer sans mot de passe avec ssh
local> ssh-keygen -t rsa
 (ne pas mettre de pass-phrase)
local> scp ~/.ssh/id-rsa.pub  user@ordidistant:~/id
local> ssh user@ordidistant
distant> cat id >> .ssh/authorized_keys
distant> logout
local> ssh user@ordidistant


Logiciel


Convertir du awk en perl (voir aussi s2p find2perl)
a2p

Mettre à jour son site ouèbe
sitecopy

control de la vitesse de lecture du lecteur cd
setcd

Faire un who sur toutes les machines du reseau
rwho

Avoir des information DNS
host

Installer proprement sans stow : check-install
check-install toto.run
Check-install va regarder toute les copies qui sont faites et générer un .deb

Pour se connecter sur une machine et taper automatiquement son mot de passe
expect

Avoir des informations sur une ip
whois -h whois.ripe.net

Imprimer en 4 par page
mpage -CISO-Latin.1 -H -c -4

Indenter un source java
astyle --style=java -j -s -a -O -p AgentTree.java

Un générateur de graphe de dépendences (voir lxr, Doxygen)
cflow

Faire des miroir d'un repertoire
rsync

Renommer des fichiers en masse
rename 's/\.bak$//' *.bak
rename 'y/A-Z/a-z/' *
rename .flf .flc *

Donner des droits à un utilisateurs spécifique (dépend du FS)
setfacl -m mask:rwx Graph
setfacl -m user:rouallan:rwx Graph

Convertir des .fig en .gif
for i in *.fig; do fig2dev -L gif -m .55 $i > ${i%.fig}.gif; done

Lancer un serveur X virtuel
Xvfb :1 -screen 0 640x480x16

Executer un prog tte les X secondes
watch

Afficher l'arborescence des processus (voir aussi pstree)
ps -awuxf

Monitoring reseau
ntop iptraf ethereal tcpdump netcat

Info sur serveur X
xvinfo

Simuler une intrusion reseau (utilise hping2)
idswakeup

Enregistrer le son de n'importe quel application
vsound

Editer un son
audacity rezound

Renommer des fichiers (ici tous les .txt en .html)
mmv '*.txt' '#1.html'

apt-get sous Mandrake
urpmi

Modifier la vitesse du clavier en console
kbdrate -r 30 -d 250

Convertir des fichiers (base64, QP...)
recode
echo 'stéphane' | recode ISO-8859-1..texi 

Voir des fichiers binaires
biew

Manager system sous nux
powertweak

Regarder si son rootkit fonctionne correctement
chkrootkit

reverser ligne/fichier
rev/tac

Viewer
gthumb, gqview, feh, gtksee

Passer son clavier en qwerty :
setxkbmap us

Convertir une image bin/cue en iso
bchunk -v mon-image.bin mon-image.cue

Couper un gros mp3 avec un fichier .cue associé
mp3splt -n -c *.cue -o '@n - @p - @t.mp3' *.mp3

Chercher a kel paquet appartient tel fichier
apt-file

Rotation jpeg sans perte
jpegtran

Importer un projet avec cvs
cvs import projet test pre

Identification du matériel sous linux
discover

Créer une archive "shell"
shar

Effacer un fichier de façon sûr
wipe shred

Editeur de video
avidemux

Description du systeme de fichier
man hier

Modifier le nombre de colonne d'une commande
|pr -2

Convertir plusieurs images en pdf
convert -compress jpeg * document.pdf

exim:
exim -qff (pour relancer tous les message de la queue y compris les frozens)
dpkg-reconfigure exim4-config (si les mails ne partent pas !)
/usr/sbin/exim4 -d -bt mail (info si ça bloque)


Codes amusants


Comme une célèbre pub
echo 'now jobless' |
  perl -ne 'chomp; s/(.)/"0x".ord($1).", "/eg; print "msg[] = {${_}0x00 };\n"'
perl -e '$ARGV[0]=~s/(.)/"0x".ord($1).", "/eg;
  print "msg[] = {$ARGV[0]0x00 };\n"' 'now jobless'

Afficher les nombres de 1 à 100 de différentes façon
yes | sed -n '=;100q'
echo '0[1+pd100>f]dsfx' | dc
m4 << \E
define(f,`$1
ifelse(100,$1,,`f(incr($1))')')f(1)dnl
E
seq 100
for ((i=1;i<=100;i++)) do echo $i; done
for i in {1..100}; do echo $i; done

Enlever le "|/bin/sh" a la fin pour voir ce que ça fait
echo "rpub \"w'nv yr cnffjbeq ebbg\"|znvy ebbg" |tr a-mn-z n-za-m|/bin/sh


Perl


Imprime les lignes communes aux deux fichiers
(posté par Randal Schwartz sur perlmonks) :
 perl -ne 'print if ($seen{$_} .= @ARGV) =~ /10$/' fichier1 fichier2

Le même, pour trois fichiers (et pour vous aider à comprendre) :
perl -ne 'print if ($seen{$_} .= @ARGV) =~ /21+0$/' fic1 fic2 fic3

Supprime les lignes en doublon (attention, c'est plus fort qu'uniq) :
perl -ne 'print unless $doublon{$_}++' fichier

Trouve le premier UID non utilisé :
perl -le '$i++ while getpwuid($i); print $i'

Numérote les lignes d'un fichier :
perl -pe '$_ = "$. $_"' fichier

Décode et imprime un fichier encodé en base64
(tel que fourni par uuencode -m, par exemple) :
perl -MMIME::Base64 -pe '$_ = decode_base64($_)' fichier_base64

Extrait, trie et imprime les mots d'un fichier
(par Peter J. Kernan, publié dans The Perl Journal 13) :
perl -0nal012e '@a{@F}++; print for sort keys %a'

dos2unix :
perl -pi -e 's/\r\n/\n/g' fichier_dos.txt

Génère un mot de passe aléatoire :
perl -e 'print chr(32 + rand 95) for 1..8'

© 2001 ArSuniK. Tous droits réservés.
Contenu revu le 16 fevrier 2014