walk-hoary

Terminal Windows

Il existe une multitude de gestionnaire de terminal sous Windows, j’utilisais jusqu’à présent ConEmu. Il me permettait de rassembler des terminaux de type Command Windows, Cygwin, powershell et Debian en WSL, Mono. Il fallait cependant le configurer pour qu’il découvre les différents terminaux de ma machine.

J’ai essayé Terminal Windows, il me semble très prometteur puisque j’ai pas eu grand chose à faire pour y être à l’aise.

Où le trouver ?

Il est en version preview. Vous le trouverez dans le Windows Store sous le nom de Windows Terminal.

Il est disponible aussi via chocolate si vous l’utilisez (l’APT/Ansible sous Windows) via un choco install microsoft-windows-terminal

Que propose t-il ?

  • Un terminal multi-onglets en couleur, réactif et rapide à se lancer
  • Un système de copier-coller commun aux containers WSL
  • La proposition de terminaux : Command, PowerShell, Wsl, AzureCloud shell…
  • Un code source ouvert et une une communauté sous github.

La configuration se fait avec un bête fichier JSON (Attention, il faut que votre système sache ouvrir les fichiers JSON, sinon ça ne fait rien quand on clique sur « Settings »).

Vous utilisez Oh My Zsh ?

J’utilise Oh-my-zsh sous WSL (il existe aussi Oh-My-Posh pour PowerShell) qui rend la console plus agréable.

Pour installer zsh, il faut faut déjà git et zsh, puis rentrez cette commande dans votre shell :

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Installez la police Delugia.Nerd.Font.ttf de chez adam7/delugia-code.

Remplacez le thème par défaut par agnoster avec la commande :

sed -i 's/ZSH_THEME="robbyrussell"/ZSH_THEME="agnoster"/g' ~/.zshrc

Puis ajouter ceci dans la la section « profiles » -> « defaults » :

"fontFace" : "Delugia Nerd Font"

Relancer un shell.

Liseuse non surveillée

Pour cette fin d’année (2019), j’ai voulu me prendre une liseuse que je puisse garder avec moi lors de moment divagantes. J’ai cherché un modèle promouvant le libre, et surtout non rattaché à des compte cloud dans tout les sens. Bref je voulais une liseuse, pas un tablette connectée déguisée.

Je suis d’abord tombé sur Booken qui me semble être le plus rapprochant aujourd’hui (Français en plus). Malheureusement un autre critère qu’est le style de tablette m’a fait penché vers Kobo. En effet bien que provenant de rakuten, il existe pour cette dernière, la Clara HD à 100€ chez darty, un hack pour ne pas avoir de compte et être maitre du système (un accès root via telnet).

Image associée
Kobo Clara HD (sortie en 2017 – oui les liseuse n’évoluent pas vraiment)

Bypass de la connexion

A l’allumage, la liseuse vous propose de vous connecter. Dites non. La liseuse passera alors en disque USB. Il vous suffira de lancer sur ce disque monté :

sqlite3 .kobo/KoboReader.sqlite
INSERT INTO user(UserID,UserKey) VALUES('1','');
CTRL+D pour quitter

La tablette va alors basculer en anonymous au bout de quelques secondes. Vous pouvez à présent l’utiliser comme liseuse non connecter en plaçant vos epub sur le disque monté.

Gestion de vos ebooks

Je vous conseille d’utiliser le logiciel libre calibre pour gérer vos livres avec la tablette. Il s’agit d’une référence libre pour gérer vos e-books (propriétaires ou non) sur vos liseuses (propriétaires ou non) à travers la connexion USB.

Résultat de recherche d'images pour "calibre"

Ansible avec AWX

AWX est un frontend pour piloter Ansible. Il s’agit de la version opensource de Tower qui lui, est stabilisé avec mise à disposition d’un support.

A propos de cet article

Je vous donne ici les instructions pour installer Ansible et AWX sur une debian buster 64 bits.

Pour information, j’ai utilisé un container LXC (Proxmox 6). L’utilisation de docker dans un container « non-privilégié » est possible en ajoutant les lignes suivantes dans la config /etc/pve/lxc/XXXXX.conf :

unprivileged: 1
lxc.apparmor.profile: unconfined
lxc.cgroup.devices.allow: a
lxc.cap.drop:

Toutes les commandes si dessous se font en root.

Ansible

Prérequis

Installons le nécessaire pour ajouter une clé et l’usage de https dans les dépôts.

apt update
apt dist-upgrade
apt -y install gnupg2 apt-transport-https

Installation

Ajoutons le dépôt de chez launchpad et installons ansible. La version installée devrait correspondre sensible à la 2.8.6 (au 2019-10-25)

echo "deb http://ppa.launchpad.net/ansible/ansible/ubuntu bionic main" | tee /etc/apt/sources.list.d/ansible.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
apt update
apt install -y ansible
ansible --version

AWX

Pre-requis

On ajoute le dépot et on install docker-ce. La version installée devrait correspondre sensible à la 19.03.4 (au 2019-10-25)

echo "deb [arch=amd64] https://download.docker.com/linux/debian buster stable" | tee /etc/apt/sources.list.d/docker-ce.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7EA0A9C3F273FCD8
apt update
apt install -y docker-ce
docker --version

Je désactive l’IPV6 afin d’être sûr que AWX écoutera sur l’interface IPV4 (et je ne m’en sert pas entre mes VM).

cat <<EOF > /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.default.autoconf = 0
EOF
sysctl -p

Installons un générateur de mot de passe et docker-compose (Ce sera celui des dépôt debian officiels)

apt -y git pwgen docker-compose

AWX

Récupérons AWX

cd ~
git clone --depth 50 https://github.com/ansible/awx.git

Configurons quelques valeurs

cd awx/installer
sed -i "s|docker_compose_dir=.*$|docker_compose_dir=/var/lib/awx|g" inventory
sed -i "s|^#project_data_dir=.*$|project_data_dir=/var/awx_projects|g" inventory
sed -i "s|^postgres_data_dir=.*$|postgres_data_dir=/var/pgdocker|g" inventory
sed -i "s|^secret_key=.*$|secret_key=$(pwgen -N 1 -s 30)|g" inventory
sed -i "s|^pg_admin_password=.*$|pg_admin_password=$(pwgen -N 1 -s 30)|g" inventory
sed -i "s|^pg_password=.*$|pg_password=$(pwgen -N 1 -s 30)|g" inventory
sed -i "s|^rabbitmq_password=.*$|rabbitmq_password=$(pwgen -N 1 -s 30)|g" inventory

Lonçons la création des containers AWX

ansible-playbook -i inventory install.yml

Note : Pour ma part, j’ai du relancer cette commande 2 fois car j’ai eu un timeout, je n’ai pas noté si il venais de mon système trop lent ou de ma connexion internet.

Comptez 24Go pour AWX, il va occuper pas mal d’espace docker (/var/lib/docker) pour ses 5 VM :

root@ansible:/var/lib/awx# docker-compose ps
     Name                   Command               State                               Ports
 awx_memcached   docker-entrypoint.sh memcached   Up      11211/tcp
 awx_postgres    docker-entrypoint.sh postgres    Up      5432/tcp
 awx_rabbitmq    docker-entrypoint.sh /bin/ …   Up      15671/tcp, 15672/tcp, 25672/tcp, 4369/tcp, 5671/tcp, 5672/tcp
 awx_task        /tini -- /bin/sh -c /usr/b …   Up      8052/tcp
 awx_web         /tini -- /bin/sh -c /usr/b …   Up      0.0.0.0:80->8052/tcp

Voilà, à partir de là, vous pouvez vous y connecter avec votre navigateur sur le port 80 et les identifiants à changer de suite : admin / password

Pour les mises à jour

Les mises à de Ansible se feront par le gestionnaire de paquet Debian.

Pour AWX, il faudra lancer ces commandes :

cd /var/lib/awx
docker-compose stop
docker-compose pull
docker-compose up --force-recreate -d

Créer et monter un volume qcow2

Pour quoi faire ?
Cela peut être utile si vous avez un système de fichier NTFS dans lequel vous souhaitez sauvegarder des données sans perdre les droits UNIX qui vont avec, pour le chiffrer, le transférer, monter une VM…
Création de l’image (ici 1.1G, format qcow2)
qemu-img create -f qcow2 datas.qcow2 1100M
Création du device et attachement du fichier
modprobe nbd max_part=8
qemu-nbd –connect=/dev/nbd0 datas.qcow2
Création de la partition et formatage ext4
cfdisk /dev/nbd0
mkfs.ext4 /dev/nbd0p1
Montage du la partition
mount /dev/nbd0p1 datas

Utiliser NFS dans openvz/proxmox

L’usage de NFS est possible dans openvz (je l’utilise avec proxmox 3.3 via wheezy). Je souhaite vous donner quelques prérequis à connaitre :

Monter un serveur NFS sous un conteneur VZ demande :

  • Avoir le module nfs chargé sur l’hyperviseur
  • Avoir la feature nfs activée dans le conteneur
  • Avoir partagé un répertoire NFS. exemple pour moi : /mnt/datas      10.9.1.0/24(ro,sync,no_subtree_check,no_root_squash)

Monter un partage NFS depuis un conteneur VZ demande :

  • Avoir le module nfs chargé sur l’hyperviseur
  • Avoir la feature nfs activée dans le conteneur
  • Monter le partage via le fichier mount de proxmox et non depuis le fstab du conteneur (si vous utilisez le fstab, votre VM ne demarrera pas, si vous faites un mount depuis le conteneur, vous aurez « mount.nfs: No such device »). Ci dessous un exemple de mon /etc/vz/conf/116.mount que j’ai crée (le point de montage doit exister sinon le conteneur ne démarre pas) :

#!/bin/bash
source /etc/vz/vz.conf
source ${VE_CONFFILE}
mount -t nfs 10.9.1.222:/mnt/datas ${VE_ROOT}/mnt/remote-datas

 

Reverse proxy et X-Real-IP

Pas mal d’articles en font déjà mention. Mais une partie n’apparait pas souvent, c’est le fait de journaliser l’ip originale et non celle du reverse !

Editez le nouveau fichier /etc/nginx/conf.d/proxy.conf et insérez (où 10.9.100.33 est mon reverse) :

set_real_ip_from   10.9.100.33;
real_ip_header     X-Real-IP;

Redémarrez nginx.

Si vous utilisez apache, alors installez et activez le module rpaf ! et ajoutez l’ip de vos reverse dans la configuration du nouveau module apache.

Raid logiciel visible sur Windows & Linux

Il est possible de créer un raid logiciel qui soit utilisable sous Microsoft Windows et GNU/Linux. J’utilise cela pour agréger 2 disques de 500Go en RAID0 pour avoir un espace de 1To plus réactif.

Depuis Windows dans un premier temps :

  • Convertir les disques en disques dynamiques
  • Créer votre volume raid logiciel depuis Windows (Sous windows le RAID0 ou stripping est appelé « aggrégat »)
  • Attribuez une lettre et placez y quelques données pour pouvoir vérifier plus plus tard

Depuis Linux enfin :

  • Installez les paquets libldm et mdadm qui serviront pour l’accès aux disques dynamique et au raid, il sera probablement nécessaire de rebooter sur le nouveau noyau (je n’ai pas bien vu)
  • Créez le volume avec la commande : mdadm –build /dev/md0 –chunk=64 –level=0 –raid-devices=2 /dev/sdd1 /dev/sde1
    • Adaptez à votre cas (level=0 pour raid0, –raid-devices pour le nombre de disques)
    • Utilisez bien la partition et non le disque
  • Et voilà, votre partition raid est accessible via le périphérique /dev/md0 que vous pouvez monter par mount /dev/md0 /mnt/raid
  • Vous pouvez l’ajouter à votre fstab :
    • UUID=5C24F8E224F8BFD6 /mnt/raidNTFS ntfs-3g defaults 0 0
    • Vous pouvez connaître les UUID de vos disques avec le répertoire /dev/disk/by-uuid/

 

Découper et rassembler un fichier en morceau

Parfois en déplacement, je dispose d’une connexion 1Mbps voir moins. Pour télécharger un fichier plus rapidement je me sers de plusieurs connexion internet pour aller plus vite. (mon téléphone, celui d’un amis…)

Exemple pour un fichier de 900Mo, je vais le découper en fichiers de 100Mo et télécharger 3 morceaux sur la connexion internet de mon hôte, 3 autres morceaux avec mon téléphone, et 3 autres morceaux avec un autre abonnement.

Pourquoi 3 par devices ? Car cela donne 100Mo ce qui permet de télécharger plus rapidement le ou les derniers morceaux sur la connexion la plus rapide.

Découper un fichier

split -b 100m monfichier.zip

Cela va générer plusieurs fichiers monfichier.xaa mofichier.xab …

Télécharger

Sur le device 1 :

wget -c http://qth.fr/monfichier.xaa http://qth.fr/monfichier.xab http://qth.fr/monfichier.xac

L’option -c permet de rédémarrer un téléchargement là où il en était, vous pouvez donc interrompre avec CTRL-C à votre guise. (ou suspendre/resume CTRL-Z … $fg)

 

Rassembler un fichier

Mettez tous vos fichiers ensembles

cat monfichier.*  > monfichier.zip

 

Et voilà !

Script bash mono-instance

Voici un petit script bash à inclure dans votre script si vous souhaitez qu’il ne soit lancé qu’une seule fois. Je l’ai fait à La Rache dans le but qu’un rsync ne se lance pas plusieurs fois.

Vous pouvez l’inclure par un simple :

. /usr/local/bin/run_once.sh

 

/usr/local/bin/run_once.sh

#!/bin/sh
SCRIPTNAME=`basename $0`
export LOCKSYNC="/var/run/$SCRIPTNAME.lock"
PID=$$
echo "["`date +"%Y/%m/%d %H:%M:%S"`"] Demarrage du script $0"
if [ -f "$LOCKSYNC" ]
then
echo "Fichier lock "$LOCKSYNC" present. Deja en cours ?"
PIDLOCK=`cat $LOCKSYNC`
if [ -f /proc/$PIDLOCK/exe ]
then
echo "Le process semble etre toujours en cours. Lancement de $SCRIPTNAME impossible."
exit
else
echo "Le process ne semble plus etre en cours, Lancement de $SCRIPTNAME"
rm $LOCKSYNC
fi
fi
echo "Creation du lock "$LOCKSYNC
echo $PID > $LOCKSYNC

Pour le fonctionnement, il va créer un fichier lock correspondant au nom du script qui indiquera si le programme est déjà lancé ou non. Si le lock est présent, le script va également vérifier que le processus est toujours actif.

Je m’en sers dans la machine proxy transparent qui sert de dépôt locaux lors de nos install party. Cela est particulièrement utile car nous sommes plusieurs admins sur la machine en question.

Et joyeuses fêtes !

À tous ces plateforme anti-spam à la con comme messagelabs.com

Aujourd’hui, je reçois un email d’un utilisateur qui n’arrive pas contacter un client par email. Effectivement, le serveur, ici messagelabs.com refuse de communiquer avec notre serveur d’envoi.

Soit ! Il arrive que des serveur soit blacklistés… Je consulte donc la page d’aide communiqué par le MTA distant. J’obtient un email et envoie les infos habituels. Et là c’est le drame ! On me dis simplement : Vous ne pouvons pas traiter votre demande car vous n’êtes pas client.

Okay… Alors on va demander au client de contacter lui même sa plateforme antispam… Réponse : Vous n’êtes pas le contact autorisés à nous demander quoi que ce soit.

Mais bordel, symantec ! Ca vous amuse de blacklister des serveurs sans explication ?? Oui oui symantec, car messagelabs.com est leur plateforme anti-spam.

Outre le fait que l’on ne peut pas joindre l’adresse email précisé dans le message d’erreur (pas de formulaire), ces derniers se foutent complément de la gueule du monde en ayant un support aussi mauvais.

Symantec, vous n’avez pas compris le principe d’internet, je n’achèterais jamais de produit chez vous !

Je n'aime pas les boîtes noires.