Un monde d'octets

Aller au contenu | Aller au menu | Aller à la recherche

Sous-catégories

dimanche, septembre 29 2019

Alléger les logs de messages inutiles

L'utilisation de docker et d'autres outil conduit parfois à une pollution de /var/log/syslog, en particulier avec certains messagesqui n'ont aucune incidence.

Il suffit d'éditer la cont 50-default.conf et de mettre, en premières règles les files suivants :

:msg, contains, "error on subcontainer 'ia_addr' insert (-1)" STOP
:msg, contains, "failed to retrieve runc version" STOP

Dans cette exemple, l'erreur de docker sur la "runc version" et celle de snmp sur "ia_addr" seront ignorées.

samedi, septembre 21 2019

Qpsnr est mort, longue vie à ffmpeg !

qpsnr est un programme que appréciais beaucoup pour tester la qualité d'encodages vidéos, mais le problème c'est que celui-ci n'évolue plus, ne compile plus sans être patché, et même, ne fonctionne plus si bien que ca sur une distrib récente.

mais ffmpeg est capable de faire un controle SSIM.

et au détour de recherche sur internet, comme toujours, on trouve une lib python gérant tout ca de tout ca :

sudo -H pip3 install ffmpeg_quality_metrics
ffmpeg_quality_metrics h265_compressed.mp4 reference.mp4 -of csv | tee > result.csv

Il reste à exploiter les données

mercredi, août 28 2019

Monitoring avc sysdig

Sysdig est un outil de diagnostique système très intéressant, dont le but premier et le suivi des appels systèmes. Mais sa force vient de ses options et modules de diagnostiques qui en font un outil de monitoring et d'analyse très intéressant,

Installation

apt install sysdig

Suivi des appels systèmes

sysdig

(on a l'impression de voire une sorte de strace de l'ensemble des process en cours ...)

Statistiques des usages de net

Par process : sysdig -c topprocs_net
Par sockets : sysdig -c topconns

Lister les "ciseaux" disponibles

sysdig -cl

Avoir des informations sur un ciseau

sysdig -i "ciseau"

samedi, juillet 13 2019

Dash, gsettings, confort d'utilisation

Encore une chose que je cherche parce que je nel'utilisé qu'une fois tous les dix ans...

Régler la taille de la dashboard de gnome à une taille moins imposante pour pouvoir avoir plus de place !!!

gsettings set org.gnome.shell.extensions.dash-to-dock dash-max-icon-size 28

mercredi, juillet 10 2019

Lister les fenêtres X11 ouvertes

un vieux classique que je n'avais pas utilisé depuis longtemps :

xwininfo -tree -root

A partir de la, vous avez une liste des fenêtres ouvertes et leurs propriétés. Cela peut permettre de savoir quel process tourne (via le nom de la fenêtre) ou d'avoir un identifiant pour la tuer avec :

xkill -id {ressource}

lundi, juillet 8 2019

Renommer une session screen

Pour avoir une meilleur lisibilité quand on a plusieurs process tournant sur screen, donner un nom de session est vraiment indispensable.

Pour ce, lors du lancement de screen :

screen -S "session name"

Si vous ne l'avez pas fait à l'initialisation, vous pouvez quand meme changer le nom de session à posteriori :

screen -S "session_id" -X sessionname "session name"

Les identifiants de sessions sont visibles via un :

screen -list

comme il se doit ;)

samedi, juin 15 2019

EFI sous linux

Pour éditer les entrées de boot et ajouter/supprimer/modifier :

efibootmgr

Tout cela demandera beaucoup d'essai pour voir ce qui est faisable ou pas et surtout ... comment ;)

samedi, mai 25 2019

Linux, interrompre hibernation, suspend et autres ...

sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

Attention : dans certains cas (certains modèles de portable), le fait de masquer ces objet fait que les logs se remplissent par système-logind, qui au final fini par consommer 100% cpu quand le log devient énorme.

Une autre solution est de changer /etc/systemd/logind.conf pour mettre les valeurs suivantes :

HandleSuspendKey=ignore
HandleHibernateKey=ignore
HandleLidSwitch=ignore
LidSwitchIgnoreInhibited=yes

mercredi, mai 15 2019

Strace cookbook

Suivre les appels systèmes de la commande ls

strace ls

Limiter au accès fichiers de type open

strace -f -e open ls 2>&1

Nettoyer un peu l'affichage

strace -f -e open ls 2>&1 | grep ^open\( | grep “[[:digit:]]\+$” | cut -d\” -f2

Bien sur sur "ls" c'est "théorique".

Remplacez ls par votre commande pour voir ce qui se passe, ou mieux, par "-p pid" pour voir ce que fricote un process en cours d'exécution.

Limiter (ou étendre) l'usage des traceurs système.

le fichier "/proc/sys/kernel/yama/ptrace_scope" contient un simple octet dont la signification est la suivante :

  • kernel.yama.ptrace_scope = 0: all processes can be debugged, as long as they have same uid. This is the classical way of how ptracing worked.
  • kernel.yama.ptrace_scope = 1: only a parent process can be debugged.
  • kernel.yama.ptrace_scope = 2: Only admin can use ptrace, as it required CAP_SYS_PTRACE capability.
  • kernel.yama.ptrace_scope = 3: No processes may be traced with ptrace. Once set, a reboot is needed to enable ptracing again.


Pour permettre à vos utilisateurs de tracer leurs propres process, vous pouvez donc faire :

echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope

mercredi, mai 8 2019

Bacula 101

quelques commandes utiles sous bconsole :

Exécuter un job manuellement

run

Lancer une restauration

restore

attention, il faudra beaucoup d'info pour cela, comme selectionner le jeu a restaurer puis se deplacer dans l'arborescence de restauration des fichiers, et finir par "quit" pour annuler, ou "done" pour entamer la restauration.

la restauration se fera la ou le job utilisé pour les restauration (cf la config de votre directeur) l'indique.

Contrôler votre installation

status

et suivre les directions ;)

Et bien sur, l'aide

help

En gros rien d'autre à faire que lire ce qu'affiche la console. Cependant je vais voir si il existe une vrai gui pour bacula ;)

dimanche, mars 31 2019

DKMS

Pour qu'un driver soit "dkmsisé" il faut faire ceci :

Creation d'un fichier DKSM.conf

Nous allons prendre l'exemple du driver rtl8821cu-541.

Copier le driver dans /usr/src/{DRV_NAME}-{DRV_VERSION}, ici : /usr/src/rtl8821CU-5.4.1

Création d'un fichier dkms.conf dans l'arborescence du driver, contenant :

PACKAGE_NAME="@PKGBASE@"
PACKAGE_VERSION="@PKGVER@"
BUILT_MODULE_NAME="8821cu"
PROCS_NUM=$(nproc)
[ $PROCS_NUM -gt 16 ] && PROCS_NUM=16
MAKE="'make' -j$PROCS_NUM KVER=${kernelver} 
KSRC=/lib/modules/${kernelver}/build"
CLEAN="'make' clean"
DEST_MODULE_LOCATION="/kernel/drivers/net/wireless"
AUTOINSTALL="yes"
REMAKE_INITRD=no 

Notez le module_name qui sera le nom du module installé dans votre système.

Ajout du driver, build et installation

sudo dkms add -m {DRV_NAME} -v {DRV_VERSION}
sudo dkms build -m {DRV_NAME} -v {DRV_VERSION}
sudo dkms install -m {DRV_NAME} -v {DRV_VERSION} --force

Suppression du driver

sudo dkms remove {DRV_NAME}/{DRV_VERSION} --all

Lister les drivers dkms-isés

dkms status

NB : une doc bien plus complète existe sur Lea-Linux

samedi, mars 16 2019

Le retour de l'infame

Et voila que suite à la mise a jour de la distribtion, et donc un upgrade de libx265, je procède à la recompilation de ffmpeg.

Compilation : ko.

Nettoyage des options, configure : ok, compilation ko ! Bon je vous fait pas toute ma session d'une heure à chercher ... au final mon binaire est compilé mais lors de l'encodage j'ai le retour de l'infamie :

[Parsed_yadif_0 @ 0x55b5285d6f80] [IMGUTILS @ 0x7fffd56f6ab0] Picture size 0x0 is invalid
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #0:0

Ca ne se passe que si je tente d'ajouter un texte en overlay.

Et ca, je l'avais déjà rencontré et corrigé mais absolument pas noté et maintenant oublié ! bref, cette fois, je re-planche dessuis et je noterai ici la solution !

Edit du 16/3

De toute évidence, ce que j'avais rencontré la première fois, n'était pas ce qui posait problème ici. Ici, il m'a fallu revenir à ffmpeg 3.3.9 pour que ca refonctionne. Régression ou changement de structure de filtres ? Je ne sais pas et il faudra que je réessaye quand j'y penserai !

jeudi, mars 14 2019

FFmpeg + NvEnc sur Ubuntu 19.10

Prérequris

Installer les dépendances nécessaires à la compilation de ffmpeg et récupérer le source

apt-get build-dep ffmpeg
apt-get source ffmpeg

apt install yasm
apt -y install build-essential autoconf automake cmake libtool git checkinstall nasm yasm libass-dev libfreetype6-dev libsdl2-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo wget zlib1g-dev libchromaprint-dev frei0r-plugins-dev gnutls-dev ladspa-sdk libcaca-dev libcdio-paranoia-dev libcodec2-dev libfontconfig1-dev libfreetype6-dev libfribidi-dev libgme-dev libgsm1-dev libjack-dev libmodplug-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libopenjp2-7-dev libopenmpt-dev libopus-dev libpulse-dev librsvg2-dev librubberband-dev librtmp-dev libshine-dev libsmbclient-dev libsnappy-dev libsoxr-dev libspeex-dev libssh-dev libtesseract-dev libtheora-dev libtwolame-dev libv4l-dev libvo-amrwbenc-dev libvorbis-dev libvpx-dev libwavpack-dev libwebp-dev libx264-dev libx265-dev libxvidcore-dev libxml2-dev libzmq3-dev libzvbi-dev liblilv-dev libmysofa-dev libopenal-dev opencl-dev libbluray-dev libfdk-aac-dev libbs2b-dev

SDK Nvidia

Downloader le sdk de nvidia a l'url https://developer.nvidia.com/nvidia-video-codec-sdk

unzip nvenc_5.0.1_sdk.zip
cd nvenc_5.0.1_sdk/Samples/common/inc
cp *.h /usr/local/include

Compiler ffmpeg

cd ~/ffmpeg

./configure --prefix=/opt/ffmpegnv --extra-version=1build1 --build-suffix=-ffmpegnv --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --enable-shared --disable-stripping --enable-avresample --enable-avisynth --enable-frei0r --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-openal --enable-libopus --enable-libpulse --enable-librtmp --enable-libshine --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libxvid --enable-libzvbi --enable-opengl --enable-libzmq --enable-libssh --enable-libsoxr --enable-libx264 --enable-libx265 --enable-nonfree --enable-nvenc

make
make install

Vous pouvez maintenant utiliser ffmpeg avec nvenc comme suit :

/opt/ffmpegnv/bin/ffmpeg -i source -vcodec nvenc_h264 -b:v 2000k destination.mkv
/opt/ffmpegnv/bin/ffmpeg -i source -vcodec nvenc_hevc -b:v 2000k destination.mkv

Vous pouvez même enregistrer votre bureau :

/opt/ffmpegnv/bin/ffmpeg -video_size 1920x1080 -framerate 15 -f x11grab -i :0.0+0,0 -vcodec nvenc_hevc -b:v 10000k screen_record.mp4

Le binaire résultant ne peut être packagé sans enfreindre la licence nvidia. Vous pouvez cependant l'utiliser librement sur votre ordinateur, la licence le permet.

Complément

Votre kernel doit disposer du module nvidia, et les librairies Cuda doivent être installées dans le même numéro de version que le driver kernel (nvidia-352 à la date de ce post)

apt-get install nvidia-352 libcuda1-352

Votre carte NVidia doit supporter Cuda ET NvEnc. De plus, le codage HEVC hardware n'est disponible que sur les cartes NVidia de génération Maxwell II (GM2XX).

samedi, février 23 2019

Portable, lumière, et ligne de commande

Ce truc peut vous permettre d'automatiquement baisser la luminosité, si vous le voulez en cas (d'absence) d'évènement extérieur :

echo 0 | sudo tee /sys/class/backlight/your_video_card_identifier/brightness

0 coupera totalement la luminosité. Les valeurs supportées vont de 0 à X, X étant indiqué dans le fichier /sys/class/backlight/.../max_brightness

dimanche, septembre 30 2018

tri avancé : ignorer les n premieres lignes

oublie de la première ligne :

awk 'NR<2{print $0;next}{print $0| "sort"}'

ainsi nous affichons l'entête du fichier et trions les lignes suivantes !

NR<3 conservera deux lignes d'entête, NR<4 conservera 3 lignes, ...

jeudi, septembre 20 2018

Nginx petits rappels

Tester sa configuration

sudo nginx -t

Relancer nginx :

kill --HUP $( cat /path/to/nginx/logs/nginx.pid )

autres signaux :

  • TERM,INT : quick shutdown
  • QUIT : graceful shutdown
  • USR1 : reopne log files
  • USR2 ; upgrade executablde on the fly
  • WINCH : gracefully stop the worker

mercredi, août 22 2018

A chaque système son gestionnaire de paquets

Que contient le package

rpm -qlp /path/to/file.rpm

Que fourni le package installé ?

rpm -ql package
dnf repoquery -q -l package
dpkg -L package
equery files package
qlist package

Qui fournit le binaire ?

rpm -qf /bin/ps
yum whatprovides /bin/ps
dnf provides /bin/ps
dpkg -S /bin/ps
zypper what-provides /bin/ps

Pour note :

rpm, yum dnf : redhat, centos et dérivées
dpkg : debian
query, qlist : gentoo
zypper : opensuse

Replication de bdd hétérogènes avec Percona

Suivez le lien du site Percona

samedi, août 18 2018

LVM2 crash et restauration

S vous avez foutu le bordel dans une configuration de groupe LVM2 ou détruit accidentellement un volume group sour linux, vous pouvez le restorer rapidement en faisant ;

vgcfgrestore vol_name -f /etc/lvm/archive/your-name.vg

Regardez dans /etc/lvm/{backup,archive} pour plus d'info. Et comme toujours, n'oubliez pas les sauvegardes...

jeudi, août 2 2018

Petites vérifications d'usage

nmap -sS -sC 127.0.0.1 -oA scan-tcp-std
nmap -sS --script ssl-heartbleed 127.0.0.1
sslscan 127.0.0.1

mercredi, juillet 25 2018

Creation (en cli) d'une VM pour Kvm

Quand vous voulez des machines virtuelles pour faire des tests, passer par toutes les fenêtres de configuration de votre vm est une plaie.

En une ligne de commande (ou un script que vous modifiez à loisir :

virt-install \
--virt-type=qemu \
--name=coro2 \
--ram=1024 \
--vcpus=1 \
--os-variant=generic \
--virt-type=qemu \
--hvm \
--cdrom=/opt/iso/ubuntu-16.04.3-server-amd64.iso \
--network=bridge=br0,model=virtio \
--graphics vnc \
--disk path=/var/lib/libvirt/images/coro2.qcow2,size=10,bus=virtio,format=qcow2

Nous regarderons aussi comment faire ca avec vagrant pour notre culture !

vendredi, juin 22 2018

Se logger sur un Netscaler

Netscaler = debian avec un shell wrapper

Cosmetics

set cli mode -color ON
set cli prompt %u@%h-%T

Informations

show version
show hostname
show interface -summary
show node
show ip
show feature
show ns mode

Tout d'un coup

show info

Executer des commandes systeme

shell top

Obtenir un vrai shell

shell

Extrait de cette documentation qui contient beaucoup plus que ce petit nécessaire.

mercredi, juin 13 2018

IpTables et Nat 1:1

Pour du NAT 1:1, il faut utilsier -J NETMAP

iptables -t nat -A PREROUTING -d 10.11.0.0/16 -j NETMAP --to 192.168.0.0/16
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j NETMAP --to 10.11.0.0/16

InetDoc

dimanche, juin 3 2018

Limiter le débit d'un serveur web

Activer le module ratelimit :

a2enmod ratelimit

puis ajoutez vos limitations par dossier dans la conf d'apache :

    <Location "/free_to_download/">
       SetOutputFilter RATE_LIMIT
       SetEnv rate-limit 65
       SetEnv rate-initial-burst 75
     </Location>

vendredi, juin 1 2018

extraction temps reel des username d'une connection http relayée par haproxy

Mnemotechnique bete :

tail -f /var/log/hapee-1.5/lb-access-20180601.log | grep /Basic| sed 's,\(.*{[^{]*\)/Basic \([^}]*\)\(}.*\),\1£\2£\3,' | awk -v FS='£' '{system("echo " $2 "| base64 -d"); printf "\n";} '

vendredi, mai 18 2018

Travaux sur cobbler

Construire l'image docker :

git clone https://github.com/sigtom/docker-cobblerc6
cd docker-cobblerc6
docker-compose build
docker run -it --name cobbler sigtom/docker-cobblerc6

Lancer les services :

service dnsmasq start
service httpd start
service cobbler start

[root@c33d6f6c8173 /]# cobbler
usage
=====
cobbler <distro|profile|system|repo|image|mgmtclass|package|file> ... 
        [add|edit|copy|getks*|list|remove|rename|report] [options|--help]
cobbler <aclsetup|buildiso|import|list|replicate|report|reposync|sync|validateks|version|signature|get-loaders|hardlink> [options|--help]

Notre serveur cobbler répond. Il faut maintenant importer notre première distribution.

dimanche, mai 13 2018

Realtekeries wifi

Ubuntu 18.04, nouveau kernel, et zou, a la poubelle les drivers Realtek ...

Pour réinstaller :

git clone -b extended --single-branch https://github.com/lwfinger/rtlwifi_new.git
cd rtlwifi_new
make
make install

A l'installation du driver, si votre wifi est faible, sélectionnez une autre antenne. Pour cela, exécutez la commande suivante, puis rebootez :

/bin/sh -c 'echo "options rtl8723de ant_sel=2" >> /etc/modprobe.d/rtl8723de.conf'

Une fois rebooté vous pouvez admirer le résultat, soit avec l'indicateur dans la barre de tache, soit avec la commande :

nmcli device wifi list

jeudi, mai 10 2018

Ubuntu 18.04 et drivers propriétaires

Lister les devices et les drivers recommandés :

ubuntu-drivers devices

== /sys/devices/pci0000:00/0000:00:03.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001401sv000010DEsd0000116Fbc03sc00i00
vendor   : NVIDIA Corporation
model    : GM206 [GeForce GTX 960]
driver   : nvidia-driver-390 - distro non-free recommended
driver   : xserver-xorg-video-nouveau - distro free builtin


== cpu-microcode.py ==
driver   : intel-microcode - distro free

Installation automatique :

sudo ubuntu-drivers autoinstall

jeudi, avril 26 2018

Openvpn sur le port 443 / Partage de connexion avec apache

Openvpn identifie sans problème ce qui est a destination de lui et peut forwarder le reste des flux a un sous systeme (apache par exemple). Pour cela, paramètres votre apache pour que les connexion ssl soient sur un autre port :

#Listen 443
Listen 4343

Puis modifiez votre configuration vpn comme suit :

port 443
port-share 127.0.0.1 4343
proto tcp

Et voila, votre openvpn tourne sur un port banalisé que les fournisseurs d'accès internet ne filtrent généralement pas !

jeudi, avril 12 2018

Réparer les bases DB9 de openldap

Une base Berkeley DB peut être corrompue. Vérifier l'état de slapd en démarrant en mode DEBUG

slapd -d -1 -u ldap -g ldap -f /etc/openldap/slapd.conf
[...]
slapd startup: initiated.
bdb_db_open: dc=my-domain,dc=com
bdb_db_open: dbenv_open(/var/lib/ldap)
bdb_db_open: dc=your-domain,dc=tld
bdb_db_open: dbenv_open(/var/lib/iowaxsldap-hmc)

Arrêter le processus slapd

killall -9 slapd

la base en défaut semble se trouver dans /var/lib/iowaxsldap-hmc

su - ldap
cd /var/lib/iowaxsldap-hmc
db_recover -v

Rédmarrer slapd en mode debug pour vérifier

slapd -d -1 -u ldap -g ldap -f /etc/openldap/slapd.conf

slapd startup: initiated.
bdb_db_open: dc=my-domain,dc=com
bdb_db_open: dbenv_open(/var/lib/ldap)
[...]
slapd starting

Redémarrer normalement slapd

jeudi, avril 5 2018

raw2part

petit script pour prendre une image de disque au format raw et en extraire les partitions afin de les monter en loopback :

for f in $*
do
  sfdisk -l $f | awk -v img="$1" -v start=9999 '{if (/Périphérique/) start=NR;
                                                                           ; if (NR>start) printf ("dd if=%s of=%s skip=%d count=%d\n",img,$1,$2,$4) }'
done

lundi, mars 26 2018

Installation de qpsnr sur ubunutu 17.10

apt install build-essential libavformat57 libavcodec57 libavformat-dev libavcodec-dev
wget http://qpsnr.youlink.org/data/qpsnr_0.2.5.tar.bz2
tar xvf qpsnr_0.2.5.tar.bz2
sed -i 's/PIX_FMT_/AV_PIX_FMT_/g' src/qav.cpp
sed -i 's/avcodec_alloc_frame/av_frame_alloc/g' src/qav.cpp
make

vendredi, mars 23 2018

Configuration d'openvpn en mode bridge (tap) pour compatibilité avec windows !

mode server
local 0.0.0.0
port 1194
dev tap
proto tcp

ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/server.crt
key /etc/openvpn/server/server.key
dh /etc/openvpn/server/dh2048.pem

# Ip de l'interface tap pour le routage de sortie
ifconfig 192.168.30.1 255.255.255.0
server-bridge 192.168.30.1 255.255.255.0 192.168.30.100 192.168.30.200

# Config par client (un fichier par cn de certificat)
client-config-dir /etc/openvpn/client

cipher AES-256-CBC
comp-lzo
persist-key
persist-tun
keepalive 10 180
down-pre
max-clients 10
log-append /var/log/openvpn.log
verb 4

plugin /usr/lib/x86_64-linux-gnu/openvpn/plugins/openvpn-plugin-auth-pam.so login

Exemple de configuration a passer pour un client :

client
dev tap
remote vpn.mon-domaine.tld. 1194 udp
route remote_host 255.255.255.255 net_gateway

resolv-retry infinite
nobind
route-delay 4
verb 3
comp-lzo

<ca>
-BEGIN CERTIFICATE-
...
-END CERTIFICATE-
</ca>

<cert>
-BEGIN CERTIFICATE-
...
-END CERTIFICATE-
</cert>

<key>
-BEGIN PRIVATE KEY-
...
-END PRIVATE KEY-
</key>

Exemple de configuration de client : /etc/openvpn/client/bob@domain.com

ifconfig-push 192.168.90.9 192.168.90.1
push "route 172.18.0.0 255.255.0.0"
push "route 192.168.1.0 255.255.255.0"
push "route 192.168.2.0 255.255.255.0"

Le fait de fixer l'ip du client avec la configuration par client permet ensuite d'affiner ses droits avec iptables, puisque l'ip est connue à l'avance.

mercredi, mars 21 2018

Rmplacer les noms de device par les UUID dans /etc/fstab

cp /etc/fstab /etc/fstab.old
blkid | grep UUID| sed 's,\(.*\): UUID="\(.*\)" TYPE.*,s;\1;UUID=\2;,' | grep ";" | sed -i -f - /etc/fstab

mardi, mars 20 2018

Extraire une archive de mise a jour firmware de HP pour execution manuelle !

sh CP*.scexe --unpack=.

une fois le paquet extrait, vous pouvez charger l'environnement, et lancer la mise à jour de firmware

source CPINIT
./hpsetup

dimanche, mars 18 2018

Script Massrename V2

Ajout : %%%
  • gestion d'options de choix de type et de filtrage
  • réécriture du awk de cacul de longueur et d'affichage pour fusionner en monopasse.

#!/bin/bash

DRY=0

function help {
  echo `basename $0` " [-NfdG:]"
  echo " -N ; dry-run" echo " -f : Files Only"
  echo " -d : Directories Only"
  echo " -G [pattern] : fikter result" }

while getopts "fdhg:N" OPTION vi $file
do
  case $OPTION in
    N) DRY=1; ;;
    f) sopts='-type f'; ;;
    d) sopts='-type d'; ;;
    g) sfilter=$OPTARG; ;;
    h) help; ;;
  esac
done

file=/tmp/massrename$$
find . -maxdepth 1 $sopts | grep -e "$sfilter" | sed 's,\./,,' | \
awk '{l=length($0); a[$0]=1; if (l>len) len=l;}END{for (i in a) printf("%-" len "s -> %s \n",i,i)}' > $file

vi $file

sed -i 's,^ *,,;s, *$,,;s, *-> *,;,' $file
awk -v FS=';'  -v dry=$DRY \
  '{if ($1!=$2) {
     if (!dry) system ("mv -vi \"" $1 "\" \"" $2 "\"");
     if (dry) print ("mv -vi \"" $1 "\" \"" $2 "\"");}}' $file

\rm -f $file



Voila, cette version deux est tout de même bien plus satifsaisante !

vendredi, mars 16 2018

Booter une usb key Ubuntu sous Kvm

Warning : Doc en cours de rédaction ... les plâtres sont pas secs

sudo kvm -hdb /dev/sdb -boot d -cdrom ubuntu-16.04.4-server-amd64.iso -m 512m

Le -m 512 est imoprtant, sans quoi le "live cd" échouera !

Pour des distribs comme centos, ca peut nécessiter encore plus de mémoire !

mercredi, mars 7 2018

Calculer la taille des bases de données mysql

SELECT table_schema AS "Database", SUM(data_length + index_length) / 1024 / 1024 AS "Size (MB)" FROM information_schema.TABLES GROUP BY table_schema;

vendredi, février 16 2018

Pamamétrage d'ILO depuis linux

Pour cela il faut les ipmitools

Trouver le device ILO

for i in `seq 1 14`; do ipmitool lan print $i 2>/dev/null | grep -q ^Set && echo Channel $i; done

Lire la configuration

ipmitool lan print 2

Configurer une IP statique

ipmitool lan set 2 ipsrc static
ipmitool lan set 2 ipaddr 192.168.42.36
ipmitool lan set 2 netmask 255.255.255.0
ipmitool lan set 2 defgw ipaddr 192.168.42.1
ipmitool mc reset cold

Une autre façon de procéder est d'utiliser hponcfg

Dumper la conf ILO

hponcfg -a -w ilo.xml

Charger une configuration ILO

hponcfg -f ilo.xml

Le fichier xml aura été préalablement modifié

mardi, février 13 2018

Surveillance de l'alimentation secteur d'un portable sous ubuntu

Voici un petit script que nous appelons alertesecteur, qui surveille que l'alimentation est bien connectée au portable :

#!/bin/bash

upower -i /org/freedesktop/UPower/devices/line_power_ADP0 | \
  awk '{if (/online/ && /yes/) {exit 1}}' 
[ $? == 1 ] && play -q /usr/share/sounds/ubuntu/ringtones/Marimbach.ogg

Si ce n'est pas le cas, elle joue une petite mélodie.
Il ne reste plus qu'a mettre ce script dans une crontab pour être exécuté toutes les 20 minutes, et ainsi nous sommes alerté par la mélodie que le secteur a été débranché !

vi /etc/crontab

*/20 * * * *	 root 	/usr/local/bin/alertesecteur

Nous pouvons bien entendu mettre d'autres types d'alarmes (visuelles, mails, snmptrap, zabbix, ...)

lundi, février 12 2018

Surveiller la batterie d'un pc portable distant

Sous Ubuntu, l'état de la batterie portable est toujours disponible dans la barre des taches ... Mais la barre des taches n'est pas toujours disponible (haha), par exemple via un monitoring distant. Pour contrôler l'état de la batterie, nous pouvons utiliser upower en ligne de commande.

Liste des devices supportés par upower :

upower -e

État d'un device

upower -i <device>

Et maintenant, on combine pour trouver automatiquement les Batteries (BAT) et afficher leurs charge.

upower -i $(upower -e | grep 'BAT') | grep -E "state|to\ full|percentage"

Nautilus as desktop

Simplement en une ligne dconf :

dconf write /org/gnome/desktop/background/show-desktop-icons true

lundi, février 5 2018

LVM : ajout d'un nouveau PV a un VG en vue d'extention du LV.

Lvm permet d'augmenter graduellement l'espace alloué à un serveur (virtuel ou physique) par l'ajout de ressources (nouveau disque dur) que nous "fusionnons" avec les disques en activité :

$ lsblk
sdb                         8:16   0   70G  0 disk 

$ mount  | grep "on / "
/dev/mapper/ubuntu--vg-ubuntu--lv on / type ext4 (rw,relatime)

$ pvcreate /dev/sdb
$ vgextend ubuntu-vg /dev/sdb

$ lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
$ resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv 

/dev/sdb est notre disque ajouté et le volume ubuntu-lv est maintenant augmenté de 70go.

Très bien dans un contexte proxmox ous nous créons des templates light que nous augmentons ensuite !

mardi, janvier 23 2018

DNSSec

Depuis ces documentations la :

Prérequis SElinux :

setsebool -P named_write_master_zones 1

Paramétrage de la zone pour dnssec

dnssec-keygen -a NSEC3RSASHA1 -b 2048 -n ZONE doctorwhooo.fr
dnssec-keygen -f KSK -a NSEC3RSASHA1 -b 4096 -n ZONE doctorwhooo.fr
chown named.named Kdoctorwhooo.fr*

vi doctorwhooo.fr

$INCLUDE Kdoctorwhooo.fr.+007+04293.key  
$INCLUDE Kdoctorwhooo.fr.+007+28217.key

+ Incrément Serial

vi /etc/named/zone_tardis.conf


        zone "doctorwhooo.fr" {
                type master;
                file "doctorwhooo.fr";
                allow-query { any; };
 +            auto-dnssec maintain;
 +            inline-signing yes;
        };


Paramétrage de bind

vi /etc/named.conf

  dnssec-enable yes;
  dnssec-validation auto;
  dnssec-lookaside auto;


service named restart

Validation première

dig dnskey doctorwhooo.fr @dns.local

;; ANSWER SECTION:

doctorwhooo.fr.	43200	IN	DNSKEY	256 3 7 AwEAAfPU4a1AsUe6kRSGn9jWqmd7lC/O1B1zjrdXaObGTFejE1nzsuoR O5uOou6QH3qUSQkeyZgSzDOH9tde+wQVT+j68v8o9ZhAZZ/BHrruydIR DJM3k1wjb+PXWWNWU8hkd5bUQ7yDAao5OLgReCnXQ5KhLYwlkEDqfng5 h+9v5G56PeqTRo49edOGRDe2q4mU6NSxzxaypv8dxtRqx1/oA78rQ037 IgtPgENU4pLe3nmFNdqZnpgEZoZjaJlOjSt9JF8/efRxZ91JfvMBC9mK UjEgBCh8J/GKFaaQNGreZQFW2GK5Ttr4Lf8K/5KxOQOA3T553aKvEd2x rJN8Ix/1trM=  ; ZSK; alg = NSEC3RSASHA1; key id = 28217

doctorwhooo.fr.	43200	IN	DNSKEY	257 3 7 AwEAAai+Kc3ic4fezqhHj3uxI4ODcCaILKw6Mq2Nzsr0eN7VVA/e3/Af s1PjXkoXYtJHPPwfEhk3iP9EK1O871NWms2Of31l7kCnjQz+tSOO9RMf Rw4KYjUqqMQxnUpRzcSrln9+DGoKNJAJsyXbcCbzFN2WRTvQ6nU/vfZI rcM3NWJ8TKvuWmiXWCF2BJ9ZKQzHoreFErDIyqx5ZW/7rR7umUK84ao/ GBatfU/jGCxeeDzSa48qlLTn+yo55qCqinaHo952yAXLokMG37dJD5HT AIClc1dVJNQUpqei4qDFyAbpyoZXMFvDqkC02xQVuwYnkjrpGwOspHrL P5SJ/npp34rggyKzywFA2uldEW0Ry3lknBpHd5Vk+gIIsc3g0jqHmBXA SB5I7bJlIr147uYc7yYtEhSqdH/epclO6pcnjhWoQjQ8meOdHmVIZhDp hWa0fZbZN8ffT20y1YG6/tOiVVLghoUcWD4UyY19sU3zD4HU/aJOdn3h CLVX3iwmNc1XzjZalkEln0RFHHbxhH9h9Ocsv0H6UUwBjAgTynKri4Fk 8IRu2xgkBcsRqfIUQvsAHKyM/HMOPQrljxUU0h3LaQNk+hwjn9JXDk6e kKsrnoQUwtyYB9QVSDY9yOUWpxrR/Uv/neRf9mHHCFGn7EisyDeQ8I5C Ja0wXoxkvSVpp7Nb  ; KSK; alg = NSEC3RSASHA1; key id = 4293

Les clefs ZSK et KSK sont en place.

A ce stade, https://dnssec-debugger.verisignlabs.com/doctorwhooo.fr nous indique qu'il ne nous manque que le DS.

dnssec-dsfromkey Kdoctorwhooo.fr.+007+04293.key

doctorwhooo.fr. IN DS 4293 7 1 8E38D736E3E6FAA261ED6B920AF1CB523A20990B
doctorwhooo.fr. IN DS 4293 7 2 7FEE0B93D933DDFA5CC40D7625B41528B0B4B3F42845FA9A826A5AF1 4FEB0988

Considérations additionnelles sur le renouvellement de KSK et ZSK, Lire Ça

vendredi, janvier 19 2018

SELinux

Sous SElinux, il existe trois causes de blocages :

Une permission booleene

setsebool -P named_write_master_zones 1

Une permission de contexte (AVC)

grep named /var/log/audit/audit.log | audit2allow -m named > named.te
checkmodule -M -m -o named.mod named.te
semodule_package -o named.pp -m named.mod
semodule -i named.pp

Une fois un module installé, il l'est définitivement (rien à faire au prochain boot)

Une permission lié a un label

voir du cote de selabel_* et google ;)

Pour connaitre la cause de blocage, un audit2allow est la clef.

Bonus :

Dans un playbook ansible, voici la syntaxe :

seboolean: persistent=yes state=yes name=named_write_master_zones

jeudi, janvier 18 2018

Activation de DNSSec

Attention, ce post est écrit dans un contexte de DNS Maitre.

Dnssec permet de signer les résolution DNS et garantir leur authenticité

Aller dans le répertoire des zones, et générez vos signatures avec les commandes :

zone="ban-kai-ki-kai.org"
zonefile="bankai.org"
dnssec-keygen -a NSEC3RSASHA1 -b 2048 -n ZONE $zone
dnssec-keygen -f KSK -a NSEC3RSASHA1 -b 4096 -n ZONE $zone

pour pour chaque fichier .key généré , ajouter au fichier de zone :

$INCLUDE fichier.key

puis editer votre named.conf pour rajouter

dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;

Modifier la déclaration de la zone pour inclure l'auto-signature et renouvellement, en ajoutant dans la définition de la zone :

auto-dnssec maintain;
inline-signing yes;

Une fois tout cela fait, vous pouvez relancer bind. et valider avec la commande :

dig DNSKEY ban-kai-ki-kai.org. @localhost +noadditional +dnssec +multiline

Si ca ne marche pas, cela peut etre du a SELinux, et dans ce cas, faire :

setsebool -P named_write_master_zones 1

vendredi, janvier 12 2018

Suppression des mails qui sont des réponses au spam

Dans un cas de spam si votre serveur répond, cette réponse n'aboutiera surement pas pour des raison de serveur smtp indisponible (les spammeurs vont du spam scripté avec des adresse de réponse maudites).

Voici comment empêcher ces réponses : le header_check de postfix :

/^Subject: .*Undeliverable:.*\[SPAM/ DISCARD Reponse a un SPAM

Si votre file d'attente est engorgée avant la mise en place de cette règle, vous pouvez la purge comme suit :

for f in `postqueue -p | grep MAILER-DAEMON | sed 's,*,,' | awk '{print $1}'` ; do postcat -q $f | grep -q "^Subject: .*Undeliverable:.*\[SPAM" && postsuper -d $f ; done

lundi, janvier 8 2018

Linux sur serveurs HP

Deux outils indispensables pour vos serveurs HP !

hpasmcli

,vous permet d'interroger les informations de votre chassis HP.

hpssacli (historiquement hpacucli)

,vous permet d'interroger la carte controlleur et de manipuler le raid.

Postqueue à plat

Rien de bien sorcier ici, encode un pense bête : le reformatage de la sortie de postqueue pour sérialiser les entrées et faciliter les grep et sort sans impact négatif

postqueue -p | tr '\n' ';' | sed 's,;;,\n,g;s,; *,;,g'

Ce script que vous appellerez "postqueueflat" peut être utilise conjointement avec awk pour réorganiser les "colonnes" séparées par ";" et tiers ou filtrer le résultat.

vendredi, janvier 5 2018

Openvpn Two-factor authentication

Avoir un serveur vpn qui authentifie par certificats c'est déjà bien, mais rajouter en plus une authentification login mot de passe, c'est encore mieux !

pour cela, il faut ajouter les lignes suivantes au fichier de configuration de votre serveur openvpn :

plugin /usr/lib/x86_64-linux-gnu/openvpn/plugins/openvpn-plugin-auth-pam.so login

Attention, un bug dans le fichier de lancement d'openvpn par systemctl fait que l'authentification ne marche pas. Pour le corriger, il faut éditer /lib/systemd/system/openvpn@.service, et modifier comme suit :

#CapabilityBoundingSet=CAP_IPC_LOCK CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_RAW CAP_SETGID CAP_SETUID CAP_SYS_CHROOT CAP_DAC_OVERRIDE
CapabilityBoundingSet=CAP_IPC_LOCK CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_RAW CAP_SETGID CAP_SETUID CAP_SYS_CHROOT CAP_DAC_OVERRIDE CAP_AUDIT_WRITE

Un fois cela fait, recharger les définitions de systemd

systemctl daemon-reload

Puis relancer le serveur openvpn :

systemctl stop openvpn
systemctl start openvpn

Attention encore, il faut ajouter la directive suivante au fichier client :

auth-user-pass

Voila, votre serveur est maintenant "two-factor authentification" !

Petit bonus, nous pouvons "bundeliser" les certificats dans le fichier de conf, ce qui permet de tout livrer en un seul fichier :

Pour cela, le fichier sera comme suit :

client
....
....
<ca>
...
</ca>
<cert>
...
</cert>
<key>
...
</key>

Et voila, vous n'avez plus qu'un seul fichier à livrer (sauf si vous utiliser un "ta" en plus.)

- page 2 de 5 -