Cet article a pour but de répertorier quelques astuces que j’utilise fréquemment./wiki/index.linux.php5?wiki=AstucesEnVrac » target= »_blank » rel= »noopener noreferrer »>Wiki Linux
Renommer des fichiers
Il est parfois utile de renommer des fichiers pour par exemple remplacer/supprimer des caractères spéciaux (dans cet exemple les : qui ne sont pas supportés pas Windows…)
for ix in *.png; do mv "$ix" "`echo $ix | sed 's/chaine a remplacer/chaine de remplacement/'`";done
ou
for ix in *.png; do mv "$ix" "`echo $ix | tr ':' '-'`";done
Renommer des fichiers en .old
Il est parfois utile de renommer des fichiers en .old pour en faire une sauvegarde.
Pour cela un simple script copytoold.sh permet de le faire
#!/bin/sh
for ix in $@;do cp "$ix" "$ix.old";done
Faire un Checkout svn derrière un proxy
Il faut éditer le fichier /etc/subversion/servers et modifier les lignes :
[global]
http-proxy-host = proxy.domain.com
http-proxy-port = 8080
Faire un md5sum récursif
find . -type f -exec md5sum {} \;
Lancer Wireshark sans les droit root et avoir accès aux interfaces réseau
Comme expliqué sur le wiki de wireshark :
sudo setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/bin/dumpcap
Do While en bash
while true;do commande;sleep 1;done
Désactiver un coeur du CPU
De façon dynamique :
sudo echo 0 > /sys/devices/system/cpu/cpu2/online
Au démarrage en ajoutant « maxcpus=n » aux bootargs
Convertir un fichier binaire en tableau C
Avec la commande
xxd -c16 -i fichier_binaire
Créer une copie d’un ftp en ligne de commande
wget -m ftp://user:pass@server.com/
Effacer efficacement un fichier
shred -z -u -v nomdufichier
ou
srm -zv nomdufichier
Effacer efficacement récursivement plusieurs fichiers
find nomdurepertoire -type f -exec shred -z -u -v {} \;
ou
srm -rzv nomdurepertoire;
Faire fonctionner la touche Backspace en console ou via ssh
Il arrive parfois que la touche Backspace (ou Del) ne fonctionne pas correctement et à la place d’effacer le caractère précédent, affiche ^?. Il faut donc affecter l’effacement à cette touche avec la commande :
stty erase ^?
Afficher les différentes affectations se fait avec la commande :
stty -a
Recherche d’une chaîne de caractères dans des fichiers jar
find . -name "*.jar" -exec echo '{}' \; -exec zipgrep "Chaine a chercher" '{}' \;
Extraire l’extension et le nom du fichier
filename=$(basename "$fullfile")
extension="${filename##*.}"
filename="${filename%.*}"
Supprimer une extension
for ix in *.old; do mv $ix $(basename $ix .old);done
Télécharger plusieurs répertoires avec rsync et ssh
rsync --protect-args --partial --progress --rsh=ssh -r username@url:/home/ubuntu/dir/dir/{Dir1,Dir2,Dir3} ./
Utilisation de screen
Lancement :
screen
Mise en arrière plan :
CTRL+a d
Recuperation de la console :
screen -r
Boucle for en bash
De 1 à 10 :
for IX in $(seq 1 10); do echo $IX; done
Avec des 0 pour 01 à 10
for IX in $(seq -w 1 10); do echo $IX; done
Découper un mp3 grâce à un fichier cue
Pour le découper et nommer numéro de piste – Groupe – Titre :
mp3splt -f -c fichier.cue fichier.mp3 -o @n+-+@p+-+@t
Gestion du swap sous linux
Il est possible de savoir à partir de combien de pourcent de RAM restante le système va commencer à swapper :
cat /proc/sys/vm/swappiness
Pour modifier cette valeur et attendre par exemple 90% de RAM utilisée il suffit d’ajouter/modifier l’entrée vm.swappiness dans /etc/sysctl.conf comme par exemple
vm.swappiness = 10
Afficher les informations de connections de la freebox V5
wget -qO- http://mafreebox.freebox.fr/pub/fbx_info.txt
Et si il y a un problème d’accents :
wget -qO- http://mafreebox.freebox.fr/pub/fbx_info.txt|iconv -f iso8859-1 -t utf8
Aspirer un site web
-s0 : Sans prise en compte du robots.txt
-A1000000 : Vitesse max de 1Mo/s
-%c2 : max 2 connections par secondes
httrack --mirror http://site.web/ -s0 --disable-security-limits -A1000000 -%c2
Cela peut aussi être fait avec un wget récursif:
wget -r -np -R "index.html*" http://site.web/
Simulation d’appuis touche
Pour scripter des appuis sur des touches et pouvoir se la jouer sans les mains il y a l’outil xdotool.
Pour un appuis sur plusieurs touches en même temps il faut les séparer par +, dans l’exemple suivant le focus est mis sur Firefox, puis un appuis simultané sur les touches a, s, l et p, tout en les maintenant enfoncées.
#!/bin/bash WID=`xdotool search --name "Mozilla Firefox" | head -1` xdotool windowfocus $WID while [ 1 ] do xdotool keydown a+s+l+p sleep 0.1 done
Compresser tous les répertoires d’un répertoire dans des archives séparées
#!/bin/bash for f in *; do if [[ -d $f ]]; then # $f is a directory tar cvzf "$f".tar.gz "$f" fi done
Copier des fichiers dans des sous-répertoires en fonction de leur 1er caractere
#!/bin/bash
for ix in $(seq 0 9); do
echo $ix
mkdir $ix
for f in *; do
if [[ -f $f ]]; then
if [ ${f:0:1} = $ix ]; then
# echo $f
mv $f $ix
fi
fi
done
done
Effacer une ligne en bash pour afficher un autre texte
Les options
-n do not output the trailing newline
-e enable interpretation of backslash escapes
\r carriage return
#!/bin/bash echo "test" while true;do echo -en "\r-";sleep 1 echo -en "\r\\";sleep 1 echo -en "\r|";sleep 1 echo -en "\r/";sleep 1 done
Récupérer un fichier protégé par cookies et referer avec wget
wget --cookies=on --keep-session-cookies --save-cookies=cookie.txt http://first_page
wget --referer=http://first_page --cookies=on --load-cookies=cookie.txt --keep-session-cookies --save-cookies=cookie.txt http://second_page
Serveur Web Simple
Thin est un serveur web simple en Ruby.
Fichier de configuration config.ru pour partager le répertoire local:
run Rack::Directory.new(Dir.pwd)
Commande pour lancer le serveur sur le port 8000 avec le fichier de config précédent :
thin -Rconfig.ru start -p 8000
Convertir une chaîne de caractère hexadécimale en fichier binaire
echo "506C6F70" | xxd -r -p > plop
Comparaison hexadécimale en bash
[[ 0x8000 -gt $CMD1 ]] && echo yes|| echo no
Empêcher l’upmix sur pulseaudio
Pour que pulseaudio ne recopie pas le stéréo sur les différents canaux audio de l’ampli, il suffit de rajouter dans le fichier /etc/pulse/daemon.conf les lignes suivantes :
enable-remixing = no
enable-lfe-remixing = no
Ajouter les droits en lecture récursivement
Le X permet d’ajouter l’exécution sur les répertoires uniquement.
chmod -R +rX *
Copier des images en fonction de leurs données EXIF
Suite à la récupération d’images avec photorec sur un disque dur formaté par erreur, il faut parfois faire une première passe de tri.
#!/bin/bash mkdir AX250 mkdir D700 mkdir FE4020 for ix in *;do if [[ -f $ix ]];then if [[ $(file $ix |grep AX250) ]]; then echo "AX250 $ix" cp $ix AX250/ fi if [[ $(file $ix |grep D700) ]]; then echo "D700 $ix" cp $ix D700/ fi if [[ $(file $ix |grep FE4020) ]]; then echo "FE4020 $ix" cp $ix FE4020/ fi fi done
Copier des répertoires sur un ftp en ligne de commande
ncftpput -R -v -u root -P 2100 192.168.0.4 /raid0/data/_NAS_Media/Vacances/ ./Photos*
minicom
minicom -o -b 115200 -8 -con -w -D /dev/ttyUSB0
-o : Do not initialize
-b : Specify the baud rate
-8 : 8bit characters pass through without any modification
-con : Color on
-w : Turns line-wrap on at startup by default
-D : Specify the device
Montage d’une partition d’une image disque
Il faut récupérer l’offset avec parted :
esver@PC:~/sav$ parted disque.img
Utilisation de /home/esver/sav/disque.img
Bievenue sur GNU Parted ! Tapez 'help' pour voir la liste des commandes.
(parted) unit B
(parted) print
Modèle: (file)
Disque /home/esver/sav/disque.img : 1500301910016B
Taille des secteurs (logiques/physiques): 512B/512B
Table de partitions : msdos
Disk Flags:
Numéro Début Fin Taille Type Système de fichiers Fanions
1 1048576B 1500301492223B 1500300443648B primary ext4 démarrage
(parted) quit
mount -o loop,ro,offset=1048576 disque.img /mnt/tempo
Utilisation de fsck sur une partition d’une image disque
Montage sur loop0 (avec l’offset donné par parted par exemple)
losetup -o 1048576 /dev/loop0 disque.img
Utilisation d’un autre superblock pour réparer la partition (donné par testdisk par exemple)
sudo fsck.ext4 -p -b 163840 -B 4096 /dev/loop0
Accéder à apt sous Ubuntu 12.04 derrère un proxy cntlm
Il faut créer un fichier 99fixbadproxy
Acquire::http::Pipeline-Depth 0;
Acquire::http::No-Cache true;
Acquire::http::BrokenProxy true;
Et si cela ne suffit pas, il est possible d’utiliser la commande
sudo apt-get update -o Acquire::CompressionTypes::Order::=gz
Configuration rapide de VsFTPd
Créer un utilisateur avec useradd et lui mettre un mot de passe et le shell /bin/false
Ajouter dans /etc/shells le shell /bin/false
Dans le fichier /etc/vsftpd.conf mettre chroot_local_user=YES