Tribulations d'un ingénieur système

Aller au contenu | Aller au menu | Aller à la recherche

mercredi 14 janvier 2015

Filtrer les commandes de l'historique

via http://wiki.debian-facile.org/_export/pdf/doc:programmation:bash:history

Pour faciliter le rappel des commande depuis l'historique, créer un fichier .inputrc dans le dossier utilisateur :

"\e[A": history-search-backward
"\e[B": history-search-forward
set show-all-if-ambiguous on
set completion-ignore-case on

Taper les premières lettres de la commande et utiliser ensuite, comme d'habitude, les flèches haut ou bas pour naviguer dans l'historique. Seul les commandes de l'historique commençant celle que vous avez tapé seront affiché.

iftop : paramètre par défaut

J'utilise régulièrement iftop ou nethogs sur mes serveurs pour contrôler les connexions réseaux. Et pour éviter de taper à chaque fois les mêmes paramètres pour iftop, il est possible de créer un fichier .iftoprc dans le dossier utilisateur avec des paramètres prédéfinis.

Exemple de contenu du fichier /root/.iftoprc :

interface: eth0
dns-resolution: yes
show-bars: no
use-bytes: yes

Le fichier ci-dessous positionnera les options "-Bbn -i eth0" pour la commande iftop par défaut.

vendredi 25 juillet 2014

Remplacer les caractères Windows dans les noms de fichiers déposés sur un serveur Linux

Parce que des fois, les utilisateurs ne respectent pas la consigne et ne modifient pas le jeu de caractères par défaut dans Filezilla. Je me retrouve alors avec des noms de fichiers illisibles sur mon Linux. Tous les caractères incorrectes sont alors remplacés par des points d’interrogation.

Exemple : R?union pr?paratoire aux ouvrages de ma?onneries

Je lance donc la commande ci-dessous dans un Cron (quoi qu'un déclenchement sur un inotify serait plus judicieux)

find /data ! -name "*" -exec convmv -f iso-8859-15 -t utf8 -r --nosmart --notest '{}' \;

Cette ligne de commande est d'autant plus imbitable que vous ne trouverez pas les astuces utilisées ici dans le Man de find.

La commande find avec comme paramètre name "*" renvoie tous les fichiers. Vraiment tous ? Non ! Les fichiers dont le codage n'est pas correct ne sont pas renvoyés par find. le point d'exclamation inverse le filtre d'un paramètre dans find. Ainsi, la commande find . ! -name "*" retourne tous les fichiers dont le codage est incorrect.

La commande convmv permet de renommer un fichier d'un encodage vers un autre. A ne pas confondre avec iconv qui modifie le contenu du fichier.

jeudi 24 juillet 2014

Modification de la taille ou ajout d'un disque dur à chaud !

La méthode pour que Linux détecte à chaud un nouveau disque dur sans reboot.

echo "- - -" > /sys/class/scsi_host/host0/scan


Chaque périphérique SATA, SCSI ou FiberChannel correspond à un numéro de Host différent : host0, host1, host2....
Si on ne connaît pas la correspondance entre le numéro du host et le disque associé, on peut lancer un scan sur tous les host scsi sans risque en abusant de cette chère commande find :

Pour Redhat 5:
find /sys/class/scsi_host -type f -name scan -exec sh -c 'echo "- - -" > {}' \;

Pour Redhat 6:
find /sys/devices -type f -name scan -exec sh -c 'echo "- - -" > {}' \;


L'emplacement des entrées host0, host1... a été déplacé quelque part entre le Kernel 2.6.18 et 2.6.35 vers /sys/devices. Il reste des liens symboliques de /sys/class vers /sys/devices mais find ne les suit pas sauf si l'on ajoute l'option -follow, ce que je ne conseille pas en raison des liens récursifs.

La méthode pour que Linux détecte à chaud la nouvelle taille d'un disque dur sans reboot.

echo "1" > /sys/class/scsi_device/0\:0\:0\:0/device/rescan

Le code 0\:0\:0\:0 dépend du numéro de la carte SCSI (ou SATA) et doit être modifié en fonction du besoin. Si on ne connaît pas la correspondance entre le numéro du device et le disque, on peut lancer un scan sur tous les device sans risque avec la commande
find /sys/class/scsi_device -name '*:*' -exec sh -c 'echo "1" > {}/device/rescan' \;


Si vous êtes sur un serveur physique avec le multipath, il faut relancer le service multipath après la détection des disques.
service multipath-tools restart

page 2 de 2 -