Commit ed6f0d3d authored by wbar's avatar wbar
Browse files

initial commit

parents
/public
publish.sh
+++
Categories = [""]
Tags = ["",""]
title = "{{ replace .Name "-" " " | title }}"
slug = "{{ replace .Name "-" " " | title }}"
date = {{ .Date }}
draft = true
+++
Résumé de l'article !
<!--more-->
Début du contenu
baseURL = "http://example.org/"
languageCode = "fr-fr"
DefaultContentLanguage = "fr"
title = "BWog-notes"
[params]
section_on_frontpage = "posts"
pagination_articles = 10
description = "Bloc notes en ligne sur l'administration système Linux et autres sujets liés"
author = "Chagratt"
[permalinks]
posts = "/:year/:title/"
+++
Author = "Chagratt"
Description = ""
Categories = ["",""]
Tags = ["",""]
title = "À propos"
date = 2019-10-02T14:52:09+02:00
draft = false
+++
Ce petit blog me sert de bloc notes en ligne sur l'administration système Linux, en principe.
Mais il pourra y avoir d'autres sujets, plus ou moins liés.
Principalement de l'informatique en tout cas.
Le rythme de publication est totalement aléatoire.
Notez que toutes les images sont cliquables, afin d'avoir la version en taille réelle au besoin.
## Généralités technologiques ##
Ce blog est généré avec [Hugo](https://gohugo.io/)
un générateur de sites statiques en [Go](https://golang.org/).
Les sources de mon thème actuel sont disponibles [ici (pour le CSS)](https://framagit.org/wbar/bwog-notes-v2/tree/master/static/css),
et [là (pour le layout)](https://framagit.org/wbar/bwog-notes-v2/tree/master/layouts).[^1]
Le tout est écrit en Markdown et versionné à l'aide de Git.
[Une version des sources](https://framagit.org/wbar/bwog-notes-v2) est disponible sur mon dépôt Framagit.
## Partage ##
Comme indiqué sur chaque page,
le contenu de ce blog, sauf mention contraire,
est sous licence [Creative Commons BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/).
## Contact ##
Des questions, remarques ou suggestion ?
En discuter par mail est une bonne solution : chagratt point social chez protonmail point com,
même si je risque de mettre du temps à répondre (jusqu'à une semaine parfois).
Vous pouvez également me retrouver sur ces sites :
- [Framagit](https://git.framasoft.org/wbar)
- [Mastodon : Framapiaf](https://framapiaf.org/@chagratt) (J'y suis en principe plus réactif que pour les mails)
- [Pintes et Growls](https://pintes-et-growls.chagratt.site/) : Des rétrospectives de concerts et critiques musicales que j'écris de temps à autre
[^1]: Oui car j'ai bonné un peu comme un sagouin, je l'avoue, j'ai tout foutu dans `layouts` et `static` au lieu de faire un thème séparé.
+++
Author = "Chagratt"
Description = ""
Categories = ["",""]
Tags = ["",""]
title = "En vrac"
date = 2019-10-02T14:52:09+02:00
draft = false
+++
Sur cette page, des liens, des mini astuces glanées au fil du temps, et autres choses trop courtes pour faire un article.
## Rien à voir ##
- [Le motarologue : 10 erreurs à ne pas faire quand on organise une balade à moto](https://lemotarologue.fr/10-erreurs-a-ne-faire-on-organise-balade-a-moto/)
- [Ma Check-list de Festival]({static}/misc/check-list-fest.txt)
## Liens Bash ##
- [Shellscript.sh](https://www.shellscript.sh/) : Des cours, des astuces, ...
- [Shell scripts matter](https://dev.to/thiht/shell-scripts-matter)
- [Pure bash bible](https://github.com/dylanaraps/pure-bash-bible)
- [Bash exit traps](http://redsymbol.net/articles/bash-exit-traps/)
- [Bash "strict" mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/)
- [Collection de ressources Bash](https://www.cyberciti.biz/open-source/learning-bash-scripting-for-beginners/)
- [Du formatage Bash pour le PS1](https://misc.flogisoft.com/bash/tip_colors_and_formatting)
## Question sysadmin pour entretien + réponses ##
- [Test your sysadmin skills](https://github.com/trimstray/test-your-sysadmin-skills)
- [Autres questions pour entretien](https://dev.to/kaydacode/interview-questions-you-should-ask--3dkc)
## Un truc qui m'a sauvé la peau pour bottlepy ##
- [Bottle MVC](https://github.com/salimane/bottle-mvc)
## Bonnes pratiques ansible ##
- [http://redhat.slides.com/jparrill/ansible-202/fullscreen?token=1hUEEPF4#/](http://redhat.slides.com/jparrill/ansible-202/fullscreen?token=1hUEEPF4#/)
## Libs pythons qui valent le coup ##
- [Tableaux ascii](https://pypi.org/project/terminaltables/)
- [Couleur dans le terminal](https://pypi.org/project/colorclass/)
__Attention__, pour des variables faut utiliser le formatage à l'ancienne : `"{autored}%s{/autored}" % (ma_var)`
## Outils microsoft ##
- [sdelete](https://docs.microsoft.com/en-us/sysinternals/downloads/sdelete)
## Cacher curseur bash ##
Want to hide the cursor in your #bash script and unhide it when the script exists?
{{< highlight shell >}}
function unhide_cursor() {
printf '\e[?25h'
}
trap unhide_cursor EXIT
# Hide the cursor
printf '\e[?25l'
{{< / highlight >}}
## Un prompt Bash qui se voit bien ##
[Explications sur Le hollandais volant](https://lehollandaisvolant.net/?d=2017/02/13/16/36/20-linux-rendre-le-terminal-plus-lisible)
La variable :
{{< highlight shell >}}
PS1="\n\[\e[1;48;5;31m\] \u \[\e[48;5;233m\] \h \[\e[48;5;240m\] \w \[\e[0m\]\$(__git_ps1) \$(__cmd_err_code)\n» "
{{< / highlight >}}
Et puis la fonction :
{{< highlight shell >}}
__cmd_err_code(){
local ERRCODE=$?
if [[ ${ERRCODE} -ne 0 ]]; then
echo -e " \e[1;31m${ERRCODE}\e[00m"
else
echo ""
fi
}
{{< / highlight >}}
Ce que ça peut donner :
- Exemple 1 :
{{< image src="bash_prompt_ex01.png" caption="Premier exemple de ce que ça peut donner" >}}
- Exemple 2 :
{{< image src="bash_prompt_ex02.png" caption="Second exemple de ce que ça peut donner" >}}
## Thème Putty façon Zenburn ##
À mettre dans un fichier .reg :
{{< highlight registry >}}
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\Default%20Settings]
"Colour0"="220,220,204"
"Colour1"="220,220,204"
"Colour2"="58,58,58"
"Colour3"="58,58,58"
"Colour4"="0,13,24"
"Colour5"="143,175,159"
"Colour6"="0,0,0"
"Colour7"="85,85,85"
"Colour8"="215,135,135"
"Colour9"="215,135,135"
"Colour10"="160,192,160"
"Colour11"="160,192,160"
"Colour12"="255,255,135"
"Colour13"="255,255,135"
"Colour14"="101,121,142"
"Colour15"="101,121,142"
"Colour16"="241,140,150"
"Colour17"="241,140,150"
"Colour18"="140,208,211"
"Colour19"="140,208,211"
"Colour20"="255,255,255"
"Colour21"="255,255,255"
{{< / highlight >}}
+++
Categories = [""]
Tags = ["apache-httpd"]
title = "Reverse proxy Apache et alias qui se chevauchent : il faut une exclusion"
date = "2014-08-05"
draft = false
+++
En utilisant le drapeau `!` en second argument de la directive `ProxyPass` il est possible d'exclure un chemin.
<!--more-->
Petite subtilité Apache du jour.
Soit un _virtualhost_ classique avec ce contenu :
{{< highlight apacheconf >}}
Alias /data/db/products/ /opt/app/public/pictures/
ProxyPass /uneRoute http://localhost:1234/uneRoute
ProxyPassReverse /uneRoute http://localhost:1234/uneRoute
ProxyPass /unService http://localhost:5678/uneService
ProxyPassReverse /unService http://localhost:5678/uneService
ProxyPass / http://localhost:8000/frontEnd
ProxyPassReverse / http://localhost:8000/frontEnd
{{< / highlight >}}
Dans ce cas précis, les images qui seront demandées à partir du chemin `/data/db/products/` ne seront pas trouvées
car elles vont être traitées dans la dernière règle de mandataire inverse.
Pour éviter cela, il faut l'exclure en ajoutant (avant la règle fautive) une autre règle de mandataire, avec le drapeau d'exclusion `!` :
{{< highlight apacheconf >}}
ProxyPass /data/db/products !
{{< / highlight >}}
+++
Categories = [""]
Tags = ["crunchbang","bunsenlabs"]
title = "Crunchbang Linux : première installation et utilisation"
date = "2014-11-07"
lastmod = "2018-11-07"
draft = false
+++
Rapide retour d'un passage de LinuxMint à Crunchbang sur un vieux PC : plus léger et plus rapide.
_MàJ_ : Projet arrêté. Tournez-vous plutôt vers [BunsenLabs](https://www.bunsenlabs.org/).
<!--more-->
Crunchbang n'est plus (depuis un bon moment d'ailleurs).
La distribution [BunsenLabs](https://www.bunsenlabs.org/) est la continuation communautaire de ce projet.
Je l'ai testée et approuvée l'an dernier pour monter rapidement un PC de dépannage sur une veille bécane.
Vous pouvez vous tourner vers cette distribution sans soucis.
---
Il y a quelques mois j'avais décidé de dépoussiérer un vieux PC portable (eeePC 1001) pour en faire une petite station musicale.
Le tout branché sur des enceintes et contrôlé à partir de mon PC principal avec un partage de bureau et un serveur SSH.
Au début j'y avais installé LinuxMint en version XFCE pour essayer de minimiser les ressources consommées, et le temps d'installation / maintenance.
Cela dit, la bête restait lente, aussi bien au démarrage qu'au temps de réponse ; elle est tout de même largement dépassée aujourd'hui.
Mon utilisation n'était pourtant pas énorme :
- Firefox (et le plugin flash) pour aller sur les sites de streaming musicaux
- mocp via le SSH pour écouter ma bibliothèque musicale
- rarement serveur de fichiers
Récemment quelqu'un m'a parlé de la distribution Crunchbang.
Le site promet une distribution rapide, simple, basée sur Debian et adaptée aux PC récents comme plus vieux.
Ayant enfin eu un peu de temps (et la motivation), j'ai décidé d'essayer.
En repartant de zéro pour avoir un point de comparaison, plutôt que simplement installer et configurer Openbox.
Je suis déjà satisfait et voici les points positifs en vrac :
- Boot et accès au bureau plus rapides qu'avant (Openbox)
- Le script de post-install lancé à la première utilisation (installation d'un serveur SSH est faite à ce point si désiré)
De base, le contenu logiciel est un peu plus allégé, mais le script cité précédemment permet d'ajouter si désiré quelques ajouts au minimum vital.
Pour compléter mon besoin : un serveur Vino, le lecteur en console mocp et voilà.
## En conclusion
Par rapport à LinuxMint, Crunchbang est plus légère.
Plus épurée aussi.
Elle semble bien plus adaptée à mon besoin que LinuxMint.
Je la conseillerai volontiers à ceux qui veulent une distribution de bureau minimale installée en un claquement de doigts.
Pour une première distribution cela dit, elle me semble moins adaptée que Mint.
## Liens
~~[Site officiel de Crunchbang](#)~~ : Site maintenant inopérant, lien désactivé.
[Site officiel de BunsenLabs](https://www.bunsenlabs.org/)
+++
Categories = [""]
Tags = ["nagios"]
title = "Supprimer l'historique Nagios"
date = "2014-04-17"
draft = false
+++
Voici un moyen simple de remettre à zéro l'historique des états.
<!--more-->
Sous Debian il faut aller dans `/var/lib/nagios3/` et supprimer le fichier `retention.dat`.
*Attention* à ne pas oublier de couper le service avant.
Le chemin peut être différent sur les autres distributions, mais le nom de fichier ne devrait pas changer.
En cas de doute, consulter le fichier de configuration de Nagios qui indique l'emplacement.
+++
Categories = [""]
Tags = ["apache-httpd","selinux"]
title = "Reverse proxy Apache et services locaux"
date = "2014-07-24"
draft = false
+++
Avec Apache comme reverse proxy, les redirections entre back-ends (pourtant locaux) échouaient.
<!--more-->
En ce moment je travaille sur une application web assez simple au niveau architecture :
un front-end en AngularJS et quelques services en Node.js à aller interroger.
Un serveur web se charge de faire la liaison entre les deux parties.
Dans un cas bien précis, le front-end appelle un des back-ends, qui en interroge un second, en passant par la case reverse proxy.
Le reste du temps le front appelle un service qui répond directement.
Jusqu'ici rien de révolutionnaire.
Là où ça devient intéressant, c'est à la migration de Nginx vers Apache (httpd pour les intimes de RHEL et dérivées).
Le cas particulier ne fonctionnait plus, et aucun indice quant à la cause du problème ne semblait vouloir se manifester.
Seule une erreur HTTP 503 remontée par le premier service m'était donnée sans plus d'explications.
Premier réflexe, aller lire le journal d'erreurs d'Apache.
Ce dernier indiquait laconiquement :
{{< highlight text >}}
[date] [error] (13)Permission denied: proxy: HTTP: attempt to connect to 127.0.0.1:5000 (ip du client) failed
[date] [error] ap_proxy_connect_backend disabling worker for (ip du client)
{{< / highlight >}}
Je n'ai pas prêté attention à la seconde ligne au début (erreur ...) et j'ai perdu du temps à re-vérifier plusieurs fois la configuration apache.
Ainsi que le bon fonctionnement du service ne répondant pas.
Après pas mal d'essais et après une dernière tentative (et un log d'erreurs remis à zéro pour faciliter la lecture), je me suis intéressé à l'énigmatique seconde ligne.
Quelques recherches rapides m'ont mené [à un vieux post de Server Fault](http://serverfault.com/questions/329355/issues-with-proxypass-and-proxypassreverse-when-proxying-to-localhost-and-a-diff)
relatant les mêmes problèmes.
SELinux bloquait en fait les requêtes du processus `httpd` dans le cadre d'un script l'appelant pour interroger un autre service web.
Il a ensuite _juste_ fallu autoriser le bon port dans la politique de sécurité :
{{< highlight shell >}}
semanage port -a -p tcp -t http_port_t 5000
{{< / highlight >}}
Et voilà !
Pas mal de temps perdu sur ça, mais des connaissances gagnées.
Je vous renvoie au manuel de `semanage` pour plus d'informations et à [cette procédure d'installation](http://www.cyberciti.biz/faq/redhat-install-semanage-selinux-command-rpm/)
si la commande n'est pas présente sur votre serveur.
+++
Categories = [""]
Tags = ["vim"]
title = "Coloration syntaxique de fichiers non reconnus par VIM"
date = "2014-08-03"
draft = false
+++
Si VIM ne reconnait pas correctement un fichier, il est possible de forcer le type de langage à utiliser avec `autocmd`.
<!--more-->
Il peut arriver que VIM reconnaisse mal (voire pas du tout) certains types de fichiers.
J'avais eu le soucis il y a longtemps avec des fichiers ProC (extension `.pc`) que je voulais traiter comme des sources de C.
Plus récemment je l'avais avec des fichiers Markdown terminés en `.md`, mais pas en `.mkdn`.
Pour le résoudre de manière ponctuelle, il est possible d'entrer la commande `:set syntax=LANGAGE`,
mais il faut la retaper à chaque ouverture / changement d'onglet.
Une meilleure solution pour les fichiers que l'on traite régulièrement est d'ajouter cette ligne à la fin du `.vimrc` :
{{< highlight vim >}}
" Dans mon cas pour le markdown
autocmd BufRead,BufNewFile *.md set filetype=markdown
{{< / highlight >}}
Cette astuce nécessite d'avoir activé `autocommands` et d'avoir une version complète de VIM.
Les utilisateurs d'une distribution Linux qui installe `vim-tiny` sauront de quoi je parle.
## Source
[Stack Overflow : Enable syntax highlighting for various filetypes in vim](https://stackoverflow.com/questions/5437471/enable-syntax-highlighting-for-various-filetypes-in-vim)
+++
Categories = [""]
Tags = ["vim"]
title = "Aide mémoire VIM"
date = "2014-04-17"
draft = false
+++
Une (asez longue en fait) liste de commandes VIM pour les retrouver facilement.
<!--more-->
Les commandes sont à effectuer en mode interactif (appuyer sur échap pour y revenir).
Autre pré-requis, avoir désinstallé vim-tiny (si ce dernier est installé par défaut sur votre OS) et installé vim.
## Configurer
Le fichier de base est /etc/vim/vimrc.
Il faut le copier dans son home et le renommer en .virmc pour que les modifs soient locale à l'utilisateur qui va utiliser l'éditeur.
Éditer ce fichier et voir les options intéressantes.
Un exemple de fichier de config se trouve sur mon dépôt git nommé `dotfiles`.
## Sauver / quitter
`:w` pour sauver.
`:q` pour quitter.
`:wq` pour sauver et quitter.
Pour forcer l'action, ajouter un `!` en fin de commande. Cela supprime les éventuelles alertes.
Et sinon `:wa :xa :qa` pour respectivement tout sauver, tout sauver et quitter, tout quitter sans sauver.
## Déplacements
`0` pour aller en début de ligne.
`$` pour la fin de ligne.
`w` pour avancer mot par mot.
`b` pour reculer mot par mot.
`G` simple pour sauter à la dernière ligne.
`<num ligne>G` pour sauter à une ligne précise.
`:<num ligne>` fonctionne également.
`gg` pour sauter à la première ligne.
`Ctrl + f` Défiler d'une page vers le bas.
`Ctrl + b` Défiler d'une page vers le haut.
`Ctrl + d` Défiler d'une demi-page vers le bas.
`Ctrl + u` Défiler d'une demi-page vers le haut.
`H` Placer le curseur en haut de la page.
`L` Placer le curseur en bas de la page.
`M` Placer le curseur au milieu de la page.
`%` en étant sur un caractère ouvrant (ex, `{`, `(`, `[`) pour sauter au caractère fermant associé.
Fonctionne aussi depuis un caractère fermant vers un caractère ouvrant.
## Nouvelles lignes
Utiliser ces commandes fait automatiquement passer en mode insertion.
`o` Insérer une nouvelle ligne sous la ligne courante.
`O` Insérer une nouvelle ligne au dessus de la ligne courante.
## Mode visuel
Le mode visuel permet de sélectionner du texte (en déplaçant le curseur) pour ensuite le copier, le couper et le coller ensuite.
`v` pour passer en mode visuel.
`V` pour sélectionner toute une ligne d'un coup. Déplacer pour sélectionner plusieurs lignes.
`Ctrl + v` pour sélectionner en mode colonne. Descendre ou monter pour travailler sur plusieurs lignes en même temps.
`y` pour copier la sélection.
`c` pour couper la sélection.
`p` pour coller après le curseur.
`P` pour coller avant le curseur.
### Cas particulier pour le mode colonne
Après avoir sélectionné un bloc, `I` fait passer en mode insertion.
Le texte tapé n'apparaitra que sur la première ligne.
Un double appui sur la touche `échap` l'ajoutera aux autres lignes du bloc précédemment sélectionné.
_Remarque_ : L'indentation des lignes du bloc doit être cohérente.
## Split d'écran
`:sp` pour séparer horizontalement. Il est possible de spécifier un fichier.
`:vsp` pour séparer verticalement. Il est possible de spécifier un fichier.
`Ctrl + w/W` puis une touche parmi `W`, `w`, `h`, `j`, `k`, `l` sauter d'un split à l'autre.
Et pour redimensionner : `Ctrl + w` puis `-` ou `+` pour retailler un split horizontal.
`Ctrl + w` puis `<` ou `>` pour retailler un split vertical.
## Onglets
Remarque : Nécessite VIM 7.0 ou plus.
Il est possible de lancer plusieurs onglets au lancement de VIM via l'option `-p` avant de donner plusieurs noms de fichiers.
`:tabnew <fichier>` ouvrir un nouvel onglet contenant le fichier spécifié.
_Remarque_ : omettre le nom du fichier ouvre un nouvel onglet vide.
`gt` aller à l'onglet suivant.
`gT` aller à l'onglet précédent.
##
## Complétion de mots
Une fois n'est pas coutume, pour ces deux commandes, il faut être en mode insertion.
`control + n` rechercher les mots déjà écrits après le curseur.
`control + p` rechercher les mots déjà écrits avant le curseur.
Si VIM fait plusieurs propositions, refaire la commande jusqu'à obtenir le bon mot.
## Couper/Copier, coller et effacer
`dd` pour couper une ligne entière. Il est possible d’indiquer le nombre de lignes. Exemple `8dd` coupera 8 lignes.
`dw` pour couper un mot. Comme pour dd on peut spécifier le nombre de mots. Si le curseur est au milieu d’un mot, la fin du mot sera effacée.
`d0` ou `d$` pour supprimer le début ou la fin de ligne à partir du curseur (voir déplacements).
`yy` pour copier une ligne entière. Les équivalents `yw, y0 et y$` existent aussi (voir `dd`).
`p` pour coller le contenu du buffer (se mettre à la fin de la ligne, sinon gare aux surprises).
Il est possible de coller plusieurs fois le contenu.
Exemple `5p` collera 5 fois les caractères sauvés dans le buffer.
`x` pour supprimer une lettre.
`<nombre>x` pour supprimer plusieurs lettres.
## Remplacer
`r<nouveau caractère>` après avoir placé le curseur sur le caractère à remplacer. Le caractère surligné sera remplacé.
`R` pour passer en mode de remplacement. Taper directement le mot à remplacer, appuyer sur échap pour quitter le mode de remplacement.
`C` pour supprimer à partir du curseur jusqu'à la fin de la ligne. Passe ensuite automatiquement en mode insertion.
`ce` pour supprimer du curseur jusqu'à la fin du mot. Passe ensuite en mode insertion.
`ci<sep>` supprime tout le contenu du bloc délimité par le séparateur sep et passe en mode insertion. Fonctionne sur tout type de caractère ouvrant/fermant. Parenthèses, crochets, accolades, guillemets, etc...
`:%s/unMot/unAtreMot/gc` substitution du premier mot par le second de manière globale avec demande de confirmation pour chaque occurrence.
## Rechercher
`/<mot>` pour rechercher vers le bas du fichier.
`?<mot>` pour rechercher vers le haut.
`*` pour rechercher toutes les occurrences du caractère ou mot sur lequel le curseur est actuellement placé.
`n` pour aller au résultat suivant.
`N` pour le résultat précédent.
`:nohl` ou `:nohlsearch` pour arrêter de mettre les résultats en surbrillance.
## Explorer des fichiers
VIM possède un explorateur de fichiers intégré.
Le moyen le plus simple de l'invoquer est d'utiliser la commande `:Explore`.
Ceci va ouvrir l'explorateur à la place du fichier courant s'il n'a pas été modifié.
Pour de déplacer il suffit d'utiliser les flèches haut ou bas et d'appuyer sur la touche entrée pour commencer à éditer un fichier.
Une vue d'explorateur est comme un fichier en lecture seule.
La commande habituelle de fermeture s'applique ici également.
Il est également possible d'ouvrir VIM directement en vue explorateur en indiquant un dossier en argument lors du lancement.
### Variantes disponibles
`:Lexplore` ouvrira une vue à gauche.
Les fichiers sélectionnés pour l'édition s'ouvriront dans la vue d'origine.
Si le fichier a été fermé, une nouvelle vue à droite sera créée.
`:Texplore` ouvre un nouvel onglet pour afficher l'explorateur.
`:Vexplore` et `:Sexplore` ouvriront l'explorateur dans respectivement une vue verticale et horizontale.
### Commandes disponibles dans l'explorateur
`i` bascule entre les différents types d'affichage disponibles.
`o` ouvre une vue en séparation horizontale avec le fichier sélectionné.
`t` ouvre un nouvel onglet avec le fichier sélectionné.
`v` ouvre une vue en séparation verticale avec le fichier sélectionné.
### Informations affichées