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