<?xml version="1.0" encoding="UTF-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <title>Latest snippets tagged sysadmin</title>
  <link rel="alternate" href="http://snippets.prendreuncafe.com/snippets/tagged/sysadmin/order_by/date"></link>
  <id>http://snippets.prendreuncafe.com/snippets/tagged/sysadmin/order_by/date</id>
  <updated>2007-06-08T14:54:18Z</updated>
  <author>
    <name>Symfony</name>
    <author_email>noreply@symfony-project.com</author_email>
  </author>
<entry>
  <title>Corriger l'encodage d'un fichier MYSql</title>
  <link href="http://snippets.prendreuncafe.com/snippet/69"></link>
  <updated>2007-06-08T14:54:18Z</updated>
  <id>69</id>
  <summary type="html">Pour corriger les caractères bizarres qui peuvent apparaitre à la place des accents après une remontée d'un fichier de dump, il est possible de fixer l'encodage pour la connexion en rajoutant au début du fichier la ligne :

[code]
SET CHARACTER SET &lt;encodage&gt;;
[/code]

J'utilise notamment souvent UTF8 dans ce cas, le fichier provenant d'un dump effectué sous linux, et remontant dans une base en latin1.</summary>
</entry>
<entry>
  <title>Dump de toutes les bases d'un serveur MySQL dans des fichiers multiples</title>
  <link href="http://snippets.prendreuncafe.com/snippet/67"></link>
  <updated>2007-04-26T18:49:13Z</updated>
  <id>67</id>
  <summary type="html">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.

[code]
#!/bin/bash

#paramètres de configuration du script
#completer ici par le nom d'un utilisateur autorisé à dumper toutes vos bases :
strMysqlUser=&quot;&quot; 
#completer ici par le mot de passe de cet utilisateur :
strPassword=&quot;&quot; 
# 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  :
# &quot;/rep/de/travail/prefix_&quot; donnera alors /rep/de/travail/prefix_20070505
repTravail=&quot;&quot; 


#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 &quot;[&quot;$(date +%F\ %X)&quot;] Suppression des dump du &quot;$datePassee
repTravailPasse=$repTravail$datePassee
rm -R $repTravailPasse

# début du dump
echo &quot;[&quot;$(date +%F\ %X)&quot;] Dump du : &quot;$dateActuelle
repTravailActuel=$repTravail$dateActuelle
mkdir $repTravailActuel
# récupération de la liste des bdd, &quot;tail -n +2&quot; est présent pour ne pas récupérer le titre &quot;Databases&quot; renvoyé par mysql
listDatabase=$(mysql --user=$strMysqlUser --password=$strPassword --exec=&quot;SHOW DATABASES;&quot; |  tail -n +2)

#dump de chaque base dans un fichier
for lineDatabase in $listDatabase
do
    echo &quot;[&quot;$(date +%F\ %X)&quot;] Debut du dump de la base &quot;$lineDatabase&quot; vers &quot;$repTravailActuel
    mysqldump --user=&quot;$strMysqlUser&quot; --password=&quot;$strPassword&quot; &quot;$lineDatabase&quot; | gzip &gt; &quot;$repTravailActuel&quot;/&quot;$lineDatabase&quot;.sql.gz
    echo &quot;[&quot;$(date +%F\ %X)&quot;] Dump compressé dans &quot;$repTravailActuel&quot;/&quot;$lineDatabase&quot;.sql.gz&quot;
done
echo &quot;[&quot;$(date +%F\ %X)&quot;] Fin de la sauvegarde&quot;
exit 0
 
[/code]</summary>
</entry>
<entry>
  <title>Lister le matériel de sa machine</title>
  <link href="http://snippets.prendreuncafe.com/snippet/59"></link>
  <updated>2007-02-26T16:22:29Z</updated>
  <id>59</id>
  <summary type="html">Lister toutes les informations de la machine : 

[code]
$ sudo lshw
[/code]


Il existe la possibilité d’exporter le résultat dans une page *.html : 

[code]
$ sudo lshw -html &gt; votre_nom_de_fichier.html
[/code]

via http://www.pastanque.be/splitsch/ubuntu/106/106.html et le planet ubuntu-fr (http://planet.ubuntu-fr.org)</summary>
</entry>
<entry>
  <title>Mailer un backup mysql comme attachement en ligne de commande</title>
  <link href="http://snippets.prendreuncafe.com/snippet/55"></link>
  <updated>2007-02-09T15:50:53Z</updated>
  <id>55</id>
  <summary type="html">On va utiliser mutt :

[code]
$ sudo apt-get install mutt
[/code]

La commande (cronable) :

[code]
$ mysqldump -uroot -p --all-databases --opt \
  | bzip2 &gt; /path/to/backup/export.sql.bz2 \
  &amp;&amp; echo &quot;En date du &quot; `date` \
  | mutt -s &quot;[Nikobox] Backup MySQL total du `date | awk '{ print $2,$3,$4}'`&quot; \
  -a /path/to/backup/export.sql.bz2 you@fai.com
[/code]</summary>
</entry>
<entry>
  <title>Sécuriser /tmp</title>
  <link href="http://snippets.prendreuncafe.com/snippet/54"></link>
  <updated>2007-02-05T22:10:24Z</updated>
  <id>54</id>
  <summary type="html">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é) :

[code bash]
# 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 &quot;/root/tmpMnt /tmp ext3 loop,noexec,nosuid,rw  0 0&quot; &gt;&gt; /etc/fstab
fi
# check your syntax is ok
mount -a
# check that programs in /tmp will not run
cp /bin/ls /tmp/
/tmp/ls
[/code]

Pour remonter /tmp avec droits d'execution :

[code bash]
# umount /tmp
# mount -o loop,rw /root/tmpMnt /tmp
[/code]

Et remonter la partition sans les droits d'execution :

[code bash]
# umount /tmp
# mount -o loop,noexec,nosuid,rw /root/tmpMnt /tmp
[/code]</summary>
</entry>
<entry>
  <title>Exclure un paquet d'un dist-upgrade</title>
  <link href="http://snippets.prendreuncafe.com/snippet/47"></link>
  <updated>2007-01-24T15:23:56Z</updated>
  <id>47</id>
  <summary type="html">Wajig permet de bloquer un paquet via sa sous-commande hold :

[code]
$ sudo apt-get install wajig
$ sudo wajig hold &lt;package_name&gt;
$ sudo apt-get update
$ sudo apt-get dist-upgrade
[/code]

Ici le paquet &lt;package_name&gt; ne sera pas mis à jour.

Avec aptitude, vous pouvez conserver un paquet en faisant :

[code]
$ aptitude hold package_name
[/code]

et enlever le drapeau « hold » avec

[code]
$ aptitude unhold package_name
[/code]
</summary>
</entry>
<entry>
  <title>Donner les pouvoirs d'administration système à un utilisateur</title>
  <link href="http://snippets.prendreuncafe.com/snippet/45"></link>
  <updated>2007-01-18T12:14:21Z</updated>
  <id>45</id>
  <summary type="html">En admettant l'existance d'un utilisateur toto :

[code]
$ sudo adduser toto admin
[/code]

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.</summary>
</entry>
<entry>
  <title>Compter le nombre d'occurence d'un terme dans un répertoire</title>
  <link href="http://snippets.prendreuncafe.com/snippet/42"></link>
  <updated>2007-01-16T12:33:47Z</updated>
  <id>42</id>
  <summary type="html">Dans tous les fichiers de type texte, calcul du nombre d'occurence d'une chaîne de caractère avec grep et wc :

[code]
$ grep -r require_once /path/to/scan | wc -l
1454
[/code]

On peut aussi exclure certaines ressources ou répertoires, avec grep -v :

[code]
$ grep -r require_once /path/to/scan | grep -v .svn | wc -l
735
[/code]</summary>
</entry>
<entry>
  <title>Turn on Bash Smart Completion</title>
  <link href="http://snippets.prendreuncafe.com/snippet/37"></link>
  <updated>2007-01-11T13:07:14Z</updated>
  <id>37</id>
  <summary type="html">Just edit /etc/bash.bashrc

Uncomment the following lines, by removing the # in the beginning of the lines:

[code]
#if [ -f /etc/bash_completion ]; then
# . /etc/bash_completion
#fi
[/code]

Now, resource the modified file : 
[code]
$ source /etc/bash.bashrc
[/code]

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 : 
[code]
$ apt-cache
add        dotty      dumpavail  pkgnames   rdepends   show       showsrc    unmet
depends    dump       gencaches  policy     search     showpkg    stats      xvcg
[/code]

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 
[code]
$ source ~/.bashrc
[/code]</summary>
</entry>
<entry>
  <title>Can't start server: Bind on TCP/IP port: Cannot assign requested address</title>
  <link href="http://snippets.prendreuncafe.com/snippet/36"></link>
  <updated>2007-01-10T12:50:29Z</updated>
  <id>36</id>
  <summary type="html">Des fois, MySQL c'est chiant. Merci IRC !

[code txt]
&lt;n1k0&gt; help
&lt;n1k0&gt; je dois installer un server mysql5 sur une ubuntu lts server toute fraiche
&lt;n1k0&gt; apt-get install mysql-server-5.0
&lt;n1k0&gt; et là c'est le drâme
&lt;n1k0&gt; il me sort ...failed or took more than 6s.
&lt;n1k0&gt;         Please take a look at the syslog.
&lt;n1k0&gt; /usr/bin/mysqladmin: connect to server at 'localhost' failed
&lt;n1k0&gt; error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
&lt;n1k0&gt; Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!
&lt;n1k0&gt; dans le syslog, j'ai :
&lt;n1k0&gt;  [ERROR] Can't start server: Bind on TCP/IP port: Cannot assign requested address
&lt;n1k0&gt; netstat, ps et lsof me montrent qu'aucun autre mysql ne tourne
&lt;n1k0&gt; j'ai tenté --reinstall --purge, rien n'y fait
&lt;Yann2&gt; et si t'essaie de démarrer le serveur?
&lt;david`bgk&gt; port utilisé ?
&lt;n1k0&gt; j'ai même rebooté la machine (!)
&lt;n1k0&gt; port 3306 libre
&lt;Yann2&gt; avec sudo /etc/init.d/ ?
&lt;n1k0&gt; rien n'y fait
&lt;Yann2&gt; meme message d'erreur?
&lt;n1k0&gt; ouais
&lt;david`bgk&gt; et /var/run/mysqld/mysqld.sock existe ?
&lt;n1k0&gt; non justement
&lt;n1k0&gt; mais d'ou vient le bleme ??
&lt;worf|work&gt; dans /etc/mysql/my.cnf regarde quel est le bind-adress
&lt;worf|work&gt; si y en a un etc...
&lt;n1k0&gt; j'ai aussi  ^G/usr/bin/mysqladmin: connect to server at 'localhost' failed
&lt;[NikO]&gt; j'adore les boulets sur msn, ils m'ajoutent dans leur contact, et ils me font 't'es ki ?'
&lt;n1k0&gt; dans le syslog
&lt;worf|work&gt; netstat -an | grep 3306
&lt;worf|work&gt; regarde si y a un truc qui listen aussi
&lt;n1k0&gt; bind-address : 127.0.0.1
&lt;worf|work&gt; il doit servir qu'en local ce mysql ?
&lt;worf|work&gt; ou d'autres machines devront s'y connecter ?
&lt;n1k0&gt; rien n'ecoute
&lt;n1k0&gt; non c'est du local pur
&lt;worf|work&gt; dans ps y a aucun mysqld ?
&lt;n1k0&gt; non
&lt;worf|work&gt; tapes : safe_mysqld
&lt;worf|work&gt; ou mysqld_safe
&lt;worf|work&gt; (si ça existe)
&lt;n1k0&gt; command not found
&lt;n1k0&gt; ah
&lt;n1k0&gt; Starting mysqld daemon with databases from /var/lib/mysql
&lt;n1k0&gt; mysqld_safe[4716]: started
&lt;n1k0&gt; STOPPING server from pid file /var/run/mysqld/mysqld.pid
&lt;n1k0&gt; mysqld_safe[4729]: ended
&lt;n1k0&gt; gné
&lt;worf|work&gt; ls -la /var/lib/mysql
&lt;n1k0&gt; total 20532
&lt;n1k0&gt; drwxr-xr-x  3 mysql mysql     4096 2007-01-10 13:35 .
&lt;n1k0&gt; drwxr-xr-x 22 root  root      4096 2007-01-10 13:21 ..
&lt;n1k0&gt; -rw-r--r--  1 root  root         0 2007-01-10 13:21 debian-5.0.flag
&lt;n1k0&gt; -rw-rw----  1 mysql mysql 10485760 2007-01-10 13:35 ibdata1
&lt;n1k0&gt; -rw-rw----  1 mysql mysql  5242880 2007-01-10 13:35 ib_logfile0
&lt;n1k0&gt; -rw-rw----  1 mysql mysql  5242880 2007-01-10 13:21 ib_logfile1
&lt;n1k0&gt; drwxr-xr-x  2 mysql root      4096 2007-01-10 13:21 mysql
&lt;worf|work&gt; ça m'a l'air pourtant pas mal
&lt;n1k0&gt; Le truc qui m'inquiète c'est :
&lt;worf|work&gt; chown mysql:mysql /var/lib/mysql 
&lt;n1k0&gt; http://www.debianforum.de/forum/viewtopic.php?t=59014&amp;sid=f89fc839052a659222b63b77b55572d5
&lt;n1k0&gt; et surtout http://www.linuxforums.org/forum/servers/41668-mysql-problems-_-solved-_.html
&lt;n1k0&gt; Genre personne y comprend rien
&lt;n1k0&gt; le chown a rien changé
&lt;worf|work&gt; dans ton my.cnf vire ton bind-adresse
&lt;n1k0&gt; ok
&lt;n1k0&gt; ça marche !
&lt;n1k0&gt; bouarf
&lt;worf|work&gt; ton interface loopback est pas en bon état :)
&lt;n1k0&gt; yep
&lt;worf|work&gt; ferme ton 3306 avec un firewall
&lt;worf|work&gt; et pi toute façon quand tu fais tes GRANT restreint les ensuite à l'ip de la machine.
&lt;Rik24d&gt; david`bgk: je parlais bien évidemment des négo entre apple et les opérateurs
&lt;worf|work&gt; ifconfig lo
&lt;worf|work&gt; ça dit quoi ?
&lt;n1k0&gt; lo        Link encap:Local Loopback  
&lt;n1k0&gt;           LOOPBACK  MTU:16436  Metric:1
&lt;n1k0&gt;           RX packets:0 errors:0 dropped:0 overruns:0 frame:0
&lt;n1k0&gt;           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
&lt;n1k0&gt;           collisions:0 txqueuelen:0 
&lt;n1k0&gt;           RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
&lt;worf|work&gt; c le script réso qui pue
&lt;worf|work&gt; ifconfig lo UP
&lt;Rik24d&gt; n1k0: http://paste.inertie.org ;)
&lt;david`bgk&gt; paste.inertie.org :p
&lt;david`bgk&gt; arf
&lt;n1k0&gt; Rik24d, flemme + mode panic = excusez moi
&lt;neuro`&gt; Quelqu'un qui torche en rewrite rules ici ?
&lt;david`bgk&gt; c'est juste que c'est nouveau mais personne l'utilise ;)
&lt;n1k0&gt; YEAH
&lt;n1k0&gt; merci mille fois worf|work 
&lt;worf|work&gt; verifie tes scripts de démarrage
&lt;n1k0&gt; I owe you a beer, quand tu veux
&lt;worf|work&gt; c'est pas normal que lo soit pas UP
&lt;worf|work&gt; et ça doit etre ça qui merde, pas mysql
&lt;n1k0&gt; yep
&lt;n1k0&gt; mais là le truc tourne, je peux installer ma demo
&lt;n1k0&gt; je ferai un gros check up cet aprem
&lt;n1k0&gt; merci encore
&lt;worf|work&gt; de rien
[/code]</summary>
</entry>
</feed>