Snippets tagged "linux" Snippets tagged "linux"

Extraire toutes les chaînes d'un fichier binaire

En fait, c'est tout bête (mais qu'est ce que ça peut être utilie !) :

$ strings /usr/bin/iconv 
Written by %s.
char
UCS-4
conversion from %s unsupported
conversion to %s unsupported
conversion from %s to %s unsupported
try '%s -l' to get the list of supported encodings
[...]
by Nicolas Perriault on 2008-04-23, tagged cli  extract  linux  string 

Comparer les différences entre deux répertoires

C'est tout con, mais encore faut-il le savoir :)

$ diff -rq rep1/ rep2/
by Nicolas Perriault on 2008-03-22, tagged bash  cli  filesystem  linux 

Dump de toutes les bases d'un serveur MySQL dans des fichiers multiples

Si comme moi vous avez sous la main un serveur abritant plusieurs (dizaines, voir centaines de) bases de données, le jour où une des bases de données plante et qu'on vous demande de la restaurer, je vous souhaite bien du courage si vous n'avez qu'un résultat de mysqldump --all-databases sous la main.

Afin de pallier ce problème, j'ai écris ce script bash qui vous facilitera bien la vie !

Au programme :

  • sauvegarde des dump de chaque base dans des fichiers séparés compressés en gzip, eux même situés dans un dossier nommé en fonction de la date

  • suppression automatique du dump effectué il y a 7 jours.

Le script est destiné à être exécuté par un cron, par exemple toutes les nuits.

#!/bin/bash
 
#paramètres de configuration du script
#completer ici par le nom d'un utilisateur autorisé à dumper toutes vos bases :
strMysqlUser="" 
#completer ici par le mot de passe de cet utilisateur :
strPassword="" 
# completer ici par le chemin vers le repertoire de travail où va se trouver le dump
# il est possible de préfixer le répertoire  :
# "/rep/de/travail/prefix_" donnera alors /rep/de/travail/prefix_20070505
repTravail="" 
 
 
#mémorisation de la date du jour et de la date d'il y a 7 jours
dateActuelle=$(date +%Y%m%d)
datePassee=$(date --date '7 days ago' +%Y%m%d)
 
#Suppression de la sauvegarde d'il y a 7 jours
echo "["$(date +%F\ %X)"] Suppression des dump du "$datePassee
repTravailPasse=$repTravail$datePassee
rm -R $repTravailPasse
 
# début du dump
echo "["$(date +%F\ %X)"] Dump du : "$dateActuelle
repTravailActuel=$repTravail$dateActuelle
mkdir $repTravailActuel
# récupération de la liste des bdd, "tail -n +2" est présent pour ne pas récupérer le titre "Databases" renvoyé par mysql
listDatabase=$(mysql --user=$strMysqlUser --password=$strPassword --exec="SHOW DATABASES;" |  tail -n +2)
 
#dump de chaque base dans un fichier
for lineDatabase in $listDatabase
do
    echo "["$(date +%F\ %X)"] Debut du dump de la base "$lineDatabase" vers "$repTravailActuel
    mysqldump --user="$strMysqlUser" --password="$strPassword" "$lineDatabase" | gzip > "$repTravailActuel"/"$lineDatabase".sql.gz
    echo "["$(date +%F\ %X)"] Dump compressé dans "$repTravailActuel"/"$lineDatabase".sql.gz"
done
echo "["$(date +%F\ %X)"] Fin de la sauvegarde"
exit 0
by gameplayer on 2007-04-26, tagged bash  linux  mysql  server  sysadmin 

Raccourcis pour changer de bash rapidement

Beaucoup de monde connait le ctrl+alt+FX (X allant de 1 à 6 pour les sessions de terminal, et au dessus pour les sessions graphiques)

Je viens de découvrir par hasard le alt+super pour passer rapidement à la console suivante. (super étant assigné à la touche windows sur les claviers prévus pour fonctionner avec les systèmes de Microsoft)

by gameplayer on 2007-04-10, tagged bash  keyboard  linux  shortcut 

Rendre l'execution d'un programme insensible aux déconnexions

On peut utiliser l'utilitaire nohup :

$ nohup batch_script.sh

CTRL+Z + bg mettront la tâche en arrière plan.

by Nicolas Perriault on 2007-03-15, tagged bash  bg  cli  linux  nohup 

Lancer eclipse avec la JVM de Sun

GCJ c'est gentil, mais ça rame. Alors Eclipse avec GCJ... :/

Pour y remédier, on peut lancer Eclipse en forçant la JVM (update-alternatives reste sourd aux incantations à ce niveau)

/usr/bin/eclipse -vm /usr/lib/jvm/java-1.5.0-sun/jre/bin/java -vmargs -Xmx256M

On notera aussi la limitation de mémoire vive utilisable ;)

Pour installer la JVM de Sun si elle n'est pa sprésente sur le système :

sudo apt-get install sun-java5-jre
by Nicolas Perriault on 2007-03-06, tagged eclipse  gcj  java  jvm  linux  ubuntu 
(1 comment)

Lister le matériel de sa machine

Lister toutes les informations de la machine :

$ sudo lshw

Il existe la possibilité d’exporter le résultat dans une page *.html :

$ sudo lshw -html > votre_nom_de_fichier.html

via http://www.pastanque.be/splitsch/ubuntu/106/106.html et le planet ubuntu-fr (http://planet.ubuntu-fr.org)

by gameplayer on 2007-02-26, tagged hardware  linux  sysadmin  ubuntu 

Vérifier l'empreinte md5 d'une image ISO

Avec md5sum :

$ md5sum feisty-desktop-i386.iso

Comparer l'empreinte de l'image ISO avec celle du CD gravé :

Trouver le périphérique à vérifier :

$ cat /etc/fstab | grep cdrom

Vérification :

$ md5sum /dev/hdb
by Nicolas Perriault on 2007-02-17, tagged cdrom  cli  debian  iso  linux  md5  ubuntu 

Sécuriser /tmp

Beaucoup de script-kiddies s'amusent beaucoup avec le répertoire /tmp, par défaut aisément accessible et donc réceptacle à executables falacieux de tous poils.

Voici une méthode permettant de remplacer ce point de montage par un nouveau, de 40Mo mais dont la particularité sera de ne pas autoriser l'execution de programmes (héhé) :

# create a 40MB block device which will be the /tmp file system
cd /root
dd if=/dev/zero of=/root/tmpMnt bs=1024 count=40000
mkfs.ext3 -F /root/tmpMnt
# mount it at /tmp
mv /tmp /tmp.backup
mkdir /tmp
mount -o loop,noexec,nosuid,rw /root/tmpMnt /tmp
chmod 0777 /tmp
# make it so it is used on boot up
if ! grep -qai tmpMnt /etc/fstab ; then 
     echo "/root/tmpMnt /tmp ext3 loop,noexec,nosuid,rw  0 0" >> /etc/fstab
fi
# check your syntax is ok
mount -a
# check that programs in /tmp will not run
cp /bin/ls /tmp/
/tmp/ls

Pour remonter /tmp avec droits d'execution :

# umount /tmp
# mount -o loop,rw /root/tmpMnt /tmp

Et remonter la partition sans les droits d'execution :

# umount /tmp
# mount -o loop,noexec,nosuid,rw /root/tmpMnt /tmp
by Nicolas Perriault on 2007-02-05, tagged linux  security  sysadmin 

[Ubuntu] Intégrer Subversion dans Nautilus

SVN dans Nautilus via un clic droit, c'est possible :

$ sudo apt-get install nautilus-script-collection-svn
$ nautilus-script-manager enable Subversion

Merci glooze ;)

by Nicolas Perriault on 2007-01-30, tagged linux  nautilus  subversion  svn  ubuntu 

Ajouter automatiquement tous les nouveaux fichiers et dossiers dans un dépôt Subversion

The command line is my friend.

$ svn stat | grep ? | awk '{ print $2 }' | xargs svn add
by Nicolas Perriault on 2007-01-30, tagged awk  cli  grep  linux  subversion  svn 

Donner les pouvoirs d'administration système à un utilisateur

En admettant l'existance d'un utilisateur toto :

$ sudo adduser toto admin

L'utilisateur toto sera automatiquement ajouté aux sudoers et pourra donc executer le commande sudo en s'identifiant au moyen de son mot de passe.

by Nicolas Perriault on 2007-01-18, tagged cli  linux  sysadmin  ubuntu 
(1 comment)

Compter le nombre d'occurence d'un terme dans un répertoire

Dans tous les fichiers de type texte, calcul du nombre d'occurence d'une chaîne de caractère avec grep et wc :

$ grep -r require_once /path/to/scan | wc -l
1454

On peut aussi exclure certaines ressources ou répertoires, avec grep -v :

$ grep -r require_once /path/to/scan | grep -v .svn | wc -l
735
by Nicolas Perriault on 2007-01-16, tagged cli  grep  linux  search  sysadmin 

Changer les caractères <CR> en <LF>

Convertir rapidement et simplement les caractères \r en \n :

$ perl -pi -e 's#\r#\n#gs' /path/to/file
by Nicolas Perriault on 2007-01-15, tagged character  cli  linux  perl  string 
(1 comment)

Effacer les fichiers trop volumineux

Find est un outil magnifiquement simple et puissant. Par exemple, pour supprimer tous les fichiers de plus de 500Kb dans le répertoire courant :

$ find . -type f -size +500 | xargs rm
by Nicolas Perriault on 2007-01-11, tagged bash  cli  filesystem  linux 

Turn on Bash Smart Completion

Just edit /etc/bash.bashrc

Uncomment the following lines, by removing the # in the beginning of the lines:

#if [ -f /etc/bash_completion ]; then
# . /etc/bash_completion
#fi

Now, resource the modified file :

$ source /etc/bash.bashrc

Then try to tape apt-cache [TAB][TAB]

You will have this result in replacement of the habitual list of files and directories of your current path :

$ apt-cache
add        dotty      dumpavail  pkgnames   rdepends   show       showsrc    unmet
depends    dump       gencaches  policy     search     showpkg    stats      xvcg

It works with a lot of functions like cd (it will provide only directories), apt-get,...

It also enable code completion when using the sudo command.

Isn't it useful ?

Nota : The tip I give here is to activate Smart Completion for all users. If you want to activate it for only one user (or if you want to activate it but doesn't have write rights to /etc/bash.bashrc) you can modify your ~/.bashrc file and uncomment the same lines as described upper and resource it with

$ source ~/.bashrc
by gameplayer on 2007-01-11, tagged bash  debian  linux  sysadmin  ubuntu 
(2 comments)

Trouver tous les fichiers modifiés récemment

To find files modified between the last x days and the last y days (x > y) in the current directory (x and y are integers) :

$ find ./ -ctime -x -ctime +y
by gameplayer on 2007-01-03, tagged files  linux  sysadmin 

Downgrader un package sous Ubuntu

On peut forcer la version d'un paquet à installer :

$ sudo aptitude install nomdupaquet=1.2.3-version2
by Nicolas Perriault on 2006-12-21, tagged apt  debian  linux  sysadmin  ubuntu 

Effacer les lignes vides d'un fichier

$ sed '/^$/d' fichier.txt
by Nicolas Perriault on 2006-12-09, tagged cli  linux  sed  string 

Installer DBDesigner4 sur Ubuntu

$ wget -c http://213.115.162.124/external/DBDesigner4/DBDesigner4-0.5.4-0.i586.rpm
$ wget -c http://prdownloads.sourceforge.net/skychart/libborqt-6.9.0-2.i386.rpm?use_mirror=switch
$ sudo alien DBDesigner4-0.5.4-0.i586.rpm
$ sudo alien libborqt-6.9.0-2.i386.rpm
$ sudo dpkg -i dbdesigner4_0.5.4-1_i386.deb
$ sudo dpkg -i libborqt_6.9.0-3_i386.deb
$ sudo ln -sf /usr/lib/DBDesigner4/*.so /usr/lib

Une dernière chose :

http://forums.mysql.com/read.php?113,59885,59926#msg-59926

by Nicolas Perriault on 2006-12-04, tagged linux  mysql  softs  ubuntu 
(2 comments)

Lister les process arboressentiels sous nunux

Au choix :

$ pstree

ou :

$ ps afx
by Nicolas Perriault on 2006-11-13, tagged linux  sysadmin 

Migrer un dépôt Subversion d'une machine à une autre

Sur l'ancienne machine :

$ svnadmin dump /var/lib/subversion/myproject > ~/myproject.svndump
$ scp ~/myproject.svndump new-server:

Sur la nouvelle machine :

$ svnadmin create /var/lib/subversion/myproject
$ svnadmin load /var/lib/subversion/myproject < ~/myproject.svndump

Via http://fashion.hosmoz.net/blog/post/2006/11/09/Migrer-un-depot-subversion

by Nicolas Perriault on 2006-11-12, tagged linux  subversion  sysadmin 

Compter le nombre de fichiers en fonction d'un pattern

$ ls -R /my/path/ | grep -v monpattern | wc -l
by Nicolas Perriault on 2006-11-05, tagged count  linux  sysadmin  ubuntu 

Dumper toutes les bases mysql et les réimporter

Dump :

$ mysqldump -uroot -p --all-databases --opt > export.sql

Reimport :

$ mysql -uroot -p < export.sql

Avec compression bz2 :

Export :

$ mysqldump -uroot -p --all-databases --opt | bzip2 > export.sql.bz2

Réimport :

$ bzcat export.sql.bz2 | mysql -uroot -p
by Nicolas Perriault on 2006-11-05, tagged linux  mysql  server  sysadmin  ubuntu 
(4 comments)

Changer le nom d'une machine

En admettant que l'on veuille renommer la machine "anciennom" par "nouveaunom" :

$ sudo hostname nouveaunom

Puis remplacer anciennom par nouveaunom dans les fichiers /etc/hostname et /etc/hosts

by Nicolas Perriault on 2006-11-05, tagged linux  sysadmin  ubuntu 
(2 comments)

Exporter et réimporter la liste des paquets installés

Genre pour reproduire la config d'un ancien serveur vers un nouveau serveur.

Export :

$ sudo dpkg --get-selections > selections.txt

Réimportation :

$ sudo dpkg --set-selections < selections.txt

Réinstallation des paquets :

$ sudo apt-get dselect-upgrade
by Nicolas Perriault on 2006-11-01, tagged backup  debian  dpkg  linux  restore  server  sysadmin  ubuntu 

Mirrorer un répertoire d'une machine à une autre via SSH

Pour synchroniser un répertoire d'une machine A vers une machine B en passant par SSH (avec preservation des droits) :

$ rsync -avz -e ssh someuser@server1.example.com:/var/www/ /var/www/

Utile également pour migrer une machine vers une autre.

by Nicolas Perriault on 2006-11-01, tagged linux  mirroring  rsync  server  sysadmin  ubuntu 

[Ubuntu] Installer wifi-radar et network-manager

La gestion native par défaut du wifi sous Ubuntu laisse un poil à désirer, voici quelques outils intéressants pour y pallier :

$ sudo apt-get install wifi-radar network-manager-gnome

Note concernant Network Manager :

Il faut vider les paramètres de configuration des interfaces réseau dans le fichier /etc/network/interfaces et rebooter pour que le logiciel fonctionne correctement.

by Nicolas Perriault on 2006-10-30, tagged desktop  linux  ubuntu  wifi 

Installer les pilotes libres ATI sous Edgy

$ sudo apt-get update
$ sudo apt-get install linux-restricted-modules-$(uname -r) 
$ sudo apt-get install xorg-driver-fglrx
$ sudo depmod -a
$ sudo aticonfig --initial
$ sudo aticonfig --overlay-type=Xv

À la fin du fichier /etc/X11/xorg.conf :

Section "ServerFlags"
  Option  "AIGLX" "off"
EndSection
 
Section "Extensions"
  Option "Composite" "Disable"
EndSection
 
Section "DRI"
  Mode 0666
EndSection

Puis :

$ sudo shutdown -r now

Pour confirmer que ça marche :

$ fglrxinfo
display: :0.0  screen: 0
OpenGL vendor string: ATI Technologies Inc.
OpenGL renderer string: RADEON 9600 Generic
OpenGL version string: 2.0.6011 (8.28.8)
by Nicolas Perriault on 2006-10-28, tagged 3d  ati  drivers  linux  ubuntu 

Trouver le nombre de slots mémoires disponibles/occupés sous Linux

Sous linux :

$ dmidecode | grep -i "size"

Ce qui renvoie un truc du genre :

Size: 512 MB
Size: 512 MB
Size: No Module Installed
Size: No Module Installed
Size: No Module Installed
Size: No Module Installed

Donc là on a 6 slots occupés par deux barrettes de 512Mo.

by Nicolas Perriault on 2006-10-26, tagged bash  cli  hardware  infos  linux