Quelques astuces diverses, cinquième

closeCet article a été publié il y a 7 ans 20 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

Encore une flopée de bricoles diverses à réutiliser au besoin. Manifestement ça plaît ces articles, et la source est pratiquement intarissable (il y a beaucoup de Vim aujourd’hui). Pourquoi s’en priver dès lors ?

Un ramdisk pour MySQL

Histoire de soulager un peu le disque d’un client qui fait de la merde avec sa base de données (requêtes SELECT DISTINCT qui créent systématiquement des tables temporaires sur disque), j’ai déplacé le dossier temporaire de MySQL en RAM, avec une ligne dans fstab :

Attention, il faut couper MySQL, monter le dossier, et relancer.

Cloner une base PostgreSQL

Plutôt que faire un dump, créer la base et réimporter le dump, sous Postgres on peut dire d’utiliser une base comme modèle :

Et paf, 10 minutes de gagnées sur un client.

Installer la libdvdcss sur Ubuntu

J’ai découvert lors du dernier PSL auquel j’ai participé (je suis un rythme d’un mois sur deux…) que la libdvdcss, composant indispensable à la lecture des DVD du commerce (protection anticopie gnagnagna), n’était plus installé ni installable facilement sous Ubuntu. Voici donc les manips à faire :

  • Sur Ubuntu 12.04 à 15.04 : Terminal, se rendre dans le dossier /usr/share/doc/libdvdread4, et exécuter le script install-css.sh
  • Sur Ubuntu 15.04 et suivants : installer le paquet libdvd-pkg, et lancer dpkg-reconfigure libdvd-pkg en suivant les instructions à l’écran.

Un bon retour en arrière pour l’utilisation par les débutants, une fois de plus.

Ouvrir directement un fichier de conf depuis un autre fichier dans vim

(Merci Kooshal) Quand on édite un fichier de configuration avec vim et qu’on tombe sur un include vers un autre fichier de configuration on peut directement ouvrir celui-ci, par exemple :

On déplace le curseur sur le fichier /etc/php/php.ini, ensuite on appuie sur g puis f, et paf, ça fait des Chocapic. Pour retourner au fichier original, Ctrl+o.

Ajouter la liste des paramètres externes dans un script bash perso

Quand vous utilisez des alias, c’est cool, il interprète directement les paramètres supplémentaires occasionnels que vous voulez lui passer (exemple avec mes alias SSH quand je veux ouvrir un tunnel en plus pour faire du SOCKS : sshvox -D 9999, sshvox étant un alias assez dégueulasse au demeurant). Quand on utilise un script pour faire la même chose (genre celui que j’utilise pour lancer un playbook Ansible), on peut se retourner vers $@ :

Évidemment, c’est du rapide/crade, en théorie il faudrait vérifier un peu les arguments. Dans un vieux script pour un serveur Call of Duty, j’ai utilisé $*, qui semble fonctionner aussi, la différence semble tenir dans le fait que $@ échappe certains caractères spéciaux, à vous de voir donc.

Vim : se rendre directement à une ligne

Plusieurs méthodes rapides plutôt que de compter : soit vim <fichier> +<n° ligne>, soit dans l’éditeur taper le numéro de ligne puis G (majuscule). Sinon, pour s’éviter de compter, on a aussi l’option ‘set nu’ pour afficher les numéros de ligne 😉

Afficher la collation par défaut d’une base

Parce que ça n’apparaît pas dans un show create database <base> :

Obtenir un shell de manière détournée avec Vim

Sur le serveur d’un client, le compte qu’on nous a attribué a le droit d’utiliser sudo, mais pas de faire un sudo su pour s’éviter justement de passer son temps à taper le sésame. Petit détournement de vim, qu’on ouvre avec sudo (sans fichier), on tape ensuite :shell, et hop, un bash avec les droits root 😛

Lancer une commande watch au travers d’SSH

Je souhaitais surveiller le remplissage d’un dossier mais avec une seule commande. Le problème, c’est qu’au départ je tombais sur une erreur « Error opening terminal: unknown. » particulièrement pas explicite. La solution réside dans un simple -t :

Afficher la n-ième ligne d’un fichier

Quand vous avez un boulet qui vous dit :

sed vous permet d’éviter l’enchaînement de head |tail -n1, et c’est plus rapide à taper en plus :

Afficher quelques infos rapides sur des domaines

J’ai pris une liste d’alias de Virtualhosts à vérifier, avant de les migrer sur une autre machine. Petite routine pour voir l’état, à savoir l’adresse IP, le code de retour HTTP, l’URL si c’est redirigé :

Supprimer le début d’une arborescence d’une archive tar

Si vous avez ce genre d’arborescence dans une archive tar :

Mais que vous voulez juste récupérer le dossier repository, il y a une option bien pratique de tar :

Et hop, la partie var/lib/docker/lbp/publish/ est supprimé à l’extraction.

Extraire directement une archive à travers SSH

Dans le même esprit de la bidouille juste au dessus, j’avais pas assez de place donc l’archive a été extraite directement depuis un autre serveur :

Accélérer les git status

En changeant de serveur et de version de git, j’ai une différence de x7 sur un git status dans le temps de traitement. Problème résolu en ajoutant le paramètre suivant au dépot :

Avant, 35s, après, 0.8s. Tranquille.

5 Commentaires
Le plus ancien
Le plus récent
Commentaires en ligne
Afficher tous les commentaires
Exagone313
31/03/2017 18:48

1) On peut ajouter des alias dans la config de ssh ~/.ssh/config, par exemple : # empêche la déconnexion par inactivité ServerAliveInterval 60 # alias pour ssh foo (fonction aussi avec -D pour socks), chaque option peut être utilisée séparément, bien sûr dans HostName il faut spécifier le vrai host Host foo User bar HostName example.con IdentifyFile ~/.ssh/id_example.con 2) Pour accéder à une ligne dans vim il suffit de taper :42 (deux-point suivi du numéro de ligne). 3) Pour sudo, essaye sudo -i Note : sur Neovim, c’est :terminal ou :te (chez moi, :shell ne fonctionne pas sur vim, version… Lire la suite »

Exagone313
31/03/2017 18:49
Répondre à  Exagone313

Vive l’indentation perdue … il faut indenter les lignes au-dessous de Host foo.

David_5.1
David_5.1
01/04/2017 19:16

Pour les histoires de récupérer un shell root via vim en sudo, c’est juste bon pour les cas où le sysadmin n’a pas bien fait son boulot :-). À savoir, si le but est de permettre d’éditer des fichiers en root, il est possible de configurer sudoedit qui permet d’utiliser n’importe quel éditeur pour modifier un fichier et gère le remplacement en root (ou autre) sans vraiment donner de droits pour éditer le fichier. Pour les histoires de SSH, comme Exagone313 l’a suggéré : « man ssh_config » 😀 Et pour le tar à travers le réseau, on peut aussi faire la… Lire la suite »

Karim
Karim
13/06/2017 22:01

Les options -s ou -i de sudo répondent également à ce besoin de shell root.