CodeSnippetsPlus

Wiki.CodeSnippetsPlus History

Hide minor edits - Show changes to output

Added lines 175-181:

!!! Envoyer un dossier via le presse-papier

Compression:[@
tar czf - myfiles/ | base64@]
Vous prenez l'output et vous pouvez le copy/paste. Pour decompresser, coller l'output dans un fichier data, et lancer la commande pour extraire directement:[@
base64 -d < data  | tar tvzf -@]
Added lines 32-37:

!! Trouver tous les binaires GTK ou QT
Vive ldd :) :[@
for i in $(file /usr/bin/* /bin/* | grep ELF | cut -d: -f 1 ); do if [[ ! -z $( ldd $i | grep -iE "gtk|qt"  ) ]]  ; then echo $i ; ldd  $i | grep -iE "gtk|qt" ; fi  ; done@]

Changed line 158 from:
!!! Tester si une communication client/server fonctionne en UDP
to:
!!! Tester si une communication client/server fonctionne en TCP/UDP avec netcat/nc
Added lines 166-169:
Pour la partie TCP:[@

@]

Added lines 33-36:
!! Trouver les IPs libres
Pour trouver toutes les IPs disponibles dans 1 ou plusieurs ranges, trés utile pour vérifier les hotes non utilisé dans les static leases du DHCP:[@
for range in 192.168.48.1-39 192.168.50.1-44; do nmap -v -sn -n $range -oG - | awk '/Status: Down/{print $2}' ; done
@]
Changed line 5 from:
for i in $( mount | grep '^/' | awk '{ print $3 }' ); do echo "Doing $i/empty_file ... "; dd if=/dev/zero of=$i/empty_file bs=1M ; rm $i/empty_file ; done@]
to:
for i in $( mount | grep '^/' | awk '{ print $3 }' ); do echo "Doing $i/empty_file ... "; dd if=/dev/zero of=$i/empty_file bs=1M ; sync; rm $i/empty_file ; done@]
Changed line 5 from:
for in in $( mount | grep '^/' | awk '{ print $3 }' ); do echo "Doing $i/empty_file ... "; dd if=/dev/zero of=$i/empty_file bs=1M ; rm $i/empty_file ; done@]
to:
for i in $( mount | grep '^/' | awk '{ print $3 }' ); do echo "Doing $i/empty_file ... "; dd if=/dev/zero of=$i/empty_file bs=1M ; rm $i/empty_file ; done@]
Added lines 2-6:

!! Ecrire des zero sur tous l'espace vide
One liner: [@
for in in $( mount | grep '^/' | awk '{ print $3 }' ); do echo "Doing $i/empty_file ... "; dd if=/dev/zero of=$i/empty_file bs=1M ; rm $i/empty_file ; done@]

Added lines 9-27:

!!! Dnsdiff en bash
Oui, parceque non, ca se fait bien en bash:[@
DOMAIN_LIST='file'; DNS1='New DNS IP'; DNS2='Old DNS IP'
for i in $(cat $DOMAIN_LIST); do echo -ne "Testing '$i' zone ... "; OUTPUT=$(diff <(dig +short @197.255.224.18 AXFR $i | sort) <( dig +short @197.255.224.19 AXFR $i | sort) ); RC=$?; [ $RC -ne 0 ] && echo -en "${Red}FAIL${Nil}\n\nDiff:${OUTPUT}\n\n"; [ $RC -eq 0 ] &&  echo -en "${Cyan}OK${Nil}\n" ; done
@]
En décomposé:[@@]
[@
DOMAIN_LIST='file'
DNS1='New DNS IP'
DNS2='Old DNS IP'
for i in $(cat $DOMAIN_LIST); do
  echo -ne "Testing '$i' zone ... ";
  OUTPUT=$(diff <(dig +short @197.255.224.18 AXFR $i | sort) <( dig +short @197.255.224.19 AXFR $i | sort) ); RC=$?;
  [ $RC -ne 0 ] && echo -en "${Red}FAIL${Nil}\n\nDiff:${OUTPUT}\n\n";
  [ $RC -eq 0 ] &&  echo -en "${Cyan}OK${Nil}\n" ;
done
@]

Changed lines 47-48 from:
!!! Savoir sur quelle partition est installe Grub
[@dd bs=512 count=1 if=/dev/sda 2>/dev/null | strings@]
to:
!!! Grub et MBR
Savoir sur quelle partition est installe
Grub:[@
dd bs=512 count=1 if=/dev/sda 2>/dev/null | strings@]
Supprimer grub du MBR:[@
# Backup
dd if=/dev/sda of=/root/mbr.img bs=446 count=1

# Erase
if=/dev/zero of=/dev/sda bs=446 count=1

# Restore
dd if=/root/mbr.img of=/dev/sdx bs=446 count=1@]
Pour reconfigurer sous Debian, dont choisir la partition d'installation:[@
sudo dpkg-reconfigure grub-pc@]

Added lines 46-48:

!!! Savoir sur quelle partition est installe Grub
[@dd bs=512 count=1 if=/dev/sda 2>/dev/null | strings@]
Changed lines 73-75 from:
to:
!!! Télécharger un certificat SSL d'un serveur
Pour récupérer un fichier @@.crt@@ et éventuellement le mettre dans les certificat reconnus:[@
openssl x509 -in <(openssl s_client -connect server:port -prexit 2>/dev/null)@]
Added lines 68-73:

!!! Connection à MySQL sous Deiban et dérivés
Voila comment on se connecte à un mysql sans connaitre de mot de passe, et à condition d'etre sous Debian ou dérivé, et aussi d'être root:[@
mysql  --defaults-file=/etc/mysql/debian.cnf @]

Added lines 118-123:

!!! Toujours plus de folies avec APT
Comment virer les packets impossible à virer:[@
dpkg --purge --force-all package
@]Ou alors (Non testé):[@mv /var/lib/dpkg/info/PAQUET.* /tmp/
dpkg --remove --force-remove-reinstreq PAQUET@]
Added line 33:
* On notera aussi que ce n'est pas/plus la conf de ce site. Flemme de taper www, quand tu nous tiens ...
Added lines 113-116:

!!! Faire un dump de la configuration de Postfix
Et me l'envoyer ... Sinan, vous le piper dans un autre truc:[@
{ echo -e "Conf: main.cf\n========\n" ; postconf -nf ; echo -e "\n\nConf: master.cf\n========\n"; postconf -Mf ;  } | paste.jeznet.org@]
Changed lines 70-72 from:
* Clair: We (the client) would therefore enter the following at the command prompt:[@telnet remoteserver.com 25@]
* TLS: If you wish to connect to a server using SSL, you can use openssl with the following command (note the default port is 465, not 25):[@openssl s_client -crlf -connect remoteserver.com:465@]
* StartTLS: To connect to an SMTP server using TLS, use the following:[@openssl s_client -starttls smtp -crlf -connect remoteserver.com:25@]
to:
* Clair: We (the client) would therefore enter the following at the command prompt:[@
telnet remoteserver.com 25@]
* TLS: If you wish to connect to a server using SSL, you can use openssl with the following command (note the default port is 465, not 25):[@
openssl s_client -crlf -connect remoteserver.com:465@]
* StartTLS: To connect to an SMTP server using TLS, use the following:[@
openssl s_client -starttls smtp -crlf -connect remoteserver.com:25@]
Deleted line 54:
Added lines 67-73:

!!! Débugger avec telnet et TLS
Bin oui, parceque telnet, c'est bien pratique, mais sur la prod, en mode sécurisé, c'est plus compliqué. Alors voici la méthode
* Clair: We (the client) would therefore enter the following at the command prompt:[@telnet remoteserver.com 25@]
* TLS: If you wish to connect to a server using SSL, you can use openssl with the following command (note the default port is 465, not 25):[@openssl s_client -crlf -connect remoteserver.com:465@]
* StartTLS: To connect to an SMTP server using TLS, use the following:[@openssl s_client -starttls smtp -crlf -connect remoteserver.com:25@]
[[http://www.thatsgeeky.com/2011/01/using-telnet-with-an-smtp-server/|Source]]
Changed line 106 from:
Note de contexte: Ici, tout le traffic web arrive sur le port 80, même le trafic HTTPS, qui est lui déchiffré en amont par Pound (Proxy HTTPS). Et on veut tous les domaines dispo en HTTP '''et''' HTTPS, sans qu'il y'a ai de pages/domaines morts.
to:
Note de contexte: Ici, tout le traffic web arrive sur le port 80, même le trafic HTTPS, qui est lui déchiffré en amont par Pound (Proxy HTTPS). Et on veut tous les domaines soient dispo en HTTP '''et''' HTTPS, sans qu'il y'a ai de pages/domaines morts.
Changed lines 103-177 from:
Et si l'on écrit d'un coté, ça devrait afficher de l'autre ;-) Sinon, ça veut dire que ça ne marche pas.
to:
Et si l'on écrit d'un coté, ça devrait afficher de l'autre ;-) Sinon, ça veut dire que ça ne marche pas.

!!! Redirection avancées de domaines
Note de contexte: Ici, tout le traffic web arrive sur le port 80, même le trafic HTTPS, qui est lui déchiffré en amont par Pound (Proxy HTTPS). Et on veut tous les domaines dispo en HTTP '''et''' HTTPS, sans qu'il y'a ai de pages/domaines morts.
On peut gérer assez simplement ce type de redirections très courantes avec le [[http://people.apache.org/~fabien/mod_macro/|mod_macro]] d'Apache2. Pour ce faire, nous allons définir 3 macros dans un fichier @@/etc/apache2/con.d/macros.conf@@:[@
<IfModule mod_macro.c>

        # Redirect all request to HTTP or HTTPS vhost
        <Macro redirect %destination>

                RewriteEngine  On
                RewriteCond    %{HTTP:X-Forwarded-Proto}      https
                RewriteCond    %{HTTP_HOST}                    !^%destination$
                RewriteRule    (.*)    https://%destination$1  [R=301,L]

                RewriteCond    %{HTTP:X-Forwarded-Proto}      !https
                RewriteCond    %{HTTP_HOST}                    !^%destination$
                RewriteRule    (.*)    http://%destination$1  [R=301,L]

        </Macro>

        # Redirect all request to HTTP vhost
        <Macro redirect_http %destination>

                RewriteEngine  On
                RewriteCond    %{HTTP_HOST}                    !^%destination$ [or]
                RewriteCond    %{HTTP:X-Forwarded-Proto}      https
                RewriteRule    (.*)    http://%destination$1  [R=301,L]

        </Macro>

        # Redirect all request to HTTPS vhost
        <Macro redirect_https %destination>

                RewriteEngine  On
                RewriteCond    %{HTTP_HOST}                    !^%destination$ [or]
                RewriteCond    %{HTTP:X-Forwarded-Proto}      !https
                RewriteRule    (.*)    https://%destination$1  [R=301,L]

        </Macro>
</IfModule>
@] Maintenant, vous pouvez faire des confs du type:[@
# Redirige tout le trafic vers le HTTPS d'un autre domaine.
<VirtualHost *:80>
        ServerName    jeznet.org
        Use            redirect_https  www.jeznet.org
        DocumentRoot    /var/www/jeznet.org/roundcube
</VirtualHost>

# Redirige le trafic de http(s)://jeznet.org vers http(s)://www.jeznet.org, en gardant le protocole d'origine
<VirtualHost *:80>
        ServerName    jeznet.org
        Use            redirect  www.jeznet.org
        DocumentRoot    /var/www/jeznet.org/roundcube
</VirtualHost>
@]
Bien sur, on n'oubliera pas de charger le module @@mod_macro@@ et de relancer Apache. Et une autre gratuite, pour protéger un dossier rapidement:[@
        <Macro auth_basic %location %token>

                # Attention, ici on parle bien de "Location". Si vous n'êtes pas sure de vous, changez-la par "Directory", qui est plus facile/simple a utiliser.
                <Location %location>
                        Deny from all
                        #Allow from (You may set IP here / to access without password)
                        AuthUserFile    /etc/apache2/users_%token
                        AuthName authorization
                        AuthType Basic
                        #Satisfy Any # (or all, if IPs specified and require IP + pass)
                                    # any means neither ip nor pass
                        require valid-user

                </Location>
        </Macro>


@]
Changed lines 94-103 from:
grep -a -i -A 50 -B 200  'PATTERN' /dev/mapper/system-home  > recover_screen@]
to:
grep -a -i -A 50 -B 200  'PATTERN' /dev/mapper/system-home  > recover_screen@]

!!! Tester si une communication client/server fonctionne en UDP
Sur le serveur, on lance @@nc@@, en écoute sur un port UDP:[@
nc -luv -p 60004
@]
Sur le client, on essaye de se connecter:[@
nc -vu mon_serveur.org 60004
@]
Et si l'on écrit d'un coté, ça devrait afficher de l'autre ;-) Sinon, ça veut dire que ça ne marche pas.
July 09, 2014, at 10:51 AM EST by 89.31.149.185 -
Changed lines 90-94 from:
mysql -e 'SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST order by Time ;' | less -S @]
to:
mysql -e 'SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST order by Time ;' | less -S @]

!!! Recover rapide d'un fichier
Vous venez de supprimer le fichier de conf sur lequel vous avez passé 3 jours? Y'a moyen d'en récupérer tout ou une partie si vous n'avez pas fait trop d'écriture sur le disque:[@
grep -a -i -A 50 -B 200  'PATTERN' /dev/mapper/system-home  > recover_screen
@]
Changed line 81 from:
!! Notes
to:
!!! Envois de mail conditionel
Added lines 87-90:

!!! Mysql Processlist par temps d'exécution
Simple, et fonctionne depuis mysql 5.1:[@
mysql -e 'SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST order by Time ;' | less -S @]
Changed lines 85-87 from:
       cat $LOG | mail -s '[ERROR] Synchro bddtest -> bdd1' technique@planet.fr
        cat $LOG | mail -s '[ERROR] Synchro bddtest -> bdd1' planetmd@planet.fr
        cat $LOG | mail -s '[ERROR] Synchro bddtest -> bdd1' baz@alterway.fr
to:
       cat $LOG | mail -s '[ERROR] Synchro bdd1 -> bdd2' user@mail.com
Changed lines 79-88 from:
Traduit de http://notes.depad.fr/software/apache/calcule-la-memoire-consomme-par-apache.html
to:
Traduit de http://notes.depad.fr/software/apache/calcule-la-memoire-consomme-par-apache.html

!! Notes
Pour envoyer un mail que s'il y'a du contenu dans un fichier:[@cat /dev/null > $LOG
[...]
if [[ -s "$LOG" ]] ; then
        cat $LOG | mail -s '[ERROR] Synchro bddtest -> bdd1' technique@planet.fr
        cat $LOG | mail -s '[ERROR] Synchro bddtest -> bdd1' planetmd@planet.fr
        cat $LOG | mail -s '[ERROR] Synchro bddtest -> bdd1' baz@alterway.fr
fi;@]
Changed lines 74-79 from:
[@tar xvf /path/to/parent/directory/of"dir"/mov.tar@]
to:
[@tar xvf /path/to/parent/directory/of"dir"/mov.tar@]

La taille des process apache
La commande suivante va calculer la totalité de la mémoire utilisé par Apache ainsi que la taille des processus Apache.
[@ps -ylC apache2 | awk '{x += $8;y += 1} END {print "Apache Memory Usage (MB):" x/1024;  print "Average Proccess Size (MB)" x/((y-1)*1024)}'@]
Traduit de http://notes.depad.fr/software/apache/calcule-la-memoire-consomme-par-apache.html
Added lines 55-67:

!!! Mise en prod sélective d'un site
Fort pratique pour afficher un mini-site de maintenance pour un vhost donné, sauf pour une liste d'IPs:[@
# AWH: Redirections AWH
RewriteCond %{REMOTE_HOST} !5.49.182.99
RewriteCond %{REMOTE_HOST} !89.31.151.104


# Redirection vers la maintenance
RewriteRule ^(.*)$ /var/www/maintenance/$1 [C]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /var/www/maintenance/index.php [L]@]
Added lines 49-54:

!!! Mass file editiging
Pour générer les commandes lors d'une migration massive, ici dans le cas d'apache:[@
for i in site1 site2 site3 ... ; do grep -rin  $i /etc/apache2/sites-enabled/  | grep -i servername | awk '{print "vim " $1}' | sed 's/:$//'  | sed -e  's/:/ +/g'  ; done
@]

Added lines 40-45:
!!! Correspondance Device Mapper et Partitions
Plusieurs méthodes:[@
ll /dev/mapper/
dmsetup ls
lvdisplay|awk  '/LV Name/{n=$3} /Block device/{d=$3; sub(".*:","dm-",d); print d,n;}'@]

Changed line 55 from:
[@tar xvf /path/to/parent/directory/of"dir"/mov.tar@]
to:
[@tar xvf /path/to/parent/directory/of"dir"/mov.tar@]
Changed line 3 from:
to:
!!! Import MySQL depuis backups de bases-tables
Added line 10:
!!! Configuration vhost de base
Added line 34:
!!! Récupérer le contenu de less
Added line 40:
!!! Savoir qui tape le plus
Added lines 43-49:


!!! Faire une copie de certains fichiers en conservant leur structure
On fait un find pour faire notre filtre:
[@find ./dir -name "*.mov" | xargs tar cif mov.tar@]
Pour récupérer la selection:
[@tar xvf /path/to/parent/directory/of"dir"/mov.tar@]
June 04, 2013, at 03:23 PM EST by 89.31.149.185 -
Changed lines 36-39 from:
# Puis la commande dans laquelle sortir le contenu: @@tee /tmp/my_precious_file@@
to:
# Puis la commande dans laquelle sortir le contenu: @@tee /tmp/my_precious_file@@

Liste des connexion TCP en cours par ordre :
[@netstat -laptune | awk '{print $5}' | cut -d":" -f1 | sort | uniq -c | sort -g | tail@]
May 07, 2013, at 05:08 PM EST by 89.31.149.185 -
Changed lines 31-36 from:
* On évite la faille de sécurité la plus simple qui consiste à lister les fichiers
to:
* On évite la faille de sécurité la plus simple qui consiste à lister les fichiers

Récupérer le contenu d'un fichier ouvert d'un un less pour le mettre dans un fichier:
# Dans less, taper: @@|@@
# Ensuite: @@$@@
# Puis la commande dans laquelle sortir le contenu: @@tee /tmp/my_precious_file@@
Added lines 9-31:

La conf d'un vhost pour un petit site-oueb:[@
<VirtualHost *:80>
        ServerName      www.jeznet.org
        ServerAlias    jeznet.org

        DocumentRoot    /var/www/jeznet.org/www/

        # Avoid duplicate content
        <IfModule mod_rewrite.c>
                RewriteEngine  on
                RewriteCond    %{HTTP_HOST} !^www.jeznet.org$
                RewriteRule    ^(.*) http://www.jeznet.org$1 [QSA,L,R=301]
        </IfModule>

        <Directory /var/www/jeznet.org/www/>
                Options        -Indexes
                AllowOverride  None
        </Directory>
</VirtualHost>@] Cette config a plusieurs avantages:
* On évite le ''duplicate content'' en servant à la fois www.jeznet.org et jeznet.org
* On évite l'utilisation des fichier maudis .htaccess
* On évite la faille de sécurité la plus simple qui consiste à lister les fichiers
Changed lines 5-6 from:
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@]
to:
for i in $(ls -1 . | sed 's/-.*//' | uniq  | grep -Ev 'proftpd|mysql|information_schema') ; do  bzcat $( ls ${i}-* ) |  mysql -uroot -p<pass> -h10.0.4.52 $i ; echo "=> $i done" ; done@]
Deleted line 8:
Changed line 5 from:
for i in $(ls -1 . | sed 's/-.*//' | uniq) ; do  bzcat $( ls ${i}-* ) |  mysql -uroot -pklegcicMej5 -h10.0.4.52 $i ; echo "=> $i done" ; done@]
to:
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@]
Added lines 1-9:
Les hardcore snippets... Pas besoin d'expliquer, que ce soit magnifique ou dégueu, ça peut toujours servir ;-)


Importer dans mysql des backups sql:[@
for i in $(ls -1 . | sed 's/-.*//' | uniq) ; do  bzcat $( ls ${i}-* ) |  mysql -uroot -pklegcicMej5 -h10.0.4.52 $i ; echo "=> $i done" ; done@]

Sortir la liste d'IP par ordre d'apparence:[@
grep 'phpmyadmin' access.log | awk '{print $1}' | sort -n  | uniq -c | sort -g@]

Page last modified on July 07, 2017, at 07:09 PM EST