Voici comment passer une chaîne en majuscule en ligne de commande :
echo toto | tr '[a-z]' '[A-Z]'
La commande tr est très utile pour effectuer tout remplacement de caractère.
dimanche 4 janvier 2009
Par dooblem le dimanche 4 janvier 2009, 13h51
Voici comment passer une chaîne en majuscule en ligne de commande :
echo toto | tr '[a-z]' '[A-Z]'
La commande tr est très utile pour effectuer tout remplacement de caractère.
mardi 30 décembre 2008
Par dooblem le mardi 30 décembre 2008, 17h47
Vous disposez sur votre système d’une batterie de disques configurés avec du RAID1 logiciel (/dev/md0). L’espace de stockage est géré par LVM.
Vos deux disques étant en mirroir, il peut être utile de « casser » le RAID pour pouvoir disposer librement du stockage sur le deuxième disque, ou encore, dans le cadre d’une refonte, d’installer un tout nouveau système sur le deuxième disque, qui remplacera le premier à l’avenir.
En premier lieu, quelques commandes utiles en tout temps pour le diagnostic :
mdadm, le couteau suisse du RAID logiciel :
cat /proc/mdstat mdadm --detail /dev/md0
La batterie de commandes LVM2 :
pvdisplay pvs vgdisplay vgs lvdisplay lvs
La manipulation ne coule pas de source. En voici les étapes :
cat /proc/mdstat montre les deux disques actifs (U pour Up). On marque le deuxième disque (/dev/hdc1) comme défectueux puis on l’enlève de la séquence de RAID pour pouvoir l’utiliser librement :
mdadm --manage --set-faulty /dev/md0 /dev/hdc1 mdadm -r /dev/md0 /dev/hdc1
L’objectif maintenant est de remonter la deuxième moitié du RAID/LVM de manière indépendante, mais sans perdre les données dupliquées présentes.
Il faut donc créer une nouvelle séquence RAID identique à la première en partant du deuxième disque. L’initialisation de /dev/md1 se fait comme suit :
mdadm --create --verbose /dev/md1 --level=mirror --force --raid-devices=1 /dev/hdc1
cat /proc/mdstat doit montrer les deux séquences.
La difficulté désormais est de faire en sorte que le système voie les deux VGs de manière indépendante, car toute commande LVM affiche désormais un avertissement du style :
Found duplicate PV LbpGyrR4uvsZivUwqnJQMYoZbCPTCpgu: using /dev/md1 not /dev/md0
Le soucis est que les deux PVs sur les deux raids possèdent le même UUID, du coup LVM utilise le PV qui n’est pas celui du système actuel. Le problème est ici assez insoluble. Le seul moyen de s’en sortir est d’utiliser la commande pvcreate pour attribuer un nouveau UUID.
D’autre part, impossible d’utiliser cette commande sur un PV qui contient des LVs actifs (pvcreate refuse).
Ajouter des filtres sur /dev/md0 ou /dev/md1 dans /etc/lvm/lvm.conf ne donne rien non plus car pvcreate ne les verra pas.
Voici donc la manipulation :
Vérifiez la présence d’un fichier /etc/lvm/backup/NOM_DU_VG, ou faite en une sauvegarde à l’aide de la commande vgcfgbackup.
Initialisez un volume physique (PV) vierge sur /dev/md1 en forçant la création :
pvcreate -ff /dev/md1
Puis un VG :
vgcreate vg2 /dev/md1
Copiez le fichier /etc/lvm/backup/NOM_DU_VG et éditez le :
cp /etc/lvm/backup/vg /tmp/vg2 vi /tmp/vg2
Modifiez tous les UUID du fichier de sauvegarde. Il suffit par exemple, dans chaque UUID, de modifier un chiffre. Modifiez aussi le nom du vg. Pour le UUID du PV, mettez celui du PV récemment initialisé sur /dev/md1 (commande pvdisplay).
Il est maintenant possible de restaurer la sauvegarde :
vgcfgrestore --file /tmp/vg2 vg2
Si tout s’est bien passé, on peut ensuite activer les LVs puis les monter :
vgchange -a y vg2 mount /dev/vg2/LV /mnt/test/
samedi 22 novembre 2008
Par dooblem le samedi 22 novembre 2008, 18h17
La Livebox que j’utilise pour me connecter en Wifi me pose le problème suivant :
Le serveur DHCP envoie sa propre adresse 192.168.1.1 comme serveur DNS... logique, me direz-vous, sauf que la boîboîte est incapable de répondre aux requêtes DNS inverses, utilisées par pas mal d’applications. Dès qu’une de ces requêtes est envoyées, donc, l’application en question gèle pendant quelques secondes jusqu’à un certain délai.
$ time nslookup 74.125.43.147 192.168.1.1 ;; connection timed out; no servers could be reached real 0m15.028s user 0m0.016s sys 0m0.000s
Alors qu’en utilisant un serveur DNS qui fonctionne :
$ nslookup 74.125.43.147 80.10.246.2 Server: 80.10.246.2 Address: 80.10.246.2#53 Non-authoritative answer: 147.43.125.74.in-addr.arpa name = bw-in-f147.google.com. Authoritative answers can be found from:
Jusqu’à maintenant, j’avais ajouté les serveurs DNS à la main dans /etc/dhcp3/dhclient.conf
en utilisant la directive prepend domain-name-servers 80.10.246.2.
Oui mais voila, à chaque fois que me connecte sur un autre réseau Wifi non Livebox, les serveurs DNS (du réseau Livebox) ne sont plus accessibles, et du coup il fallait modifier le resolv.conf à la main pour retirer lesdits serveurs DNS.
Ajouter un script bien placé, qui vérifie si on est derrière une Livebox pour modifier le fichier resolv.conf comme il se doit.
Le script est à placer dans /etc/network/if-up.d/fixdns avec le contenu suivant :
#!/bin/sh # script pour ajouter d'autres serveurs dns derrière une livebox # si on reconnait la livebox, on fait la modif dans le resolv.conf if arp "$DHCP4_DHCP_SERVER_IDENTIFIER" | grep -q 00:1b:bf:3d:21:49 then cp /etc/resolv.conf.livebox /etc/resolv.conf fi
Et voila, le tour est joué ! Cette solution a le mérite de fonctionner avec NetworkManager, qui n’exécute pas les scripts de /etc/dhcp3/dhclient-enter-hooks.d/.
jeudi 13 novembre 2008
Par dooblem le jeudi 13 novembre 2008, 21h56
J’ai récemment récupéré une tablette Trust TB-2100 :
$ lsusb Bus 002 Device 005: ID 08ca:0021 Aiptek International, Inc. APT-2 Tablet
J’ai enfin réussi à faire fonctionner la bête.
Il faut installer le pilote xorg :
sudo aptitude install xserver-xorg-input-aiptek
Ensuite créer le fichier /etc/udev/rules.d/61-aiptek.rules pour ajouter le périphérique dans udev :
BUS=="usb", DRIVER=="aiptek", KERNEL=="event[0-9]*", SYMLINK+="input/aiptektablet"
KERNEL=="event[0-9]*", SYSFS{vendor_id}=="0x08ca", SYMLINK+="input/aiptektablet"
SUBSYSTEMS=="usb", DRIVERS=="aiptek", ATTRS{size}=="3000x2250", ATTRS{model_code}=="0x0064", SYMLINK+="input/aiptektablet"
Dans Ubuntu Intrepid, la configuration Xorg des périphérique d’entrée ne se fait plus dans xorg.conf, mais dans HAL.
On ajoute un fichier /etc/hal/fdi/policy/10-aiptek.fdi contenant :
<?xml version="1.0" encoding="ISO-8859-1" ?> <deviceinfo version="0.2"> <device> <match key="info.product" contains="Aiptek"> <merge key="input.x11_driver" type="string">aiptek </merge> <merge key="input.x11_options.SendCoreEvents" type="string">true </merge> <merge key="input.x11_options.Type" type="string">stylus </merge> <merge key="input.x11_options.Mode" type="string">absolute </merge> </match> </device> </deviceinfo>
Enfin, on redémarre le système et on prie pour que ça marche. Je n’ai pas réussi en redémarrant simplement HAL et Xorg.
Commandes utiles pour déboguer :
xinput hal-device udevinfo -a -p $devpath # on trouve devpath dans dmesg
Sources :
mardi 11 novembre 2008
Par dooblem le mardi 11 novembre 2008, 21h50
Pour démarrer avec le bluetooth désactivé au démarrage sous Ubuntu Intrepid :
Dans /etc/init.d/bluetooth, placez :
BLUETOOTH_ENABLED=0
jeudi 18 septembre 2008
Par dooblem le jeudi 18 septembre 2008, 14h16
Assez d’entendre les bips intempestifs de votre PC sous Linux.
rmmod pcspkr echo "blacklist pcspkr" >> /etc/modprobe.d/blacklist
mardi 12 août 2008
Par dooblem le mardi 12 août 2008, 09h41
Pour afficher l’empreinte digitale (fingerprint) d’un système Unix :
ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key
mardi 29 juillet 2008
Par dooblem le mardi 29 juillet 2008, 14h43
rsync est un outil très puissant de copie/transfer/sauvegarde de fichiers sous Unices.
Pour effectuer une sauvegarde triviale, on peut l’utiliser de la manière suivante :
rsync -av MES_DONNEES DOSSIER_SAUVEGARDE
Plutôt que de refaire une copie intégrale de mes données dans le dossier de sauvegarde à chaque sauvegarde, il est plus intelligent d’utiliser rsync combiné avec le système de fichiers ext3 pour faire des sauvegardes incrémentales.
cp -al DOSSIER_SAUVEGARDE_HIER DOSSIER_SAUVEGARDE
rsync -av MES_DONNEES DOSSIER_SAUVEGARDE
Le cp -al recopie le dossier en créant des nouveau répertoire, mais en faisant des liens en dur vers les fichiers. En faisant un rsync par dessus, seuls les fichiers modifiés sont copiés. Ainsi, on utilise de l’espace disque en plus seulement pour les nouveaux fichiers. Le plus fort, c’est qu’on peut accéder à chaque dossier de sauvegarde de manière très rapide car ils sont tous identiques aux originaux. Un mini système de gestion de versions très simple à mettre en place.
Mais le plus fort c’est que rsync peut tout faire à notre place :
rsync -av --link-dest=DOSSIER_SAUVEGARDE_HIER MES_DONNEES DOSSIER_SAUVEGARDEPar dooblem le mardi 29 juillet 2008, 14h27
Dans certains langages, il est possible de faire référence à une variable dont le nom est contenu dans une autre variable.
Ainsi, en PHP :
$toto = 8; $nomvar = 'toto'; echo $$nomvar;
Affichera 8.
C’est aussi possible en Bash de la manière suivante :
toto=8 nomvar='toto' echo ${!nomvar}
mardi 8 juillet 2008
Par dooblem le mardi 8 juillet 2008, 19h06
Si un jour vous vous retrouvez dans l’impossibilité de vous loger et que vous obtenez le message d’erreur :
/bin/bash: Too many open files
Ouille ouille. Moi j’ai été obligé de faire un Ctrl+Alt+Suppr pour redémarrer.
Quelques astuces :
Pour obtenir la limite max de nombre de fichiers ouverts :
cat /proc/sys/fs/file-max
Pour changer cette limite :
sysctl -a | grep file-max echo fs.file-max=200000 >> /etc/sysctl.conf sysctl -p
Les limites par utilisateur sont présentes dans /etc/security/limits.conf
Enfin, cerise sur le gâteau, pour obtenir les processus qui mangent le plus de descripteurs :
lsof +c 15 | awk '{printf("%15s (%s)\n", $1, $2)}' | sort | uniq -c | sort -rn
Sources :
jeudi 19 juin 2008
Par dooblem le jeudi 19 juin 2008, 08h36
La commande screen est très pratique pour lancer des scripts lorsqu’on est connecté en SSH, pour que si une coupure de courant ou un problème survient côté client, le shell client ne soit pas tué ainsi que le script.
Pour lancer un script :
$ screen
Pour le détacher, il faut faire Ctrl+A, puis D.
Enfin, pour récupérer un screen :
$ screen -r
mardi 3 juin 2008
Par dooblem le mardi 3 juin 2008, 21h38
Je trouve toujours que la taille de la police de gvim est un tantinet trop grande.
Pour une taille plus petite, rajouter ceci dans votre ~/.vimrc :
set guifont=Monospace\ 8
page 2 de 2 - billets suivants »