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'
|