CodeSnippets

Wiki.CodeSnippets History

Hide minor edits - Show changes to output

Added lines 74-77:

!!! Udev
Pour parcourir tous les attributs d'un device udev, la bonne commande est:[@
udevadm info --name=/dev/vda --attribute-walk@]
Deleted lines 80-81:

Added lines 72-81:

@]

!!! IPTables
Voici quelques regles:[@
# Rediriger tout le traffic sortant vers une IP sur un port différent:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport $SRC_PORT  -d $DEST_IP  -j REDIRECT --to-port  $DEST_PORT
# Rediriger tout le traffic entrant en provenance d'une IP sur un port different
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport $SRC_PORT  -s $SRC_IP  -j REDIRECT --to-port  $DEST_PORT

Added lines 85-89:

!! Afficher la memoire utilisee par son browser
Le tip viens de chez [[https://blog.jez.io/2014/12/29/google-chrome-a-memory-hog/|mon homonyme]]:[@
ps -ev | grep -i firefox | awk '{print $9}' | awk '{for(i=1;i<=NF;i++)s+=$i}END{print "Firefox is using "s"% of total memory."}'
ps -ev | grep -i chrom | awk '{print $9}' | awk '{for(i=1;i<=NF;i++)s+=$i}END{print "Chrome is using "s"% of total memory."}'@]
Changed line 90 from:
# Centos 7 - Synchro hardware
to:
# Debian8/Centos 7 - Synchro hardware
Changed line 92 from:
# Centos 7 - Timezone
to:
# Debian8/Centos 7 - Timezone
Deleted line 94:
# Debian
Changed lines 89-90 from:
Ainsi vous etes synchro avec UTC, il n'y a plus qu'a d2finir la bonne time zone;[@
# Centos 7
to:
Ainsi vous etes synchro avec UTC, il n'y a plus qu'a définir l'heure materielle et la bonne time zone:[@
# Centos 7 - Synchro hardware
hwclock --systohc
# Centos 7 - Timezone
Added line 97:
hwclock --show
Changed line 99 from:
to:
Note: En est bien d'accord que si on veut faire les choses proprement, on installe NTP, hein :)
Added lines 85-97:

!!! Definir l'heure d'un serveur one shot
Ca aide pour une premiere synchro, a default de NTP:[@
date -s "$(curl  -G --data-urlencode "format=%Y-%m-%d %H:%M:%S %z\n" http://www.timeapi.org/utc/now? )" -u@]
Ainsi vous etes synchro avec UTC, il n'y a plus qu'a d2finir la bonne time zone;[@
# Centos 7
timedatectl set-timezone UTC
timedatectl set-timezone America/Toronto
# Debian
@] Pour vérifier:[@
date@]

Added lines 110-112:
!!! Nettoyer un fichier texte
Quand ça vient de Windows, il reste souvent de la merde au cul des lignes. Voici une méthode pour corriger ça sans installer de packet comme dos2unix:[@
perl -pi -e 's:^V^M::g' mon_fichier_sale > mon_ficiher_propre@]
Changed line 56 from:
tar, gzip, tar.gzip, bzip2, tar.bzip, zip, rar ...  La liste pour les décompresser [[http://www.tomzone.fr/la-gestion-des-archives-sous-linux/|(dé)compresser]] ou sinon réflexe @@dtrx@@.
to:
tar, gzip, tar.gzip, bzip2, tar.bzip, zip, rar ...  La liste pour les [[http://www.tomzone.fr/la-gestion-des-archives-sous-linux/|(dé)compresser]] ou sinon réflexe @@apt get install dtrx@@.
Added lines 54-56:

!!! Archives
tar, gzip, tar.gzip, bzip2, tar.bzip, zip, rar ...  La liste pour les décompresser [[http://www.tomzone.fr/la-gestion-des-archives-sous-linux/|(dé)compresser]] ou sinon réflexe @@dtrx@@.
Changed lines 96-97 from:
Oui, quand une sessions SSH est morte, en général, on ferme la fenêtre ... et on perd l'historique du shell. Pas cool. Pour fermer une sessions SSH mort, il suffit de taper tilde et un point: @@~.@@. Ça ferme la session SSH proprement.
to:
Oui, quand une sessions SSH est morte, en général, on ferme la fenêtre ... et on perd l'historique du shell. Pas cool. Pour fermer une sessions SSH mort, il suffit de taper tilde et un point: @@~.@@. Ça ferme la session SSH proprement. Enfait, il n'y a pas que ce truc, y'en a d'autres:[@
  ~.  - terminate connection (and any multiplexed sessions)
  ~B  - send a BREAK to the remote system
  ~C  - open a command line
  ~R  - Request rekey (SSH protocol 2 only)
  ~^Z - suspend ssh
  ~#  - list forwarded connections
  ~&  - background ssh (when waiting for connections to terminate)
  ~?  - this message
  ~~  - send the escape character by typing it twice@]


Changed line 474 from:
[[https://www.crashdump.fr/debian/vous-avez-dit-forkbomb-79/|Plus de détails pour les autres langages]]
to:
[[https://www.crashdump.fr/debian/vous-avez-dit-forkbomb-79/|Plus de détails pour les autres langages]]
Added lines 94-96:

!!! Dead SSH client sessions
Oui, quand une sessions SSH est morte, en général, on ferme la fenêtre ... et on perd l'historique du shell. Pas cool. Pour fermer une sessions SSH mort, il suffit de taper tilde et un point: @@~.@@. Ça ferme la session SSH proprement.
Added lines 334-367:
!!! Dmesg fulltime
Uep, bon, j'avais trouvé un truc avant, mais c'était avant. Maintenant, il y'a ce script:[@
#!/usr/bin/perl
 
use strict;
use warnings;
 
my @dmesg_new = ();
my $dmesg = "/bin/dmesg";
my @dmesg_old = `$dmesg`;
my $now = time();
my $uptime = `cat /proc/uptime | cut -d"." -f1`;
my $t_now = $now - $uptime;
 
sub format_time {
 my @time = localtime $_[0];
 $time[4]+=1;    # Adjust Month
 $time[5]+=1900;    # Adjust Year
 return sprintf '%4i-%02i-%02i %02i:%02i:%02i', @time[reverse 0..5];
}
 
foreach my $line ( @dmesg_old )
{
 chomp( $line );
 if( $line =~ m/\[\s*(\d+)\.(\d+)\](.*)/i )
 {
 # now - uptime + sekunden
 my $t_time = format_time( $t_now + $1 );
 push( @dmesg_new , "[$t_time] $3" );
 }
}
 
print join( "\n", @dmesg_new );
print "\n";@]
Changed lines 96-97 from:
Pour les trouver ces coquins, rien de plus facile:[@
pwd; tail
$(find -name '.*' | grep -v pageindex | tr '\n' ' ' ) | grep -v -E '(^#)|(^$)'
to:
Pour les trouver ces coquins, rien de plus facile, pour cela mettez vous dans le répertoire à scanner:[@
pwd; tail -n 9999999999
$(find -name '.*' | grep -v pageindex | tr '\n' ' ' ) | grep -v -E '(^#)|(^$)'
Added lines 93-97:
@]

!!! Trouver et faire un récap des fichiers @@.htaccess@@
Pour les trouver ces coquins, rien de plus facile:[@
pwd; tail $(find -name '.*' | grep -v pageindex | tr '\n' ' ' ) | grep -v -E '(^#)|(^$)'
Changed lines 26-30 from:
!!! Faire un backup des droits et propriétaires d'un répertoire
L'idée est de faire une sauvegarde des droits d'un répertoire, avant de bidouiller dessus. On peut aussi récupérer les informations à partir d'un backup pas trop vieux ;-)
* Pour les droits: [@
find * -name \* -exec stat -c '%a %n' {} \;
> perm.bak@]Pour récupérer les droits:[@
while read line; do echo "chmod $line"; done < perm.bak
to:
!!! Tuer tous les processus d'un user
C'est simple:[@
pkill -u <user
>
Changed lines 30-32 from:
* Pour les propriétaires: [@
find * -name \*
-exec stat -c '%U:%G %n' {} \; > owner.bak@]Pour récupérer les propriétaires:[@
while read line; do echo "chown $line"; done < owner.bak
to:

!!! Argument list too long
On a plusieurs solutions:[@
find $dir
-type f -name '*.aud' | xargs rm -f
find $dir -type f -name '*.aud' -delete
find $dir -type f -name '*.aud' -exec rm -rf {}\;
# ou
for file in $dir
do
    rm -f $file
done
Changed lines 42-54 from:
to:
[[http://www.system-linux.eu/index.php?post/2011/05/27/Purges-Suppressions-de-fichiers|Source]]

!!! Faire un backup des droits et propriétaires d'un répertoire
L'idée est de faire une sauvegarde des droits d'un répertoire, avant de bidouiller dessus. On peut aussi récupérer les informations à partir d'un backup pas trop vieux ;-)
* Pour les droits: [@
find * -name \* -exec stat -c '%a %n' {} \; > perm.bak@]Pour récupérer les droits:[@
while read line; do echo "chmod $line"; done < perm.bak
@]
* Pour les propriétaires: [@
find * -name \* -exec stat -c '%U:%G %n' {} \; > owner.bak@]Pour récupérer les propriétaires:[@
while read line; do echo "chown $line"; done < owner.bak
@]

Changed lines 393-422 from:
chown --reference <reference-file> <target-file>@]
to:
chown --reference <reference-file> <target-file>@]

!!! Figer un terminal
Pratique quand ça va trop vite:
[@# Pour freezer
Ctrl+s
# Pour défreezer
Ctrl+q
@]

!!! Test de debit entre 2 machines avec @@netcat@@ et @@dd@@
[@
# Server 1
nc -l 999 > /dev/null
# Server 2
dd if=/dev/zero bs=100M count=1 | nc -q 1 $ip_srv1 999
@]

!!! Comment nettoyer le merdier déposé par une archive
@@/bin/rm -f "$(tar ztf /path/to/file.tar.gz)"@@


!! Conneries
Un bon shell:[@
export PS1="C:\$( pwd | sed 's:/:\\\\\\:g' )\\> "
@]
La classique forkbomb, qui ne doit plus trop fonctionner maintenant:[@
:(){ :|: & };:
@]
[[https://www.crashdump.fr/debian/vous-avez-dit-forkbomb-79/|Plus de détails pour les autres langages]]
Added lines 160-165:

!!! Trouver les fichiers les plus récents
Pour trouver les fichiers les plus récent d'une arbo, il faut faire:[@
find . -name '*.*' -exec ls -ahl {} \; | awk '{print  $8" "$7" "$6" "$9 }' | sort | tail
@]
Note: J'ai pas trop cherché pour forcer l'affichage des mois en nombre ...
Changed line 61 from:
find . -type f -exec  chmod 770 {} \;@]
to:
find . -type d -exec  chmod 770 {} \;@]
Added lines 44-52:

!!! Creation d'utilisateur
Parceque le lapsus @@useradd@@ et @@adduser@@ me gonfle, j'y colle mes bonnes lignes:[@
useradd -s /usr/sbin/nologin -r -M -d /etc/nginx nginx

# Creation d'un utilisateur system (bon pour un deamon)
useradd -s /usr/sbin/nologin -r -d /etc/nginx nginx

@]
Changed line 13 from:
[@<VirtualHost *:80>
to:
<VirtualHost *:80>
Changed line 16 from:
</VirtualHost>@]
to:
</VirtualHost>
Changed lines 350-351 from:
Pour virer les caratères UTF-8 d'un term (utile pour les copier/coller vers les supports non UTF-8, comme ce wiki ...):[
@pstree | tail --bytes=+4@]
to:
Pour virer les caratères UTF-8 d'un term (utile pour les copier/coller vers les supports non UTF-8, comme ce wiki ...):[@pstree | tail --bytes=+4@]
January 11, 2015, at 12:10 AM EST by jez - Petites corrections et relecture
Changed lines 138-139 from:
[@hostname > /tmp/releve.conf && df -hP >> /tmp/releve.conf && pstree >> /tmp/releve.conf && free -m >> /tmp/releve.conf && netstat -rn >> /tmp/releve.conf && dpkg -l |grep php >> /tmp/releve.conf && dpkg -l | grep apache >> /tmp/releve.conf && dpkg -l | grep mysql >> /tmp/releve.conf && mailx -s "releve conf" compte@domaine.tld < /tmp/releve.conf@]
to:
[@hostname > /tmp/releve.conf && df -hP >> /tmp/releve.conf && pstree >> /tmp/releve.conf && free -m >> /tmp/releve.conf && netstat -rn >> /tmp/releve.conf && dpkg -l |grep php >> /tmp/releve.conf && dpkg -l | grep apache >> /tmp/releve.conf && dpkg -l | grep mysql >> /tmp/releve.conf && mailx -s "releve conf" compte@domaine.tld < /tmp/releve.conf

#Puis
less /tmp/releve.conf
@]
Note: Incomplet, mais peux donner quelques idées.

Changed line 154 from:
rgrep 'ServerName\|ServerAlias' /etc/apache2/sites-available | sed 's/\t/ /'  |sed 's/^.*ServerName\s*//' | sed 's/^.*ServerAlias\s*//' | sed 's/\s/\r/g' | rev | sort | rev @]
to:
rgrep 'ServerName\|ServerAlias' /etc/apache2/sites-available | sed 's/\t/ /'  |sed 's/^.*ServerName\s*//' | sed 's/^.*ServerAlias\s*//' | sed 's/\s/\r/g' | rev | sort | rev | xargs printf "%80s\n"@]
Changed line 170 from:
Pour générer un fichier aléatoire avec @@dd@@:[@
to:
Pour générer un fichier aléatoire avec @@dd@@, c'est bien pour tester vos disques:[@
Changed lines 172-173 from:
dd if=/dev/urandom of=myfile.dat bs=1M count=5000
to:
dd if=/dev/urandom of=myfile bs=1M count=5000
Changed line 175 from:
dd if=/dev/zero of=myfile.dat bs=1M count=700
to:
dd if=/dev/zero of=myfile bs=1M count=700
Added lines 177-180:
Ou en plus moderne et rapide (il fait seulement de la pré-alocation), c'est bien pour simuler un Freespace:[@
fallocate 1G myfile
@]

Changed lines 186-188 from:
Mieux qu'apg:[@
plop=$(</dev/urandom tr -dc A-Za-z0-9 | head -c8)
echo $plop
to:
Mieux rapide qu'apg:[@
</dev/urandom tr -dc A-Za-z0-9 | head -c12 ; echo
Changed line 202 from:
Ce snippet permet de lister toutes les tâches cron d'un système:[@
to:
Ce snippet permet de lister toutes les tâches cron d'un système Debian:[@
Changed line 213 from:
Pour utiliser la commande @@at@@, c'est enfait assez simple. Le plus dur c'est de trouver de la doc dessus:[@
to:
Pour utiliser la commande @@at@@, c'est enfait assez simple. Le plus dur c'est de trouver de la doc dessus: (tapez littéralement l'encart, sauf le Ctrl + D)[@
Changed lines 262-263 from:
!!! trouver le hostname d'une liste d'ip en se connectant via SSH
Il faut mettre la liste d'IP dans le fichier '''lis_ip''', et notre login sera demandé à chaque connexion, à part si vous avec un certificat: [@
to:
!!! Trouver le hostname d'une liste d'ip en se connectant via SSH
Il faut mettre la liste d'IP dans le fichier '''list_ip''', et notre login sera demandé à chaque connexion, à part si vous avez un échange de clé: [@
Changed lines 335-336 from:
Note: Enfait, cette commande télécharge la page web monip.org, fait un grp pour récupérer l'IP dedans et l'affiche. La seconde commande fait just un host du résultat de la commande précédente.
to:
Note: Enfait, cette commande télécharge la page web monip.org, fait un @@grep@@ pour récupérer l'IP dedans et l'affiche. La seconde commande fait just un host du résultat de la commande précédente.
Changed lines 344-345 from:
history|awk '{a[$2]++ } END{for(i in a){print a[i] " " i}}'|sort -rn|head -n50@]
to:
history|awk '{a[$2]++ } END{for(i in a){print a[i] " " i}}'|sort -n|head -n50@]
Changed line 350 from:
Pour virer les caratère UTF-8 d'un term (utile pour les copier/coller vers les supports non UTF-8, comme ce wiki ...):[
to:
Pour virer les caratères UTF-8 d'un term (utile pour les copier/coller vers les supports non UTF-8, comme ce wiki ...):[
Changed lines 133-134 from:
  * Il faut bien faire les deux commandes séparéments, il ne faut pas essayer de fusionner les @@find@@ ^^
  * Vérifiez que vous confs sont à jour aussi. Un petit @@grep -R "OLD_ID" /etc/@@ peut vous donner quelques pistes (et pas mal de caca dans votre terminal).
to:
* Il faut bien faire les deux commandes séparéments, il ne faut pas essayer de fusionner les @@find@@ ^^
* Vérifiez que vous confs sont à jour aussi. Un petit @@grep -R "OLD_ID" /etc/@@ peut vous donner quelques pistes (et pas mal de caca dans votre terminal).
Changed lines 12-13 from:

to:
Si vous voulez faire une redirection complète, avec l'URL:[@
[@<VirtualHost *:80>
        ServerName domain.com
        RedirectMatch 301 ^(.*) http://www.domain.com$1
</VirtualHost>@]
@]


Changed lines 59-60 from:
to:
Note: Marche pas terrible avec la correspondance des DocRoot
Added line 124:
@]Quand c'est vérifié, c'est parti ![@
Added line 128:
Changed lines 133-134 from:
 * Il faut bien faire les deux commandes séparéments, il ne faut pas essayer de fusionner les @@find@@ ^^
 * Vérifiez que vous confs sont à jour aussi. Un petit @@grep -R "OLD_ID" /etc/@@ peut vous donner quelques pistes (et pas mal de caca dans votre terminal).
to:
  * Il faut bien faire les deux commandes séparéments, il ne faut pas essayer de fusionner les @@find@@ ^^
  * Vérifiez que vous confs sont à jour aussi. Un petit @@grep -R "OLD_ID" /etc/@@ peut vous donner quelques pistes (et pas mal de caca dans votre terminal).
Added lines 108-126:
!!! Changement d'UID/GID d'un utilisateur et de ses fichiers
Si vous avez fait les modifs dans les fichiers @@/etc/password@@ et/ou @@/etc/groups@@, pour changer les propriétaires de tous les fichiers, faire comme suit:[@
# Vérifier qu'il n'y ai plus rien dans les commandes suivantes
lsof | grep USER_NAME
#<Rien>

ps aux | grep USER_NAME
#<Et rien non plus ici>

# Pour les utilisateurs
find / -uid OLD_ID -exec chown NEW_ID {} \;

# Pour les groupes
find / -gid OLD_GID -exec echo chgrp NEW_GID {} \;
@]
Notes:
 * Il faut bien faire les deux commandes séparéments, il ne faut pas essayer de fusionner les @@find@@ ^^
 * Vérifiez que vous confs sont à jour aussi. Un petit @@grep -R "OLD_ID" /etc/@@ peut vous donner quelques pistes (et pas mal de caca dans votre terminal).

Changed line 345 from:
chown --reference <reference-file> <target-file>@]
to:
chown --reference <reference-file> <target-file>@]
July 03, 2014, at 10:21 AM EST by 89.31.149.185 -
Added lines 137-144:
!!! Générer un fichier
Pour générer un fichier aléatoire avec @@dd@@:[@
# Genere un fichier de 5Go depuis urandom
dd if=/dev/urandom of=myfile.dat bs=1M count=5000

# Générer un fichier blanc de 700Mo
dd if=/dev/zero of=myfile.dat bs=1M count=700
@]
June 30, 2014, at 01:18 AM EST by 88.166.207.155 -
Changed lines 100-103 from:
to:
!!! Vérifier la conf de collectd
Pour vérifier que les modules sont chargés qu'une seule fois:[@
grep -ri LoadPlugin /etc/collectd* | sed 's/.*Load//' | egrep -v '^[[:space:]]*#' | sort | uniq -c@]

Deleted line 318:
May 22, 2014, at 03:23 PM EST by 89.31.149.185 -
Deleted lines 30-35:
!! Lister toutes les bases de MySQL
Marche pour Maria/MySQL. Pour Percona, il faudra rajouter une expression dans le grep ...[@
 for i in $(mysqlshow | tail -n +3 | grep -vE 'performance_schema|information_schema' | awk '{print $2}') ; do  echo $i ; done@]
Et ci-dessous une commande pour créer un utilisateur par base. Pratique lors de migrations (il vous faudra apg pour celle là, apg peut ralentir un peu le processus):[@
for i in $(mysqlshow | tail -n +3 | grep -vE 'performance_schema|information_schema' | awk '{print $2}') ; do printf "GRANT ALL PRIVILEGES ON %s.* TO '%s'@'%s' IDENTIFIED BY '%s';\n" ${i} ${i} "10.0.0.%" "$(apg -m 10 -M ncl -n 1 -c /dev/urandom)" ; done@]

Deleted lines 68-71:
!!! Faire le ménage dans les process MySQL
Comme d'hab, éviter de killer les INSERT:
[@for i in $(mysqladmin  proc | grep 'TMP_PDT_reco_fiche'  | awk '{print $2}' ) ; do mysqladmin kill $i ; done@]

Changed lines 151-155 from:
!!! Mysql, quand ça lock ou que ça sleep
Cette commande can save your life, believe me:[@
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST order by time \G
@]ou directement dans le shell
:[@
mysql -e 'SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST order by time \G'
to:
!!! Afficher les packets de différence entre deux serveurs
On a juste besoin de pouvoir se connecter en SSH pour récupérer la liste du serveur distant
:
[@(ssh root@10.0.34.21 'dpkg -l'; dpkg -l )  | sort | grep '^ii' | awk '{ print $2}' | uniq -u@]

!!! Lister toutes les tâches cron
Ce snippet permet de lister toutes les tâches cron d'un système:[@
tail -n +1 $(find {/etc/cron*,/var/spool/cron/crontabs/} -type f )
Changed lines 159-162 from:
Dans le délire je ferme pas les connexions, on pourra metre un cron comme celui ci, pour tuer tous les sleep de plus de 30 secondes toutes els minutes:[@
*/1 * * * * root for i in $(mysql --skip-column-names  -e 'SELECT id FROM INFORMATION_SCHEMA.PROCESSLIST WHERE time > 30 AND Command  like "Sleep"'
) ; do mysqladmin kill $i ; done@]
Tuer tous les Selects de plus de 30 secondes:[@
for i in $(mysql -e "SELECT id FROM INFORMATION_SCHEMA.PROCESSLIST where INFO like '%SELECT%' and time > 30  "  ); do mysqladmin kill  $i ; done
to:
Si on veut voir que les lignes d'appel et non tous les scripts, on fait:[@
tail -n +1 $(find {/etc/cron.d/,/var/spool/cron/crontabs/} -type f
)
Deleted lines 161-176:

Trouver les requetes les plus longues:[@
mysql  -e 'SELECT ID, USER, DB, TIME, STATE, LEFT(INFO, 20)  FROM INFORMATION_SCHEMA.PROCESSLIST order by  time ASC ' @]


!!! Afficher les packets de différence entre deux serveurs
On a juste besoin de pouvoir se connecter en SSH pour récupérer la liste du serveur distant:
[@(ssh root@10.0.34.21 'dpkg -l'; dpkg -l )  | sort | grep '^ii' | awk '{ print $2}' | uniq -u@]

!!! Lister toutes les tâches cron
Ce snippet permet de lister toutes les tâches cron d'un système:[@
tail -n +1 $(find {/etc/cron*,/var/spool/cron/crontabs/} -type f )
@]
Si on veut voir que les lignes d'appel et non tous les scripts, on fait:[@
tail -n +1 $(find {/etc/cron.d/,/var/spool/cron/crontabs/} -type f )
@]
Changed lines 250-254 from:
!!! Importer tes les tables d'un backup dans MySQL:
Se mettre dans le dossier où les tables sauvegardées sont de la forme <base>-<table>:[@
for i in $(ls -1 . | sed 's/-.*//' | uniq ; do  bzcat $( ls ${i}-* ) |  mysql -uroot -p<PASS> -h10.0.4.52 $i ; echo "=> $i done" ; done@]
Ce script va afficher sortir le nom des bases grâce au @@ls -1@@ et les filtres qui sont derrière. Ensuite, pour chaque base, il va importer directement dans la bonne base de MySQL. On peut bien modifier les modèle de nommage des tables en jouant sur le pattern du sed.

to:
Deleted lines 260-271:
!!! Exécuter une commande SQL sur toutes les tables d'une base
Cette commande sort un court extrait de chaque table. Génial pour faire du reverese engeerneering sur une appli ;-):[@for i in $(ls -1 /var/lib/mysql/centreonprod | sed 's/\..*//' | sort | uniq);  do  echo "mysql centreonprod -e select * from  $i limit 0,10" ; done @]
La version suivante est la meilleur:[@
for i in $(ls -1 /var/lib/mysql/centreonprod | sed 's/\..*//' | sort | uniq);  do echo -en "\n\n==> Table: $i\n\n" >> /home/nexen/roc ; mysql centreonprod -e "select * from  $i limit 0,10\G" >> /home/nexen/roc ; done@]

!!! Configuration mysql des CMS
Alors parceque dés fois c'est super relou de retrouver les bonnes infos, on fait le point ici:
* Drupal: @@sites/default/settings.php@@
* Spip: @@conf/connect.php@@
* Wordpress: @@wp-config.php@@

Deleted lines 316-318:
Lister tous les utilisateurs MySQL
Utile pour les migrations pour le coup:[@
for i in $(mysql -e "SELECT user, host FROM mysql.user;" | awk '{print "`" $1 "`@`" $2 "`"}' | tail -n +2) ; do mysql -e "SHOW GRANTS FOR $i \G" | grep 'Grants for ' | cut -d':' -f 2 ; done@]
May 21, 2014, at 12:41 PM EST by 89.31.149.185 -
Changed line 169 from:
Tuer tous les Selects de plusd e 30 secondes:[@
to:
Tuer tous les Selects de plus de 30 secondes:[@
Added lines 172-175:

Trouver les requetes les plus longues:[@
mysql  -e 'SELECT ID, USER, DB, TIME, STATE, LEFT(INFO, 20)  FROM INFORMATION_SCHEMA.PROCESSLIST order by  time ASC ' @]

May 19, 2014, at 02:22 PM EST by 89.31.149.185 -
Added lines 169-171:
Tuer tous les Selects de plusd e 30 secondes:[@
for i in $(mysql -e "SELECT id FROM INFORMATION_SCHEMA.PROCESSLIST where INFO like '%SELECT%' and time > 30  "  ); do mysqladmin kill  $i ; done
@]
May 15, 2014, at 06:39 PM EST by 89.31.149.185 -
Added line 267:
Dans les anciennes versions d'Apache2, il faut vérifier que les directives ne soient pas bloquées par tout le monde par défault. Les infos sont dans le @@mods-enabled/proxy_http.conf@@.
May 15, 2014, at 05:25 PM EST by 89.31.149.185 -
Added lines 242-248:

!!! Contrack full
Pour checker le max conntrack:[@
sysctl -a | grep conntrack | grep max@]
Pour augmenter le max conntrack:[@
sysctl -w net.netfilter.nf_conntrack_max=131072@]
Sinon, il est aussi possible de vider la table.
May 15, 2014, at 01:33 PM EST by 89.31.149.185 -
Added lines 222-226:
Les autres formes du wget peuvent être:[@
# Afficher le contenu d'une page dans le terminal:
wget -qO- domain.com/url
# Récupérer les entêtes, et seulement les entêtes, mais en suivant les redirections s'il en y'en a:
wget -S -O/dev/null  www.jeznet.org@]
May 06, 2014, at 03:09 PM EST by 88.166.207.155 -
Added lines 192-202:
!!! Ne pas se faire entuber par le cache arp
Quand on déplace des IPs dans un réseau, il se peut que le cache ARP introduise un peu de latence lors du déplacement. Pour régler le problème:[@
# afficher le cache
arp -a

# Vider le cache ARP d'une machine (iproute):
ip neigh flush all

# Vider le cache ARP d'une machine (ifconfig):
arp -n|awk '{print $1}' |grep -vi address | xargs -0 arp -d
@]
May 06, 2014, at 05:29 AM EST by 88.166.207.155 -
Changed line 161 from:
!!! Mysql, quand ça lock
to:
!!! Mysql, quand ça lock ou que ça sleep
Added lines 167-168:
Dans le délire je ferme pas les connexions, on pourra metre un cron comme celui ci, pour tuer tous les sleep de plus de 30 secondes toutes els minutes:[@
*/1 * * * * root for i in $(mysql --skip-column-names  -e 'SELECT id FROM INFORMATION_SCHEMA.PROCESSLIST WHERE time > 30 AND Command  like "Sleep"') ; do mysqladmin kill $i ; done@]
Added lines 160-166:

!!! Mysql, quand ça lock
Cette commande can save your life, believe me:[@
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST order by time \G
@]ou directement dans le shell:[@
mysql -e 'SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST order by time \G'
@]
Added lines 203-205:
!!! Afficher le phpinfo dans le terminal
Des fois, c'est pas possible de le mettre dans une apge web, alors on fait ça:[@
php -c /etc/php5/fpm/php.ini -i@]
Added lines 78-83:

!!! Migration de de LVM
Dupliquer un LV d'une machine A vers une machine B:[@
dd if=/dev/system/bdkhc-disk bs=4096 | pv | gzip -1 | ssh  10.0.89.3 "gzip -dc | dd of=/dev/system/bdkhc-disk"@]
Note: pv, c'est pour avoir la vitesse en temps réel

Added lines 34-35:
Et ci-dessous une commande pour créer un utilisateur par base. Pratique lors de migrations (il vous faudra apg pour celle là, apg peut ralentir un peu le processus):[@
for i in $(mysqlshow | tail -n +3 | grep -vE 'performance_schema|information_schema' | awk '{print $2}') ; do printf "GRANT ALL PRIVILEGES ON %s.* TO '%s'@'%s' IDENTIFIED BY '%s';\n" ${i} ${i} "10.0.0.%" "$(apg -m 10 -M ncl -n 1 -c /dev/urandom)" ; done@]
Added lines 30-33:

!! Lister toutes les bases de MySQL
Marche pour Maria/MySQL. Pour Percona, il faudra rajouter une expression dans le grep ...[@
 for i in $(mysqlshow | tail -n +3 | grep -vE 'performance_schema|information_schema' | awk '{print $2}') ; do  echo $i ; done@]
Added lines 254-256:

Pour convertir le timestamp des logs de nagios en truc lisible pour un humain:[@
perl -pe 's/(\d+)/localtime($1)/e' nagios.log@]
Added lines 124-129:
@]

!!! Copie de fichier à travers un bastion
Les commandes sont:[@
scp [<options>] <file1> <file2> sshgate:<target_host>/<target_location>
scpg [<options>] <file1> <file2> <target_host>:<target_location> # Alias mode
Added lines 129-134:

!!! Générer un mot de passe
Mieux qu'apg:[@
plop=$(</dev/urandom tr -dc A-Za-z0-9 | head -c8)
echo $plop
@]
Changed line 291 from:
for i in $(mysql -e "select user, host  from mysql.user;" | awk '{print "`" $1 "`@`" $2 "`"}' ) ; do mysql -e "SHOW GRANTS FOR $i \G" | grep 'Grants for ' | cut -d':' -f 2 ; done@]
to:
for i in $(mysql -e "SELECT user, host FROM mysql.user;" | awk '{print "`" $1 "`@`" $2 "`"}' | tail -n +2) ; do mysql -e "SHOW GRANTS FOR $i \G" | grep 'Grants for ' | cut -d':' -f 2 ; done@]
Changed lines 287-291 from:
chown --reference <reference-file> <target-file>@]
to:
chown --reference <reference-file> <target-file>@]

Lister tous les utilisateurs MySQL
Utile pour les migrations pour le coup:[@
for i in $(mysql -e "select user, host  from mysql.user;" | awk '{print "`" $1 "`@`" $2 "`"}' ) ; do mysql -e "SHOW GRANTS FOR $i \G" | grep 'Grants for ' | cut -d':' -f 2 ; done
@]
Added lines 64-67:

!! Rsync over SSH avec port non standard
Fallait y penser:[@
rsync -acvzp -e "ssh -p 2222" root@89.yy.xx.86:/etc/apache2/ import/@]
Added lines 90-93:
Un autre exemple:[@
cat    wacweb*/apache2/*access.log | sed 's/T/ /' |  sed 's/+/ /' | awk -vDate=10:27:00 -vDate2=10:29:00 ' { if ($2 > Date && $2 < Date2) print Date $0}' | sort  > /tmp/logs_segfault
grep -vE 'jpg|css|js|png|gif|wacweb3'  /tmp/logs_segfault | less -S @]

Added lines 143-150:

!!! Utilisation de la commande @@at@@
Pour utiliser la commande @@at@@, c'est enfait assez simple. Le plus dur c'est de trouver de la doc dessus:[@
at now  + 1 minute
/etc/init.d/networking restart
[Ctrl + D]
@]

Added lines 64-67:

!!! Faire le ménage dans les process MySQL
Comme d'hab, éviter de killer les INSERT:
[@for i in $(mysqladmin  proc | grep 'TMP_PDT_reco_fiche'  | awk '{print $2}' ) ; do mysqladmin kill $i ; done@]
Changed lines 17-18 from:
nmap -oG - -p 22 192.168.0.2-200  | grep 22@]
to:
nmap -oG - -p 22 192.168.0.2-200  | grep 22
nmap -sV -p 22 10.0.82.0/24@]
Added lines 192-194:

!!! Trouver les vhosts doublons de conf Apache
[@grep -r 'ServerName\|ServerAlias' /etc/apache2/sites-available | sed 's/\t/ /'  |sed 's/^.*ServerName\s*//' | sed 's/^.*ServerAlias\s*//' | sed 's/\s/\n/g' | sort | uniq -c | sort -g@]
Added lines 97-101:
!!! Comparer deux fichiers sur deux serveurs différents
Peut être pratique pour comparer les sortie d'un dpkg -L par exemple:[@
diff <(ssh -A root@server_ip_1 'cat /etc/php5/cli/php.ini') <(ssh -A root@server_ip_2 'cat /etc/php5/cli/php.ini')@]

Added lines 112-115:

!!! Connexion SSH via une passerelle
Pour assécer au réseau local:[@
ssh -t reachable_host ssh unreachable_host@]
Added lines 160-163:

!!! Extraire une archive d'un serveur vers un autre
L'astuce magique pour éviter les freespace lors de la décompression d'une archive:
[@$ cat your_tar_file.tar | ssh user@domain " cd /path/to/untar; tar xvf -"@]
Added lines 179-185:

!!! Forcer le reboot d'un serveur proprement
Si un serveur ne veut pas redémarrer, on fait:[@
echo s > /proc/sysrq-trigger # Flusher les buffers d'IO pour ne pas perdre de données
echo u > /proc/sysrq-trigger # Démonter puis Remonter toutes les partitions en Read-Only
echo b > /proc/sysrq-trigger # Forcer le reboot de la machine@]
Merci l'amis [[[http://www.area51.fr/2011/10/31/forcer-redemarrage-linux-via-ssh/|Area51]] ;-)
June 21, 2013, at 10:35 AM EST by 89.31.149.185 -
Added lines 52-58:

!!! Structure de contrôle usuelles
Il y'a le classic @@for@@, qui marche bien tant qu'il n'y a pas d'espace dans valeurs à parser:[@
for i in $(cat /mon/file) ; do echo $i ; done@]
Et puis il y'a le while line, qui lui permet de faire ça proprement:[@
while read i ; do echo $i ; done < /mon/file
@]
June 18, 2013, at 06:13 PM EST by 89.31.149.185 -
Added lines 230-232:

Remontage en live d'une partition[@
mount /var/www -o remount,exec@]
June 18, 2013, at 04:08 PM EST by 89.31.149.185 -
Added lines 79-81:
!!! Afficher tous les fichiers d'un packet installé
La super commande pour afficher tous les fichiers d'un packet installé:[@
dpkg -L <nom du packet>@]
June 12, 2013, at 06:47 PM EST by 89.31.149.185 -
Added lines 72-78:

!!! Extraire des logs entre deux heures ou deux dates
Depuis 14h00 : [@
awk -vDate=14:00 ' { if ($4 > Date) print $1}' access.log @]
Entre 14h et 15h:[@
awk -vDate=14:00 -vDate2=15h00 ' { if ($4 > Date && $4 < Date2) print Date FS Date2 FS $4}' access.log@]

May 24, 2013, at 12:11 PM EST by 89.31.149.185 -
Changed line 122 from:
Bon, et quand on a ni @@curl@@ et ni @@wget@@? ''Mothaaa fuckaaaa'', @@telnet@@ is your friend. Bon, par contre, c'est carrement plus relou ... mais j'ai encore jamais vu une machine sans telnet[@
to:
Bon, et quand on a ni @@curl@@ et ni @@wget@@? ''Mothaaa fuckaaaa'', @@telnet@@ is your friend. Bon, par contre, c'est carrement plus relou ... mais j'ai encore jamais vu une machine sans telnet:[@
Changed line 128 from:
Host: www.porte-parole.gouv.fr
to:
Host: <DOMAINE>
Changed line 130 from:
Note: Il faut taper les trois dernières lignes.
to:
Note: Il faut taper les trois dernières lignes, en adaptant @@<URL>@@ et @@<DOMAINE>@@.
May 24, 2013, at 12:09 PM EST by 89.31.149.185 -
Added lines 122-130:
Bon, et quand on a ni @@curl@@ et ni @@wget@@? ''Mothaaa fuckaaaa'', @@telnet@@ is your friend. Bon, par contre, c'est carrement plus relou ... mais j'ai encore jamais vu une machine sans telnet[@
telnet 10.1.24.13  80
Trying 10.1.24.13...
Connected to 10.1.24.13.
Escape character is '^]'.
GET <URL> HTTP/1.1
Host: www.porte-parole.gouv.fr
Connection: close@]
Note: Il faut taper les trois dernières lignes.
May 22, 2013, at 04:50 PM EST by 89.31.149.185 -
Added lines 117-121:

!!! Récupérer les header
La première méhtode est plus rapide, la seconde donne plus d'informations, notemment tout ce qui est redirection PHP:[@
curl -I mondomaine.com
wget -S -O /dev/null http://domaine.com/@]
May 22, 2013, at 02:27 PM EST by 89.31.149.185 -
Added line 142:
'''Attention, il ne faut pas oublier d'activer le mod @@proxy@@ et @@proxy_http@@.'''
May 17, 2013, at 02:37 PM EST by 89.31.149.185 -
Changed lines 114-115 from:
Ça, c'est génial pour tester un web derrière un loadbalancer;[@
curl -I -H "Host: domaine.com" 10.0.28.12/mon
-url/super/cool/@]
to:
Ça, c'est génial pour récupérer le header d'un site derrière un loadbalancer, ou carrement afficher la page dans son term;[@
curl
-I -H "Host: domaine.com" 10.0.28.12/mon-url/super/cool/
curl  -H "Host: domaine.com"  localhost/mon-url/super/cool/ | lynx -stdin@]
May 15, 2013, at 04:37 PM EST by 89.31.149.185 -
Changed line 156 from:
* Wordpress:
to:
* Wordpress: @@wp-config.php@@
May 15, 2013, at 04:36 PM EST by 89.31.149.185 -
Added lines 151-157:

!!! Configuration mysql des CMS
Alors parceque dés fois c'est super relou de retrouver les bonnes infos, on fait le point ici:
* Drupal: @@sites/default/settings.php@@
* Spip: @@conf/connect.php@@
* Wordpress:

Changed lines 196-200 from:
tail -n 10000 /etc/apache2/sites-enabled/* | egrep -i "(serveralias|servername|==*)" | grep -v "^#" | awk '{ print $1"\t"substr($0, index($0,$2))}'@]
to:
tail -n 10000 /etc/apache2/sites-enabled/* | egrep -i "(serveralias|servername|==*)" | grep -v "^#" | awk '{ print $1"\t"substr($0, index($0,$2))}'@]

Un petit truc génial pour copier les droits et les permission d'un objet déjà existant:[@
chmod --reference <reference-file> <target-file>
chown --reference <reference-file> <target-file>
@]
Added lines 187-190:

Réparer la completion de bash:[@
ln -s /proc/self/fd /dev/fd
@]
Added lines 53-55:
!!! Hardware Virtualisation
Pour vérifier si la virtualisation matérielle est disponible, doit retourner quelque chose:[@
egrep ‘(vmx|svm)’ /proc/cpuinfo@]
Added lines 129-137:

!!! ProxyPass
Pour mettre en place un petit proxy:[@
<VirtualHost *:80>
        ServerName              mondomaine.com
        ProxyPreserveHost      On
        ProxyPass              /      http://monserveur/
        ProxyPassReverse        /      http://monserveur/
</VirtualHost>@]
Added lines 175-177:

Pour virer les caratère UTF-8 d'un term (utile pour les copier/coller vers les supports non UTF-8, comme ce wiki ...):[
@pstree | tail --bytes=+4@]
Changed lines 96-100 from:
On génère la liste des packets sur les deux machines:
* [@dpkg -l | grep '^ii' > list1
dpkg -l | grep
'^ii' > list2@]
* On copie les fichiers sur les deux serveurs dans un répertoire commun, et: [@
cat list*
| sort | grep '^ii' | awk '{ print $2}' | uniq -u@]
to:
On a juste besoin de pouvoir se connecter en SSH pour récupérer la liste du serveur distant:
[@(ssh root@10.0.34.21 'dpkg -l
'; dpkg -l )  | sort | grep '^ii' | awk '{ print $2}' | uniq -u@]
Changed lines 95-101 from:
to:
!!! Afficher les packets de différence entre deux serveurs
On génère la liste des packets sur les deux machines:
* [@dpkg -l | grep '^ii' > list1
dpkg -l | grep '^ii' > list2@]
* On copie les fichiers sur les deux serveurs dans un répertoire commun, et: [@
cat list* | sort | grep '^ii' | awk '{ print $2}' | uniq -u@]

Changed lines 180-181 from:
tail -n 10000 /etc/apache2/sites-enabled/* | egrep -i "(serveralias|servername|==*)" | grep -v "^#" | awk '{ print $1"\t"substr($0, index($0,$2))}'@]
to:
tail -n 10000 /etc/apache2/sites-enabled/* | egrep -i "(serveralias|servername|==*)" | grep -v "^#" | awk '{ print $1"\t"substr($0, index($0,$2))}'@]
Added lines 118-121:

!!! Faux Freespace
Si on a une grosse perte d'espace disque, mais qu'un @@du  -sh /@@ ne renvois rien, il faut voir du coté des processus qui ont bloqué la suppréssion d'un fichier:[@
lsof / | grep -i deleted@] S'il y'a des résultats, alors, on kill les process pour libérer l'espace disque.
Changed lines 170-171 from:
cat /etc/apache2/sites-enabled/* | egrep -i "(serveralias|servername)" | grep -v "^#" | awk '{ print $1"\t"substr($0, index($0,$2))}'@]
to:
tail -n 10000 /etc/apache2/sites-enabled/* | egrep -i "(serveralias|servername|==*)" | grep -v "^#" | awk '{ print $1"\t"substr($0, index($0,$2))}'@]
Changed line 170 from:
cat /etc/apache2/sites-enabled/* | egrep -i "(serveralias|servername)"@]
to:
cat /etc/apache2/sites-enabled/* | egrep -i "(serveralias|servername)" | grep -v "^#" | awk '{ print $1"\t"substr($0, index($0,$2))}'@]
Changed lines 167-170 from:
history|awk '{a[$2]++ } END{for(i in a){print a[i] " " i}}'|sort -rn|head -n50@]
to:
history|awk '{a[$2]++ } END{for(i in a){print a[i] " " i}}'|sort -rn|head -n50@]

Afficher les domaines utilisés par les vhosts d'apache2 pour savoir dans quel ordre ils sont traités:[@
cat /etc/apache2/sites-enabled/* | egrep -i "(serveralias|servername)"
@]
Changed lines 164-167 from:
dmidecode -t memory | awk '/Size/ || /Speed/ || /\tLocator/ || /Part/ {print $0}'@]
to:
dmidecode -t memory | awk '/Size/ || /Speed/ || /\tLocator/ || /Part/ {print $0}'@]

Afficher le top 50 des commandes utilisées:[@
history|awk '{a[$2]++ } END{for(i in a){print a[i] " " i}}'|sort -rn|head -n50
@]
Added lines 118-121:

!!! Alternative to tree
Un tips si on veut utiliser tree et qu'on ne peut pas:[@
find . | sed 's/[^/]*\//|  /g;s/| *\([^| ]\)/+--- \1/'@]
Added lines 34-36:
!!! Nombre d'IP distante connectée sur un service
Cette commande affiche le nombre de connexion ouvertes par IP pour un port donné d'un serveur:[@
netstat -lnpta | grep <IP>:<PORT> | awk '{print $5}' | cut -d : -f1 | sort -n | uniq -c | sort -g@]
Added lines 62-65:

!!! Afficher les inodes par répertoire
Pour afficher les inodes par répertoire:[@
for i in `ls -1A`; do echo "`find $i | sort -u | wc -l` $i"; done | sort -rn | head -10@]
Added lines 111-115:

!!! Importer tes les tables d'un backup dans MySQL:
Se mettre dans le dossier où les tables sauvegardées sont de la forme <base>-<table>:[@
for i in $(ls -1 . | sed 's/-.*//' | uniq ; do  bzcat $( ls ${i}-* ) |  mysql -uroot -p<PASS> -h10.0.4.52 $i ; echo "=> $i done" ; done@]
Ce script va afficher sortir le nom des bases grâce au @@ls -1@@ et les filtres qui sont derrière. Ensuite, pour chaque base, il va importer directement dans la bonne base de MySQL. On peut bien modifier les modèle de nommage des tables en jouant sur le pattern du sed.
Changed lines 145-148 from:
[@cd/var/exports/var_lib_php5 && find . ! -amin 120 -type f -exec rm {} \;@]
to:
[@cd/var/exports/var_lib_php5 && find . ! -amin 120 -type f -exec rm {} \;@]

Afficher la RAM materiellement installée:[@
dmidecode -t memory | awk '/Size/ || /Speed/ || /\tLocator/ || /Part/ {print $0}'
@]
Changed lines 38-39 from:
[@find . -type f | xargs chmod 777@]
to:
[@find . -type f | xargs chmod 660
find . -type f -exec  chmod 660 {} \;
@]
Changed lines 41-42 from:
[@find . -type d | xargs chmod 777@]
to:
[@find . -type d | xargs chmod 770
find . -type f -exec  chmod 770 {} \;
@]
Added lines 29-33:

!!! Redirection d'erreurs
Redirections d'erreurs dans trou noir:
[@sudo sh /opt/kelios-dump/kelios_dump_start.sh > /dev/null 2>&1@]

Added lines 59-61:

!!! Tips Screen
* Pour déplacer une fenêtre dans screen, on fait: @@Ctrl + A@@ puis on tape: @@:number <numéro>@@
Added lines 89-92:

!!! Simuler une requête sur un domaine à partir d'une IP
Ça, c'est génial pour tester un web derrière un loadbalancer;[@
curl -I -H "Host: domaine.com" 10.0.28.12/mon-url/super/cool/@]
Changed lines 100-101 from:
to:
La version suivante est la meilleur:[@
for i in $(ls -1 /var/lib/mysql/centreonprod | sed 's/\..*//' | sort | uniq);  do echo -en "\n\n==> Table: $i\n\n" >> /home/nexen/roc ; mysql centreonprod -e "select * from  $i limit 0,10\G" >> /home/nexen/roc ; done@]
Added lines 97-100:

!!! Exécuter une commande SQL sur toutes les tables d'une base
Cette commande sort un court extrait de chaque table. Génial pour faire du reverese engeerneering sur une appli ;-):[@for i in $(ls -1 /var/lib/mysql/centreonprod | sed 's/\..*//' | sort | uniq);  do  echo "mysql centreonprod -e select * from  $i limit 0,10" ; done @]

Added lines 93-96:

!!! trouver le hostname d'une liste d'ip en se connectant via SSH
Il faut mettre la liste d'IP dans le fichier '''lis_ip''', et notre login sera demandé à chaque connexion, à part si vous avec un certificat: [@
awk '{print "ssh root@"$1" hostname >> log && sed -i  \"$,$ s/$/ "$1"/\" log" }' list_ip@]
Added lines 89-92:

!!! Blacklister mode iptables
Une IP vous saoule? Blacklistage mode '''Panzer''' quasi définitif jusqu'au prochain reboot du serveur:[@
iptables -I INPUT -s 200.98.129.253/32 -j DROP@]
Changed lines 115-118 from:
Note: Enfait, cette commande télécharge la page web monip.org, fait un grp pour récupérer l'IP dedans et l'affiche. La seconde commande fait just un host du résultat de la commande précédente.
to:
Note: Enfait, cette commande télécharge la page web monip.org, fait un grp pour récupérer l'IP dedans et l'affiche. La seconde commande fait just un host du résultat de la commande précédente.

Un problème d'inodes? On tej tous les petits fichiers de sessions PHP:
[@cd/var/exports/var_lib_php5 && find . ! -amin 120 -type f -exec rm {} \;@]
Changed lines 110-115 from:
find . -type f -exec sed -i "s/89.31.144.154/89.31.147.91/g" '{}' \;@]
to:
find . -type f -exec sed -i "s/89.31.144.154/89.31.147.91/g" '{}' \;@]

Récupérer son IP publique et son reverse:[@
wget -q -O - "$@" monip.org | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'
host $(wget -q -O - "$@" monip.org | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')@]
Note: Enfait, cette commande télécharge la page web monip.org, fait un grp pour récupérer l'IP dedans et l'affiche. La seconde commande fait just un host du résultat de la commande précédente.
Added lines 70-77:

!!! Import/Export des packets d'une distrib
Exporter la conf:[@
dpkg --get-selections "*" > old.pkgs@]
Importer la conf:[@
dpkg --set-selections < old.pkgs
apt-get dselect-upgrade@]

Changed lines 99-102 from:
@]
to:
@]

Faire un sed sur pleins de fichiers:[@
find . -type f -exec sed -i "s/89.31.144.154/89.31.147.91/g" '{}' \;
@]
Added lines 49-54:
Affiche tous les fichiers modifiés depuis 22 jours:[@
find . -type f -mtime -22 -printf '%TD:%THh%TM: %p\n' | sort | less@]
Note:
* mtime -X : liste tous les fichiers qui ont été modifié depuis X jours
* mtime X : liste tous les fichiers qui ont été modifié X jours auparavant (et uniquement ce jour là)
* mtime +X : liste tous les fichiers qui n'ont pas été modifié depuis X jours.
Added lines 65-71:
!!! Lister toutes les tâches cron
Ce snippet permet de lister toutes les tâches cron d'un système:[@
tail -n +1 $(find {/etc/cron*,/var/spool/cron/crontabs/} -type f )
@]
Si on veut voir que les lignes d'appel et non tous les scripts, on fait:[@
tail -n +1 $(find {/etc/cron.d/,/var/spool/cron/crontabs/} -type f )
@]
Added lines 72-75:

Regex pour afficher  un fichiers sans les lignes vides, et sans les commentaires:[@
grep '^[^#|^$|^ *$]'@]

Added lines 47-48:
Attention, cette commande ''attrape''  tous les fichiers crées il y'a 24 heures sur 24 heures. Si l'on veut matcher les fichier '''plus vieux''' de 24 heures, il faut rajouter un [@-mtime +0@].[@
find /var/www/ -type f -mtime +7 -printf '%TD:%THh%TM: %p\n' | wc -l@]
Changed lines 64-65 from:
Petite commande pour vérifier qui se connecte d'où://
[@{ zcat auth.log.1.gz auth.log.2.gz && cat auth.log; } | grep sshd | grep Accept | grep --only-matching '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | sort | uniq -c | sort -nr@]
to:
Petite commande pour vérifier qui se connecte d'où:[@
{ zcat auth.log.1.gz auth.log.2.gz && cat auth.log; } | grep sshd | grep Accept | grep --only-matching '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | sort | uniq -c | sort -nr@]
Changed lines 68-69 from:
Pour rajouter un utilisateur à un groupe (affiche avant/après)://
[@grep adm /etc/group; sed -r -i -e 's/^(adm.*:)$/\1www-data/' /etc/group; grep adm /etc/group@]
to:
Pour rajouter un utilisateur à un groupe (affiche avant/après):[@
grep adm /etc/group; sed -r -i -e 's/^(adm.*:)$/\1www-data/' /etc/group; grep adm /etc/group@]
Changed line 68 from:
Pour rajouter un utilisateur à un groupe (affiche avant/après):\\
to:
Pour rajouter un utilisateur à un groupe (affiche avant/après)://
Added lines 62-65:

!!! Liste des IP ayant réussis à se connecter en SSH sur les 3 derniers logs
Petite commande pour vérifier qui se connecte d'où://
[@{ zcat auth.log.1.gz auth.log.2.gz && cat auth.log; } | grep sshd | grep Accept | grep --only-matching '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | sort | uniq -c | sort -nr@]
Changed lines 72-76 from:
Note: il faut bien préciser le path complet du binaire time, sinon, il appellera l'implémentation bash, qui est moins fonctionnelle.
to:
Note: il faut bien préciser le path complet du binaire time, sinon, il appellera l'implémentation bash, qui est moins fonctionnelle.

Options pour monter un partage NFS coté client:[@
rw,tcp,hard,intr,fg,timeo=60,retrans=2,rsize=32768,wsize=32768,addr=$ip_serv
@]
July 31, 2012, at 05:08 PM EST by 89.31.149.185 -
Changed line 33 from:
[@find /usr/local/src -type f | xargs chmod 777@]
to:
[@find . -type f | xargs chmod 777@]
Changed line 35 from:
[@find /usr/local/src -type d | xargs chmod 777@]
to:
[@find . -type d | xargs chmod 777@]
Changed line 37 from:
[@find /usr/local/src -type l | xargs chmod 777@]
to:
[@find . -type l | xargs chmod 777@]
July 31, 2012, at 05:07 PM EST by 89.31.149.185 -
Added lines 30-37:
!!! Changer les droits de manière récursive
pour changer les droits de manière récursive sans tout casser les droits différents entre des fichiers, des dossiers, des liens ...
* Des fichiers:\\
[@find /usr/local/src -type f | xargs chmod 777@]
* Des dossiers:\\
[@find /usr/local/src -type d | xargs chmod 777@]
* Des liens:\\
[@find /usr/local/src -type l | xargs chmod 777@]
July 16, 2012, at 07:46 PM EST by 89.31.149.185 -
Changed line 3 from:
[@du -a /var | sort -n -r | head -n 10@]
to:
[@du -a . | sort -n -r | head -n 10@]
July 10, 2012, at 08:56 AM EST by 89.31.149.185 -
Changed lines 60-64 from:
[@dpkg -L apache2-mpm-prefork@]
to:
[@dpkg -L apache2-mpm-prefork@]

Connaitre le temps d’exécution d'un script et le reporter dans un fichier (pour les crontab entre autre):\\
[@/usr/bin/time -apo /var/tmp/my.log /usr/bin/php /var/www/modules/mon_script.php@]
Note: il faut bien préciser le path complet du binaire time, sinon, il appellera l'implémentation bash, qui est moins fonctionnelle.
June 15, 2012, at 06:47 PM EST by 89.31.149.185 -
Changed lines 51-53 from:
to:
Afficher les serveurs DNS d'une liste de domaine dans un fichier:[@
for i in $(cat apache_short ) ; do if [[ ! -z $( dig NS $i +short |  grep -v "nexen") ]]  ; then echo -e "=> $i:\n$(dig NS $i +short)" ; fi ; done
@]
June 15, 2012, at 05:55 PM EST by 89.31.149.185 -
Added lines 44-52:
!!! Lister les domaines gérés par un LAMP+Bind9
Lister tous les domaines gérés par apache:[@
rgrep 'ServerName\|ServerAlias' /etc/apache2/sites-available | sed 's/\t/ /'  |sed 's/^.*ServerName\s*//' | sed 's/^.*ServerAlias\s*//' | sed 's/\s/\r/g' | rev | sort | rev @]
Lister tous les domaines (SOA) gérés par Bind9:[@
rndc dumpdb -zones
grep "SOA" /var/cache/bind/named_dump.db | sed 's/\t/ /g' | cut -d" " -f 1 | rev | sort | rev
@]

Changed line 58 from:
[@dpkg -L apache2-mpm-prefork@]
to:
[@dpkg -L apache2-mpm-prefork@]
June 13, 2012, at 01:47 PM EST by 89.31.149.185 -
Changed lines 40-42 from:
to:
!!! Faire un rapport rapide sur une machine
Faire un petit rapport sur une machine:
[@hostname > /tmp/releve.conf && df -hP >> /tmp/releve.conf && pstree >> /tmp/releve.conf && free -m >> /tmp/releve.conf && netstat -rn >> /tmp/releve.conf && dpkg -l |grep php >> /tmp/releve.conf && dpkg -l | grep apache >> /tmp/releve.conf && dpkg -l | grep mysql >> /tmp/releve.conf && mailx -s "releve conf" compte@domaine.tld < /tmp/releve.conf@]
June 07, 2012, at 09:52 AM EST by 89.31.149.185 - Page moved to Wiki.CodeSnippets from Wiki.Tips
June 07, 2012, at 09:51 AM EST by 89.31.149.185 -
Deleted line 0:
Added lines 29-34:


!!! Aficher les vhosts de Apache de manière cool
C'est plus jolie:
[@/usr/sbin/apache2ctl -S 2>&1 | perl -ne 'm@.*port\s+([0-9]+)\s+\w+\s+(\S+)\s+\((.+):.*@ && do { print "$2:$1\n\t$3\n"; $root = qx{grep DocumentRoot $3}; $root =~ s/^\s+//; print "\t$root\n" };'@]

Changed lines 1-4 from:
Pour savoir quel fichiers sont installés par un packet:\\
[@dpkg -L apache2-mpm-prefork@]

to:

!!! Afficher les plus gros fichiers d'un répertoire
Changed lines 7-10 from:
Pour rajouter un utilisateur à un groupe (affiche avant/après):\\
[@grep adm /etc/group; sed -r -i -e 's/^(adm.*:)$/\1www-data/' /etc/group; grep adm /etc/group@]

to:
!!! Redirection de domain.com vers www.domain.com
Changed line 11 from:
       Redirect / http://www.ludojeux.com/
to:
       Redirect / http://www.domain.com/
Added lines 14-15:

!!! Scanner les ports SSH d'un réseau:
Changed lines 33-34 from:
find /var/www/ -type f -mtime 0 -printf '%TD:%THh%TM: %p\n' | mail -s "Liste des fichiers modifiés la veille" com@domain.com@]
to:
find /var/www/ -type f -mtime 0 -printf '%TD:%THh%TM: %p\n' | mail -s "Liste des fichiers modifiés la veille" user@domain.com@]



!!! Divers
Pour rajouter un utilisateur à un groupe (affiche avant/après):\\
[@grep adm /etc/group; sed -r -i -e 's/^(adm.*:)$/\1www-data/' /etc/group; grep adm /etc/group@]

Pour savoir quel fichiers sont installés par un packet:\\
[@dpkg -L apache2-mpm-prefork@]
Changed lines 34-36 from:
to:
!!! Liste des fichiers modifiés les 24 dernières heures
Cette commande permet d'envoyer par mail une liste des fichiers modifié (de leur contenu, pas leurs attributs) les 24 dernières heures. Typiquement le genre de truc que l'on met dans un ''cron'': [@
find /var/www/ -type f -mtime 0 -printf '%TD:%THh%TM: %p\n' | mail -s "Liste des fichiers modifiés la veille" com@domain.com@]
Changed lines 30-31 from:
find * -name \* -exec stat -c '%U:%G %n' {} \; @]Pour récupérer les propriétaires:[@
while read line; do echo "chown $line"; done < perm.bak
to:
find * -name \* -exec stat -c '%U:%G %n' {} \; > owner.bak@]Pour récupérer les propriétaires:[@
while read line; do echo "chown $line"; done < owner.bak
Changed lines 30-31 from:
find * -name \* -exec stat -c '%U:%G %n' {} \; @]Pour récupérer les droits:[@
while read line; do echo "chmod $line"; done < perm.bak
to:
find * -name \* -exec stat -c '%U:%G %n' {} \; @]Pour récupérer les propriétaires:[@
while read line; do echo "chown $line"; done < perm.bak
Changed lines 23-26 from:
!!! Faire un backup des droits d'un répertoire
L'idée est de faire une sauvegarde des droits d'un répertoire, avant de bidouiller dessus. On peut aussi récupérer les informations à partir d'un backup pas trop vieux ;-) [@
find
* -name \* -exec stat -c '%a %n' {} \; > perm.bak@]
Pour
récupérer les droits:[@
to:
!!! Faire un backup des droits et propriétaires d'un répertoire
L'idée est de faire une sauvegarde des droits d'un répertoire, avant de bidouiller dessus. On peut aussi récupérer les informations à partir d'un backup pas trop vieux ;-)
* Pour les droits: [@
find *
-name \* -exec stat -c '%a %n' {} \; > perm.bak@]Pour récupérer les droits:[@
Changed lines 28-35 from:
@]
to:
@]
* Pour les propriétaires: [@
find * -name \* -exec stat -c '%U:%G %n' {} \; @]Pour récupérer les droits:[@
while read line; do echo "chmod $line"; done < perm.bak
@]


Changed line 27 from:
while read line; do echo "command $line"; done < perm.bak
to:
while read line; do echo "chmod $line"; done < perm.bak
Added lines 22-28:

!!! Faire un backup des droits d'un répertoire
L'idée est de faire une sauvegarde des droits d'un répertoire, avant de bidouiller dessus. On peut aussi récupérer les informations à partir d'un backup pas trop vieux ;-) [@
find * -name \* -exec stat -c '%a %n' {} \; > perm.bak@]
Pour récupérer les droits:[@
while read line; do echo "command $line"; done < perm.bak
@]
Changed line 21 from:
nmap  -oG - -p 22 192.168.0.2-200  | grep 22@]
to:
nmap -oG - -p 22 192.168.0.2-200  | grep 22@]
Changed lines 20-21 from:
nmap -sP 192.168.2.1-200 | grep up@]
to:
nmap -sP 192.168.2.1-200 | grep up
nmap  -oG - -p 22 192.168.0.2-200  | grep 22@]
Changed lines 17-21 from:
</VirtualHost>@]
to:
</VirtualHost>@]

Pour afficher toutes les machines présentes sur un LAN:[@
nmap -sP 192.168.2.1-200 | grep up@]

Changed lines 16-18 from:
       RedirectMatch 301 (.*) www.domain.com$1
<
/VirtualHost>
@]
to:
       Redirect / http://www.ludojeux.com/
</
VirtualHost>@]
Added lines 11-18:


Redirection dans vhost de domain.com vers www.domain.com:\\
[@<VirtualHost *:80>
        ServerName domain.com
        RedirectMatch 301 (.*) www.domain.com$1
</VirtualHost>
@]
Changed lines 6-10 from:
[@du -a /var | sort -n -r | head -n 10@]
to:
[@du -a /var | sort -n -r | head -n 10@]


Pour rajouter un utilisateur à un groupe (affiche avant/après):\\
[@grep adm /etc/group; sed -r -i -e 's/^(adm.*:)$/\1www-data/' /etc/group; grep adm /etc/group
@]
Changed lines 2-6 from:
[@dpkg -L apache2-mpm-prefork@]
to:
[@dpkg -L apache2-mpm-prefork@]


Pour avoir la liste des plus gros dossiers sur le système:\\
[@du -a /var | sort -n -r | head -n 10
@]
Changed lines 1-2 from:
Pour savoir quel fichiers sont installés par un packet:
dpkg -L apache2-mpm-prefork
to:
Pour savoir quel fichiers sont installés par un packet:\\
[@
dpkg -L apache2-mpm-prefork@]
Added lines 1-2:
Pour savoir quel fichiers sont installés par un packet:
dpkg -L apache2-mpm-prefork
Page last modified on May 18, 2016, at 08:39 PM EST