Quelques astuces diverses
C’est les vacances (du moins pour moi), et même si je me concentre sur ma recherche d’appartement, je n’oublie pas le blog qui me manquait effectivement un peu, et pour lequel j’arrive à trouver de l’inspiration. Enfin presque, aujourd’hui, c’est petit pense-bête pêle-mêle (beaucoup de circonflexes là-dedans) d’astuces diverses dans différents domaines, évidemment presque toujours de la ligne de commande.
Un générateur de mot de passe alphanumérique
Les astuces vont souvent prendre la forme d’un alias, et voici donc le premier, un petit générateur de mot de passe aléatoire, par exemple pour la connexion à une base de données :
1 |
alias passgen="strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 12 | tr -d '\n'; echo" |
On l’appelle ensuite sans paramètre, et le résultat est immédiat :
1 2 |
[seboss666@Seboss666LTP ~]$ passgen jytiXt3jkMJjC |
Vous pouvez changer la taille dans la partie head -n 12 (donc ici douze caractères).
Un dig moins bavare
dig est un outil très pratique quand vous devez manipuler assez souvent des noms de domaines. Mais il est très verbeux par défaut, et l’on a pas forcément besoin au quotidien de toutes les infos. Voici donc comment le rendre plus discret :
1 |
alias dig="dig +noall +answer" |
Si vous avez malgré tout besoin de la réponse complète, il suffit de rajouter +all à la fin (exemple avant/après) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
[seboss666@Seboss666LTP ~]$ dig blog.seboss666.info A blog.seboss666.info. 82335 IN A 91.121.61.180 [seboss666@Seboss666LTP ~]$ dig blog.seboss666.info A +all ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53262 ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;blog.seboss666.info. IN A ;; ANSWER SECTION: blog.seboss666.info. 82294 IN A 91.121.61.180 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: sam aoû 20 19:52:35 CEST 2016 ;; MSG SIZE rcvd: 64 |
Vous comprenez pourquoi je lui « coupe la chique » 🙂
Son propre dossier de scripts
C’est une astuce que j’ai pu présenter dans d’autres articles, mais je la remets ici au cas où. Plutôt que de coller ses scripts persos dans /bin ou /usr/local/bin, vous pouvez vous créer un dossier ~/scripts et le faire prendre en compte par Bash à votre connexion. Pour ça, ajoutez à votre fichier .bashrc :
1 |
export PATH=$PATH:/home/seboss666/scripts |
Remplacez par votre dossier à vous hein 🙂
Vérifier que tous les ServerName/Alias ont bien une adresse IP
Petite astuce pour Apache, si vous voulez vérifier que tous les domaines configurés pointent bien dessus (par exemple pour faire le ménage), vous pouvez utiliser la routine suivante, en vous plaçant dans votre dossier sites-enabled (si vous êtes sous Debian, cherchez ailleurs sinon) :
1 |
for i in $(grep -Eri "Server(N|A)" * |grep -Ev "(admin|tpl|\#)" |cut -d\: -f2 |awk '{for (i=2; i<NF; i++) printf $i " "; print $NF}'); do echo "$i : $(dig $i A +short)"; done |
Vous devriez obtenir une ligne par domaine présent et leur adresse IP dans la foulée si elle existe. Cela permet notamment de faire le ménage, par exemple si vous avez une quarantaine d’Alias dans le même vhost comme j’ai déjà pu le rencontrer. Et vous devriez pouvoir l’adapter assez rapidement pour Nginx.
Empêcher la désactivation du proxy Apache pour une minute
Un comportement chiant d’Apache 2.4, dans un contexte de proxy (que ce soit au travers de ProxyPass ou de SetHandler, pour la prise en charge de PHP-FPM par exemple), si la connexion au backend est perdue, Apache la désactive pour 60 secondes, et ce même si vous réparez très vite, ce qui vous oblige à également redémarrer Apache. Pénible, mais « contournable » avec la directive retry=0 (exemple) :
1 2 3 4 5 6 7 8 9 10 |
ProxyPass / http://127.0.0.1:9000/ retry=0 ProxyPassReverse / http://127.0.0.1:9000/ ########### <Proxy *> ProxySet retry=0 </Proxy> <FilesMatch \.php$> SetHandler "proxy:fcgi://127.0.0.1:9000" </FilesMatch> |
Lister tous les utilisateurs MySQL et leurs droits
Petit script à se mettre dans un coin, adapter le chemin du fichier de configuration (–defaults-file) qui contient le pass root :
1 2 3 4 5 6 7 |
#!/bin/bash source /etc/profile /usr/bin/mysql --defaults-file=/root/my-client.cnf --silent --skip-column-names --execute "select concat('\'',User,'\'@\'',Host,'\'') as User from mysql.user" | sort | \ while read u do echo "-- $u"; /usr/bin/mysql --defaults-file=/root/my-client.cnf --silent --skip-column-names --execute "show grants for $u" | sed 's/$/;/' done |
Copier/renommer plus rapidement un fichier
La syntaxe habituelle pour copier/déplacer un fichier, c’est <commande> <origine> <destination>, exemple :
1 |
cp toto.txt toto2.txt |
qui crée un fichier toto2.txt identique à toto.txt. Pour aller plus vite, vous pouvez utiliser la syntaxe suivante :
1 |
cp toto{,2}.txt |
Et c’est pareil pour mv.
Il y en aura peut-être d’autres, il m’arrive d’en utiliser d’autres mais je ne les ai pas toujours en tête, et ne je prend pas forcément toujours le temps de les noter.
Bonjour, quelques remarques diverses sur les astuces 🙂 Pour générer un mot de passe avec moitié moins de processus à lancer (oui, c’est inutile en pratique, c’est juste pour donner une alternative plus simple à adapter si on veut rajouter des caractères spéciaux) : « echo $(< /dev/urandom tr -dc _A-Za-z0-9- | head -c12)" Pour dig, "host" est aussi une alternative beaucoup moins bavarde pour juste résoudre un nom (mais dig est pratique pour débugger des problèmes de DNS). Et "getent host seboss666.info" permet de passer par le système de résolution de noms normal de l'OS (et en général de tenir… Lire la suite »
Pour le fichier debian.cnf, tu as tout à fait raison, il contient le mot de passe du compte debian-sys-maint, effectivement uniquement accessible par l’utilisateur root (pour des raisons évidentes de sécurité). C’est pratique d’ailleurs si on oublie le mot de passe dudit compte (y’a une alternative pour récupérer un mot de passe root, mais c’est beaucoup moins rapide–ça ferait un article sympa d’ailleurs).
pour générer des mots de passe, je recommande pwgen, configurable et surtout fait pour ça 😉
Juste pour ajouter deux trucs à ces astuces, il y a l’option + short de dig qui ne donne que la réponse à la question et un outil super pratique pour lister les utilisateurs et leurs droits sous MySQL : pt-show-grants (il est packagé dans le percona-toolkit avec plein d’autres outils vachement bien)