Logo carnetderootxzz@carnetderoot.net"La simplicité est la sophistication suprême" - Léonard De Vinci
mercredi 05 avril 2023

:: Cheatsheet FreeBSD ::

Mise à jour

Mise à jour système

# freebsd-update fetch
# freebsd-update install

Mise à jour paquets

# pkg update
# pkg upgrade [-y]

Gestion des paquets pré-compilés

Recherche

$ pkg search neovim

Installation

# pkg install [-y] neovim

Téléchargement (sans installation)

$ sudo pkg fetch -y -d -o /usr/home/xzz/packages/ neovim

Options :

  • -d : téléchargement des dépendances
  • -o : répertoire cible
  • -y : sans confirmation

Téléchargement (sans installation) dans le répertoire cache par défaut

Par défaut pkg utilise le répertoire cache définit par la variable PKG_CACHEDIR du fichier /usr/local/etc/dpkg.conf (défaut /var/cache/pkg).

Installation d'un paquet téléchargé

$ sudo pkg install /usr/home/xzz/packages/All/neovim-0.8.2.pkg

Suppression de paquets

$ sudo pkg delete neovim

Suppression automatique des paquets inutilisés

$ sudo pkg autoremove

Note : relancer la commande plusieurs fois si nécessaire jusqu'à obtenir un résultat similaire au retour ci-dessous.

Checking integrity... done (0 conflicting)
Nothing to do.

Informations sur les paquets installés

Liste de tous les paquets installés

$ pkg info

Liste des paquets explicitement installés

$ pkg prime-list

Avec le repository d'origine :

$ pkg prime-origins

Informations sur un paquet

$ pkg info neovim
neovim-0.8.2
Name           : neovim
Version        : 0.8.2
[...]

Déterminer quel package a installé un fichier

$ pkg which /usr/local/bin/perl

Auditer les paquets installés

$ pkg audit -F
vulnxml file up-to-date
0 problem(s) in 0 installed package(s) found.

Option :

  • -F : met à jour la base avant de vérifier

Nettoyage du cache

Cette commande permet de ne garder que la dernière version des paquets en cache.

# pkg clean

Pour vider intégralement le cache :

# pkg clean -a

Gestion des utilisateurs

Ajout d'un nouvel utilisateur

# pw useradd -n xzz -c "Xzz" -s /bin/sh -m -w random

Options :

  • -n : Utilisateur
  • -c : Commentaire
  • -s : Emplacement du shell
  • -m : Création du répertoire personnel
  • -w : Mode de génération du mot de passe

Suppression d'un utilisateur et de son répertoire personnel

# pw userdel -n xzz -r

Option :

  • -r : Suppression du répertoire utilisateur

Ajout d'un utilisateur au groupe wheel

# pw groupmod wheel -m xzz

Références


mercredi 23 juin 2021

:: Bash - Trucs utiles ::

Couleurs

Afficher les couleurs supportées par le terminal

for color in {0..255}; do
    tput setab $color
    echo -n "$color "
done
tput sgr0
echo

~/.bashrc

Equivalence de couleurs

Couleur Code
Black 0;30
Blue 0;34
Green 0;32
Cyan 0;36
Red 0;31
Purple 0;35
Brown 0;33
Light Gray 0;37
Dark Gray 1;30
Light Blue 1;34
Light Green 1;32
Light Cyan 1;36
Light Red 1;31
Light Purple 1;35
Yellow 1;33
White 1;37

Eléments basiques

Code Elément affiché
\a Echappement
\d Date (Sun Jun 20)
\e Caractère 'Bell'
\h Nom d'hôte (hostname)
\H Nom d'hôte complet (hostname.domain.tld)
\j Nombre de process lancés par le shell
\l Nom du terminal
\n Retour à la ligne
\r Retour chariot
\u Nom d'utilisateur
\v Version de Bash
\w Répertoire courant
\W Chemin complet du répertoire courant
! Numéro d'historique de la commande en cours

Exemples

Couleur du prompt en rouge

PS1='\[\033[31m\][\u@\h \W]\$\[\033[0m\] '

Couleur du prompt en bleu

PS1='\[\033[34m\][\u@\h \W]\$\[\033[0m\] '

Bashrc

#
# ~/.bashrc
#

# If not running interactively, don't do anything
[[ $- != *i* ]] && return

####################
# SHELL OPTS
###############
#PS1='[\u@\h \W]\$ '
PS1='\[\033[34m\][\u@\h \w]\$\[\033[0m\] '

####################
# ENV
###############
# Editor
export EDITOR=vim

####################
# ALIAS
###############
# Colorization of outputs
alias diff='diff --color=auto'
alias grep='grep --color=auto'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias ls='ls --color=auto'
alias dir='dir --color=auto'
alias vdir='vdir --color=auto'
alias ip='ip --color=auto'
alias dmesg='dmesg --color=always'

# Commands alias
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'
alias cls='clear'
alias vi='vim'

# Tricks & Useful aliases
alias cd..='cd ..'
alias env='env | sort'
# -> if the second argument is an alias, it will get expanded prior to passing to sudo
alias sudo='sudo '
alias keygen='keygen -C "$(whoami)@$(uname -n)-$(date -I)"'

Références


lundi 05 avril 2021
jeudi 02 juillet 2020

:: Xresources ::

Le fichier Xresources, habituellement ~/.Xresources, peut être utilisé pour configurer les applications X.

Configuration de xterm

Xterm.termName: xterm
Xterm.vt100.locale: true
XTerm.vt100.metaSendsEscape: true
XTerm.vt100.backarrowKey: false
XTerm.ttyModes: erase ^?
XTerm.vt100.saveLines: 4096
XTerm.vt100.scrollBar: true
XTerm.vt100.scrollbar.width: 8
!-------------------------------------------------------------------------------
! Fonts
XTerm.vt100.faceName: DejaVu Sans Mono:size=9:antialias=true
XTerm.vt100.font: 7x13
!-------------------------------------------------------------------------------
! Colors
*background: #181818
*foreground: #c0c0c0
*cursorColor: #93a1a1
!! black dark/light
*color0: #121212
*color8: #2e3436
!! red dark/light
*color1: #a35b66
*color9: #ab6b74
!! green dark/light
*color2: #99ab6f
*color10: #acb972
!! yellow dark/light
*color3: #ca9733
*color11: #ccaa69
!! blue dark/light
*color4: #495d6e
*color12: #687987
!! magenta dark/light
*color5: #825969
*color13: #977381
!! cyan dark/light
*color6: #839191
*color14: #98a4a4
!! white dark/light
*color7: #e0e0e0
*color15: #e5e5e5

mercredi 12 février 2020

:: ALSA ::

Liste des périphériques audio

$ cat /proc/asound/cards
 0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xf2520000 irq 30

Liste des périphériques de capture

$ arecord -l
**** Liste des Périphériques Matériels CAPTURE ****
carte 0: PCH [HDA Intel PCH], périphérique 0: CX20590 Analog [CX20590 Analog]
  Sous-périphériques: 1/1
  Sous-périphérique #0: subdevice #0

Test du microphone

Enregistrement

$ arecord -d 10 /tmp/test-mic.wav

Lecture

$ aplay /tmp/test-mic.wav

Utilitaires Alsa

Mixeur Alsa

$ alsamixer

Enregistrmeent des paramètres

$ sudo alsactl store

:: Création et montage d'une partition chiffrée LUKS sur sdx1 ::

Note : remplacer sdx1 par le périphérique concerné

Installation de cryptsetup

$ sudo apt-get install cryptsetup

Créez une partition non-formatée (fdisk, gdisk, etc.)

Création de la partition chiffrée

$ sudo cryptsetup luksFormat /dev/sdx1

En précisant un format (exemple de chiffrement fort) :

$ sudo cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 /dev/sdx1

Ouverture

$ sudo cryptsetup luksOpen /dev/sdx1 sdx1_crypt

Création du répertoire de montage

$ sudo mkdir /mnt/sdx1_crypt

Formatage

$ sudo mkfs.ext4 /dev/mapper/sdx1_crypt

Montage

$ sudo mount /dev/mapper/sdx1_crypt /mnt/sdx1_crypt

Modifications des permissions pour que le répertoire appartienne à l'utilisateur courant et au groupe 'users'

$ sudo chown $USER:users /mnt/sdx1_crypt/ -R

Démontage du volume

$ cd / && sudo umount /mnt/sdx1_crypt    

Fermeture

$ sudo cryptsetup luksClose sdx1_crypt

Utilisation du volume

Ouverture

$ sudo cryptsetup luksOpen /dev/sdx1 sdx1_crypt

Montage

$ sudo mount /dev/mapper/sdx1_crypt /mnt/sdx1_crypt

Instructions pour démonter et fermer

Démontage

$ cd / && sudo umount /mnt/sdx1_crypt    

Fermeture

$ sudo cryptsetup luksClose sdx1_crypt

One-liner

Ouverture

$ sudo cryptsetup luksOpen /dev/sdx1 sdx1_crypt && sudo mount /dev/mapper/sdx1_crypt /mnt/sdx1_crypt

ou, si on est root :

# echo 'passphrase' | cryptsetup luksOpen /dev/sdx1 sdx1_crypt && mount /dev/mapper/sdx1_crypt /mnt/sdx1_crypt

Fermeture

$ cd / && sudo umount /mnt/sdx1_crypt && sudo cryptsetup luksClose sdx1_crypt

ou, si on est root :

# cd / && umount /mnt/sdx1_crypt && cryptsetup luksClose sdx1_crypt

dimanche 06 mai 2018

:: Git ::

Introduction

Fichiers de configuration

Git utilise une série de fichiers de configuration pour déterminer son comportement. Les emplacements sont lus dans un ordre précis et les valeurs lues en dernier écrasent les précédentes ("C'est le dernier qui parle qui a raison"). Vous pouvez positionner ces valeurs manuellement en éditant ces fichiers, mais je vous recommande d'utiliser la commande git config, ne serait-ce que pour éviter des erreurs de syntaxe.

/etc/gitconfig

Contient des valeurs pour tous les utilisateurs du système et tous leurs dépôts. Pour lire et modifier ce fichier, utiliser l'option --system avec git config.

$ git config --system [...]

~/.gitconfig

Spécifique à chaque utilisateur. Pour lire et modifier ce fichier, utiliser l'option --global.

$ git config --global [...]

.git/config

Le dernier emplacement lu par git est le fichier de configuration du dépôt en cours d'utilisation. Ces valeurs sont spécifiques à un unique dépôt. Pour lire et modifier ce fichier, utiliser l'option --local.

$ git config --local [...]

git-config

Pour modifier le comportement de git, il est nécessaire de spécifier certains paramètres de configuration à l'aide de la commande git-config.

Synopsis

$ git config [<file-option>] [type] [--show-origin] [-z|--null] name [value [value_regex]]
$ git config [<file-option>] [type] --add name value
$ git config [<file-option>] [type] --replace-all name value [value_regex]
$ git config [<file-option>] [type] [--show-origin] [-z|--null] --get name [value_regex]
$ git config [<file-option>] [type] [--show-origin] [-z|--null] --get-all name [value_regex]
$ git config [<file-option>] [type] [--show-origin] [-z|--null] [--name-only] --get-regexp name_regex [value_regex]
$ git config [<file-option>] [type] [-z|--null] --get-urlmatch name URL
$ git config [<file-option>] --unset name [value_regex]
$ git config [<file-option>] --unset-all name [value_regex]
$ git config [<file-option>] --rename-section old_name new_name
$ git config [<file-option>] --remove-section name
$ git config [<file-option>] [--show-origin] [-z|--null] [--name-only] -l | --list
$ git config [<file-option>] --get-color name [default]
$ git config [<file-option>] --get-colorbool name [stdout-is-tty]
$ git config [<file-option>] -e | --edit

Paramètres de configuration

Identité

Note importante : ces informations sont utilisées par Git de manière indélébile (on ne peut changer l'auteur d'un commit après-coup, ni son adresse email).

$ git config --global user.name "Xzz"
$ git config --global user.email "xzz@carnetderoot.net"

Editeur de texte

A ne pas oublier, mon éditeur de texte préféré (parce que nano par défaut, hein, sérieux...) :

$ git config --global core.editor vi

Colorisation de la sortie de git

Pour faire simple on peut activer la colorisation de plusieurs paramètres en une seule commande :

$ git config --global color.ui auto

Si on préfère agir de manière spécifique, on peut modifier les paramètres un par un

$ git config --global color.branch auto
$ git config --global color.diff auto
$ git config --global color.interactive auto
$ git config --global color.status auto

Pour plus de détails sur les paramètres disponibles et leurs effets, je vous invite à consulter la documentation de référence git-config

Vérification des paramètres

$ git config --list
user.name=Xzz
user.email=xzz@carnetderoot.net
color.ui=auto
core.editor=vi

Utilisation de Git

Utilisation courante

Initialisation d'un projet

$ cd projet
$ git init
Dépôt Git vide initialisé dans /path/to/projet/.git/

Ajout des fichiers au projet

$ git add .

Supprimer des fichiers de l'index (ne plus les suivre)

$ git rm --cached fichier_a_ne_plus_suivre.pm

Attention à ne pas oublier l'option --cached ! Si vous omettez ce commutateur, la commande supprimera aussi le fichier du système de fichier :-)

Commit initial

$ git commit -m "Mon premier commit"
[master (commit racine) 6337a68] Commit initial
 89 files changed, 61074 insertions(+)
 create mode 100644 MANIFEST
 create mode 100644 MANIFEST.SKIP
 ...

Retirer des éléments de la synchronisation

Certains fichiers n'ayant pas besoin d'être synchronisés (fichiers temporaires, fichiers de swap, répertoire de sessions, etc.), on crée un fichier .gitignore contenant la liste des fichiers et répertoires à ignorer.

$ vi .gitignore

Contenu de .gitignore :

# Commentaire
# Ignorer les fichiers journaux
logs/
# Ignorer les fichiers temporaires
tmp/
# Ignorer les fichiers en cours d'edition
*.swp
...

Ajout du fichier au repository

$ git add .gitignore
$ git commit -m "Ajout du fichier .gitignore"
[master 8896d55] Ajout du fichier .gitignore
 1 file changed, 6 insertions(+)
 create mode 100644 .gitignore

Ignorer des fichiers déjà commités

Dans le cas où on ne veut plus synchroniser des fichiers déjà commités, ni avoir un retour lors d'un git status, il est préférable de réindexer l'ensemble des fichiers à synchroniser.

Pour cela, le moyen radical est de supprimer l'index existant, rajouter les fichiers puis faire un commit.

Attention : penser à commiter les dernieres modifications de code avant de lancer les commandes ci-dessous

$ git rm -r --cached
$ git add .
$ git commit -m "Suppression de tous les fichiers de l'index puis re-ajout pour bonne prise en compte du fichier .gitignore"

Vérification

$ git status
Sur la branche master
rien à valider, la copie de travail est propre

Historique des commits

$ git log

Création d'un dépôt distant

Sur le serveur distant

$ cd /opt/git
$ mkdir projet.git
$ cd projet.git/
$ git --bare init
Dépôt Git vide initialisé dans /opt/git/projet.git/

Sur le poste hébergeant le dépôt local

$ cd projet
$ git init
$ git add .
$ git commit -m "Mon premier commit"
$ git remote add nom_depot user@serveur:/opt/git/projet.git
$ git push nom_depot master

Clonage du dépôt sur un autre poste

$ git clone user@serveur:/opt/git/projet.git

Pousser ses modifications

$ git push nom_depot master

Gestion des dépôts

Afficher les dépôts enregistrés

$ git remote
$ git remote -v

Ajouter un dépôt

$ git remote add nom_depot url

Modifier un dépôt

$ git remote set-url nom_depot url

Supprimer un dépôt

$ git remote rm nom_depot

Références


dimanche 04 février 2018

:: Rundeck ::

Rappel

Aller dans le répertoire "rundeck"

PS C:\> cd D:\rundeck

rd-queue

Synopsis

rd-queue [*action*] [-h] [-e id] [-p project]

Actions

  • list (default) : liste les exécutions en cours
  • follow : suit le retour de l'exécution spécifiée par son id
  • kill : tue l'exécution en cours spécifié par son id

Options

Option Description Actions
-h, --help Affiche l'aide
-p Nom du projet list
-e, --eid Id d'exécution follow, kill
-q, --quiet Mode silencieux follow
-r, --progress Affiche la progression de l'exécution follow
-t, --restart Affiche la log depuis le début follow

Lister exécutions en cours

> .\tools\bin\rd-queue list -p MyProject
Queue: x items
[id] NomJob <http://lien_vers_details_du_job>
...

Suivre exécution d'un job

Avec affichage de la sortie

> .\tools\bin\rd-queue follow -e 183
[...]
[183] execution status: success

Avec l'indicateur de progression

> .\tools\bin\rd-queue follow -e 183 --progress
################
[183] execution status: success

rd-jobs

[ à suivre ]


:: MultiMarkdown ::

Basics

What Syntax
Italic *Italic* or _Italic_
*Bold * **Bold** or __Italic__
Both ***Both*** or ___Both___
Block Quote > Block Quote (like email)
List *, + or -
Ordered 1. on first item,
Header ### Header
HRule --- or *** on empty line

Links

What Syntax
Basic [CNN](http://cnn.com)
Reference [link][linkid] for [link][linkid] then [linkid]: http://cnn.com "title" on its own line elsewhere.
Def Link [linkid]: http://cnn.com "title" on its own line elsewhere.
Short <http://cnn.com> <pierce@twinforces.com>
Internal [Links][] (any header name)
Footnote1 [^footnote] def footnote later
Def Footnote [^footnote]: text
Image ![Image Name](URL "title") for an image
![Image Ref] then later def
![Caption][Image Ref] then later def
Image Def ```[Image Ref]: URL "Title" width="45px" height="45px"

Tables

Table caption, also works as a reference
First Header Second Header Third Header
First row Bold Very long data entry
Second row Cell that spans across two columns

| First Header | Second Header | Third Header | | :------------ | :-----------: | -------------------: |
| : Left align | : centered : | Right align : | | First row | **Bold** | Very long data entry | | Second row | Cell that spans across two columns ||
[Table caption, also works as a reference][section-mmd-tables-table1]

Critic

What Syntax
{--a delete. --} a delete. {-- remove --}
{++an add. ++} {++ add++}
swap {~~from~>to~~} {\~\~\from\~>to\~\~}
{==a highlight==} {\=\=highlight\=\=}
Comment, which you can't see{>>What is it a test of?<<}. {>>Comment?\<\<}

  1. This is the footnote ↩


dimanche 05 février 2017

:: Docker ::

Introduction

Commandes principales

Lister les containers

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Vérifier la version

$ docker version
Client:
 Version:      1.13.0
 API version:  1.25
 Go version:   go1.7.3
 Git commit:   49bf474
 Built:        Wed Jan 18 16:20:26 2017
 OS/Arch:      windows/amd64

Server:
 Version:      1.13.0
 API version:  1.25 (minimum version 1.12)
 Go version:   go1.7.3
 Git commit:   49bf474
 Built:        Wed Jan 18 16:20:26 2017
 OS/Arch:      linux/amd64
 Experimental: true

Infos supplémentaires

$  docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 1.13.0
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host ipvlan macvlan null overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 03e5862ec0d8d3b3f750e19fca3ee367e13c090e
runc version: 2f7393a47307a16f8cee44a37b262e8b81021e3e
init version: 949e6fa
Security Options:
 seccomp
  Profile: default
Kernel Version: 4.9.4-moby
Operating System: Alpine Linux v3.5
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 1.934 GiB
Name: moby
ID: 5GS5:CDLI:QBVM:CI6Q:7EZ3:3SXU:33E5:IBQQ:AWBX:H4WA:K3PU:L4UT
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: 13
 Goroutines: 21
 System Time: 2017-02-05T18:55:34.4573341Z
 EventsListeners: 0
Registry: https://index.docker.io/v1/
Experimental: true
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false

Test du bon fonctionnement de l'installation

$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
78445dd45222: Pulling fs layer
78445dd45222: Verifying Checksum
78445dd45222: Download complete
78445dd45222: Pull complete
Digest: sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://cloud.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/engine/userguide/