2024/10/22 16:56
Traduction d'un extrait d'archlinux
Exécuter des applications GUI en tant que root “Avertissement: toutes les méthodes suivantes ont des implications en matière de sécurité dont les utilisateurs doivent être conscients. Comme l'a dit Emmanuele Bassi, un développeur GNOME: «il n'y a pas de * vraies * raisons technologiques justifiées pour lesquelles quiconque devrait exécuter une application GUI en tant que root. En exécutant des applications GUI en tant qu'administrateur, vous exécutez littéralement des millions de lignes de code qui n'ont pas été audités correctement pour s'exécuter avec des privilèges élevés; vous exécutez également du code qui touchera des fichiers dans votre $ HOME et peut changer leur propriété sur le système de fichiers; connectez-vous, via IPC, à encore plus de code en cours d'exécution, etc. ouvrent une faille de sécurité massive et béante […]. “
Sources
Quelques liens :
Creation de paquets debians
ATTENTION : débrancher l'ordi du réseau → sécurité car connexion sans mdp root
mount -o bind /proc /mnt/root/proc mount -o bind /sys /mnt/root/sys mount -o bind /dev /mnt/root/dev chroot /mnt/root /bin/bash passwd bob exit umount /mnt/root/dev umount /mnt/root/sys umount /mnt/root/proc umount /mnt/root
Lister des fichiers
alias ls-list='ls -la | grep ^- | awk \'\''{print }\'\'''
Geler un paquet (n’apparait plus lors des mises à jour)
# aptitude hold LePaquet
Degeler un paquet (réapparait lors des mises à jour)
# aptitude unhold LePaquet
Recherche des paquets gelés
# dpkg --list | grep ^hi # aptitude search "~ahold"
Trouvé que le motif bash (dans le nom)
aptitude search '~i bash'
Trouvé que le motif bash (dans la description)
aptitude search '~i ~d bash'
Idem mais en non installé
aptitude search '!~i bash'
apt-cache search freeplayer fbx-playlist - éditeur graphique pour la liste de lecture de la Freebox freeplayer - Encapsuleur autour de VLC pour la FreeBox ADSL française
aptitude show -v Logiciel aptitude install=Version Logiciel
aptitude install --with-recommends LePaquet
aptitude install --without-recommends LePaquet
https://www.cyberciti.biz/faq/linux-inotify-examples-to-replicate-directories/ Linux incrond inotify Monitor Directories For Changes And Take Action
Lister les périph
ragnarok@Fenrir:~$ xinput --list ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ AlpsPS/2 ALPS DualPoint TouchPad id=13 [slave pointer (2)] ⎜ ↳ AlpsPS/2 ALPS DualPoint Stick id=14 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Power Button id=8 [slave keyboard (3)] ↳ Sleep Button id=9 [slave keyboard (3)] ↳ Laptop_Integrated_Webcam_HD: In id=10 [slave keyboard (3)] ↳ Dell WMI hotkeys id=11 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=12 [slave keyboard (3)]
Détailler le touchpad
ragnarok@Fenrir:~$ xinput list-props 13 Device 'AlpsPS/2 ALPS DualPoint TouchPad': Device Enabled (154): 1 Coordinate Transformation Matrix (156): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000 libinput Tapping Enabled (292): 1 libinput Tapping Enabled Default (293): 0 libinput Tapping Drag Enabled (294): 1 libinput Tapping Drag Enabled Default (295): 1 libinput Tapping Drag Lock Enabled (296): 0 libinput Tapping Drag Lock Enabled Default (297): 0 libinput Tapping Button Mapping Enabled (298): 1, 0 libinput Tapping Button Mapping Default (299): 1, 0 libinput Natural Scrolling Enabled (300): 0 libinput Natural Scrolling Enabled Default (301): 0 libinput Disable While Typing Enabled (302): 1 libinput Disable While Typing Enabled Default (303): 1 libinput Scroll Methods Available (304): 1, 1, 0 libinput Scroll Method Enabled (305): 1, 0, 0 libinput Scroll Method Enabled Default (306): 1, 0, 0 libinput Middle Emulation Enabled (307): 1 libinput Middle Emulation Enabled Default (308): 1 libinput Accel Speed (309): 0.000000 libinput Accel Speed Default (310): 0.000000 libinput Left Handed Enabled (311): 0 libinput Left Handed Enabled Default (312): 0 libinput Send Events Modes Available (277): 1, 1 libinput Send Events Mode Enabled (278): 0, 0 libinput Send Events Mode Enabled Default (279): 0, 0 Device Node (280): "/dev/input/event2" Device Product ID (281): 2, 8 libinput Drag Lock Buttons (313): <no items> libinput Horizontal Scroll Enabled (314): 1
Activer une option (exemple tapping touchpad)
ragnarok@Fenrir:~$ xinput --set-prop 13 292 1
Desactiver
xinput --set-prop `xinput | sed -nr 's/.*TouchPad.*id=([0-9]*).*/\1/p'` "Device Enabled" 0
Activer
xinput --set-prop `xinput | sed -nr 's/.*TouchPad.*id=([0-9]*).*/\1/p'` "Device Enabled" 1
Nom touche
xbindkeys -k
Dispo clavier
xkbprint -label name $DISPLAY - | gv -orientation=seascape -
xbindkeys en toile de fond.
[ragnarok@asgard-freeBSD:~] $ cat .xbindkeysrc # PERSONNAL XBINDKEYS "intel_backlight decr 10" Alt + Down "intel_backlight incr 10" Alt + Up
FreeBSD : pkg install intel-backlight Debian : aptitude instatt xbacklight
#!/bin/bash dossierDeTravail="/home/serveur"; recursiveSearch() { [ -r "$1" ] && [ -x "$1" ] || return 1 # Si on peut fouiller dans le dossier [ "`ls "$1" | wc -l`" == "0" ] && return 0 # Si le dossier est vide for file in "$1"/*; do if [ -d "$file" ]; then recursiveSearch "$file" fi echo "$file" done } recursiveSearch $dossierDeTravail
#!/bin/sh # # Test de l'existence du programme ZENITY if which zenity > /dev/null; then echo "zenity already install. Fine." else echo "zenity does not exist. Go for the installation" su -c "apt-get install zenity" fi dossier=`zenity --title="Choisir un dossier" --file-selection --directory` ; find $dossier -depth -name '*.wav' -execdir bash -c '[[ -f $0 ]] && flac -7 --replay-gain "$0" ' {} \;
#!/bin/sh case $(LC_ALL=C date +%a) in (Mon) echo 'Bonjour :)';; (Thu) echo 'Bienvenue ;) ';; (Wed|Sat|Sun) echo 'YEP !!! :)';; (*) echo 'Hi ! ;)' ;; esac
La touche Host est la touche Ctrl droite de votre clavier.
Host: Active (intègre la souris et le clavier dans la machine) Host: Désactive le mode capturé (sortir de la machine capturé) Host + Début: Affichée la barre de menu en mode intégré Host + A: Ajuste la taille de l'écran invité Host + F: Passe l'affichage en mode plein écran Host + F: Passe l'affichage en mode normal Host + G: Ajuste automatiquement la taille et l'écran de l'invité Host + H: Arrêt par ACPI Host + I: Activation de l'intégration de la souris Host + I: Désactivation de l'intégration de la souris Host + L: Mode affichage intégré dans le bureau Host + P: Mettre la machine virtuelle en pause Host + P: Sortir la machine virtuelle du mode pause Host + Q: Fermer (quitter) la machine virtuelle Host + R: Redémarrer la machine virtuelle
$ find /etc/apt -type f -name '*.list' -exec bash -c 'echo -e "\n$1\n"; nl -ba "$1"' _ '{}' \;
serveur@serveurProliant:~$ lsusb -t /: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M /: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M /: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/10p, 480M |__ Port 2: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 3: Dev 3, If 0, Class=Hub, Driver=hub/2p, 480M |__ Port 4: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
Pour désactiver un port : (ici le bus 2 port 4)
echo '2-4' |sudo tee /sys/bus/usb/drivers/usb/unbind
Pour le réactiver
echo '2-4' |sudo tee /sys/bus/usb/drivers/usb/bind
1. Initialiser l'usb-storage
cat /etc/modprobe.d/block_usb.conf install usb-storage /bin/true
2.Blacklister usb-storage
cat /etc/modprobe.d/blacklist.conf blacklist usb-storage blacklist uas
find /var/log/ -maxdepth 3 -name "*gz*" -ctime +5
Explication :
”/var/log” : indique le répertoire ou nous allons chercher. Nous aurions aussi pu indiquer “.” pour spécifier le répertoire où nous nous trouvons.
“name “*tar*”“ : Permet de nous afficher tous les fichiers qui possèdent “tar” dans leur nom. On s'aide des “*” qui nous permettent de dire “tout à partir du moment ou il y a tar”.
“maxdepth 3” : permet d'indiquer que nous allons descendre dans les arborescences sur trois niveaux. Le trois à été choisi car on descend rarement plus de 3 niveaux dans les logs mais cela peut être plus où peut ne pas être indiqué pour descendre au maximum.
“ctime +5” : c'est l'option la plus intéressante, avec celle-ci nous n'affichons que les données dont la création est plus vieille que 5 jours.
Avec cette dernière option, nous pouvons trier les fichiers selon la date, mais il existe d'autres options :
“ctime” pour “creation time” : permet de n'afficher que les fichiers dont la création est plus ou moins vieille que le nombre de jour donné.
“atime” pour “access time” : permet de n'afficher que les fichiers dont le dernier accès est plus ou moins vieux que le nombre de jour donné
“mtime” pour “modification time”: permet de n'afficher que les fichiers dont la dernière modification est plus ou moins vieille que le nombre de jour donné
Sur ces trois options, nous pouvons spécifier un nombre de jours précédé d'un ”+” pour “plus vieux que X jours” ou un “-” pour spécifier “moins vieux que”.
Quelques exemples :
Pour lister les fichiers qui ont été modifiés il y a moins de trois jours :
find -mtime -3
Pour lister les fichiers qui ont été ouverts (lus) il y a plus de 20 jours :
find -atime +20
On peut bien entendu combiner l'une des trois options avec les autres options vues un peu plus tôt dans le tutoriel.
Supprimer les fichiers
Maintenant que nous savons lister les fichiers, nous voulons agir sur les fichiers que nous avons trouvés avec la même ligne de commande. On peut pour cela ajouter “-exec ”. Par exemple si nous souhaitons supprimer les archives qui date de plus de 30 jours dans le dossier “/var/log”
find /var/log/ -maxdepth 3 -name "*gz*" -ctime +30 -exec rm -f {} \;
“{}“ permet d'afficher le nom du fichier trouvé à la place de ces deux accolades.
“\;” : permet de terminer la commande proprement
Nous sommes libre d'effectuer la commande que l'on souhaite après le ”-exec”.
systemd-analyze blame
ps -ef | grep "NOM_PROCESSUS" | awk '{ print $2 }'
Et sur une boucle si plusieurs kills à tuer
for proc in $(pgrep <process command>); do kill $proc; done
ragnarok@debian-SID-64bit-vbox-freeBSD:~$ lscpu | grep bit CPU op-mode(s): 32-bit, 64-bit Address sizes: 36 bits physical, 48 bits virtual
if [[ $(sed -n '/flags/{/lm/ p;q}' /proc/cpuinfo) ]] ; then echo "Ton CPU est un 64 bits" ; else echo "Non-compatible 64 bits" ; fi
Visualiser la liste des résolutions natives de votre système
$ xrandr
Ensuite, calculez un modèle pour la résolution qui vous convient
$ cvt 1920 1080
Ensuite, utilisez xrandr pour ajouter la résolution à l’affichage
$ xrandr --newmode "1368x768_60.00" 85.25 1368 1440 1576 1784 768 771 781 798 -hsync +vsync $ xrandr --addmode eDP-1 "1368x768_60.00"
Appliquer cette nouvelle résolution
$ xrandr --output eDP-1 --mode "1368x768_60.00"
xrandr Pour tester une configuration de suite
xrandr -s 1600x1024
Vérifier ses variables d'environnement, notamment XDG_RUNTIME_DIR
serveur@serveurProliant:~$ env LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd =40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;4 4:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01; 31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7 z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=0 1;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tb z=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31: *.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=0 1;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.m jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01; 35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.sv gz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;3 5:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vo b=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:* .flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35 :*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=0 0;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*. mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;3 6:*.spx=00;36:*.xspf=00;36: SSH_CONNECTION=192.168.1.10 51524 192.168.1.50 22 LANG=fr_FR.UTF-8 XDG_SESSION_ID=12 USER=serveur PWD=/home/serveur HOME=/home/serveur SSH_CLIENT=192.168.1.10 51524 22 SSH_TTY=/dev/pts/0 MAIL=/var/mail/serveur TERM=xterm SHELL=/bin/bash SHLVL=1 LOGNAME=serveur DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus XDG_RUNTIME_DIR=/run/user/1000 PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games _=/usr/bin/env
Puis cette variable
crontab -e
00 21 2 6 * XDG_RUNTIME_DIR=/run/user/1000 /ma/commande/De/Shell/Script
Voir aussi https://askubuntu.com/questions/23009/why-crontab-scripts-are-not-working
find date/ -print0 | xargs -0 -I '{}' touch -r '{}' -d '+2 day' '{}'
avec [u][b]date/[/b][/u] le répertoire à modifier
En pratique Création d'un répetoire à plusieurs niveaux et fichiers de test
ragnarok@Fenrir:~$ mkdir -p date/sousdate ragnarok@Fenrir:~$ touch date/test date/test2 date/sousdate/test3 date/sousdate/test4
On regarde les dates
ragnarok@Fenrir:~$ ls -lR date/ date/: total 4 drwxr-xr-x 2 ragnarok ragnarok 4096 juin 5 10:33 sousdate -rw-r--r-- 1 ragnarok ragnarok 0 juin 5 10:33 test -rw-r--r-- 1 ragnarok ragnarok 0 juin 5 10:33 test2 date/sousdate: total 0 -rw-r--r-- 1 ragnarok ragnarok 0 juin 5 10:33 test3 -rw-r--r-- 1 ragnarok ragnarok 0 juin 5 10:33 test4
On les avances de 2 jours
ragnarok@Fenrir:~$ find date/ -print0 | xargs -0 -I '{}' touch -r '{}' -d '+2 day' '{}'
On vérifie
ragnarok@Fenrir:~$ ls -lR date/ date/: total 4 drwxr-xr-x 2 ragnarok ragnarok 4096 juin 7 2019 sousdate -rw-r--r-- 1 ragnarok ragnarok 0 juin 7 2019 test -rw-r--r-- 1 ragnarok ragnarok 0 juin 7 2019 test2 date/sousdate: total 0 -rw-r--r-- 1 ragnarok ragnarok 0 juin 7 2019 test3 -rw-r--r-- 1 ragnarok ragnarok 0 juin 7 2019 test4
C'est OK
Note
touch -a -m -t 201512180130.09 fileName.ext
-a = accessed -m = modified -t = timestamp - use [[CC]YY]MMDDhhmm[.ss] time format
echo “$var” conservera la mise en page (retour à la ligne).
“Exécuter fsck manuellement.”
Note que bien que les incohérences du système de fichiers ont été corrigées mais il ne s’en est pas forcément tiré sans dommage (perte de fichiers ou de modifications de fichiers). Au mieux les inodes faisant partie de la liste chaînée orpheline corrompue étaient des fichiers temporaires qui auraient de tout façon été supprimés à l’arrêt ou au redémarrage, au pire ce sont des fichiers importants qui étaient en cours de modification. Le contenu des fichiers orphelins se retrouve dans le répertoire spécial /lost+found, mais sans les noms d’origine.
P H Debian fr
Afin de ne pas laisser de tty ou consoles actives lorsque l'on quitte le PC (physiquement), il est possible de demander la déconnexion automatique du tty et de ces consoles.
Pour cela utiliser la variable TMOUT à positionner en secondes.
Pour un user uniquement : Editer son .bashrc ou .profile et ajouter
# Export TMOUT # Délai inactivité avant deconnexion TMOUT=600
Vous serez déconnecté automatiquement au bout de 10 minutes (si 300, 5 minutes… ).
Très utile en cas de connexion ssh également, ça évite de laisse une connexion ouverte sur un serveur distant (surtout en root)….
Afin que ce paramètre soit pris en compte de suite, recharger votre .bashrc
source .bashrc
Si vous voulez appliquer ce paramètre à tous vos users : apporter cette modification sur ce fichier
sudo nano /etc/bash.bashrc
et
sudo source /etc/bash.bashrc
Connaitre l'utilisateur qui fait tourner un service
ps auxn ps auxnww
ps -eo euser,ruser,suser,fuser,f,comm,label
netstat -tulpan
Parse le fichier, récupère les mails, supprime les doublons et redirige la sortie standard via un fichier texte
$ grep -i -o '[A-Z0-9._%+-]\+@[A-Z0-9.-]\+\.[A-Z]\{2,4\}' inputMail.txt | sort -u > outputMail.txt
cat file.txt | awk '{split($0,a," : ") ; print "[[ "a[2] " | " a[1] "]]"}'
# dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs apt-get -y purge
find /etc/apt -type f -name '*.list' -exec bash -c 'echo -e "\n$1"; nl -ba "$1"' _ '{}' \;
grep -v "^#" /etc/apt/sources.list{,.d/*}
apt-cache policy | grep http | awk '{print $2 $3}' | sort -u
find /etc/apt -type f -name '*.list' | xargs cat | grep -v "^#" | grep -v '^ *$'
/usr/bin/time -f "\t%E real,\t%U user,\t%S sys, \t%P cpu" ls -Rls /
Scanner plusieurs IP
nmap 192.168.1.1 192.168.1.20 192.168.1.30 192.168.1.40
Scanner une plage d'IP
nmap 192.168.1.1-20 nmap 192.168.1.*
Scanner la totalité d'un réseau
nmap 192.168.1.0/24
Exclure un poste du scan
nmap 192.168.1.0/24 --exclude 192.168.1.5
Scann et recherche machine Up ou Down
nmap -sP 192.168.0.0/24
Afin de déterminer les paramètres à utiliser, lancer
$ xfconf-query -c xfce4-desktop -m
Et modifier de façon traditionnelle le wallpaper
$ xfconf-query -c xfce4-desktop -m Commencer à surveiller le canal « xfce4-desktop » : définir: /backdrop/screen0/monitoreDP-1/workspace0/last-image
Pour avoir toutes les options de xfce4-desktop
xfconf-query -c xfce4-desktop -l
Modifier instantanément le wallpaper
$ xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitoreDP-1/workspace0/last-image -s "/chemin/vers/le/dossier/du/fond-ecran.png"
Eviter les soucis de mise en page
alias alias glances='glances 2>/dev/null'
Nettoyer s'il y a des reliquats d'installation qui coincent
su - apt update
Lancer la réparation
dpkg --configure -a apt install -f
Finir ta mise à jour (éventuellement)
apt upgrade
Identifier sa clef USB
$ lsblk
ou
$ blkid
On doit voir alors une sortie de ce style “/dev/sdc1”
Démonter la clef si elle est montée
# umount /dev/sdXY
Réparer la clef USB
# fsck /dev/sdXY
Par défaut, lorsqu'une tâche cron est exécutée, cron envoie des notifications par courrier électronique au compte utilisateur.
Pour désactiver les notifications par e-mail, ajoutez
> /dev/null 2>&1
à la commande dans la tâche cron.
Cela redirige toute la sortie de la tâche cron vers le périphérique /dev/null.
Par exemple, la tâche cron suivante n'envoie pas de notifications par courrier électronique:
15 * * * Sun ${HOME}/bigtask.sh > /dev/null 2>&1
Pour reprendre la réception des notifications par e-mail des tâches cron, supprimez simplement > /dev/null 2>&1 de la commande.
Avec ffmpeg
parallel ffmpeg -i {} -qscale:a 0 {.}.mp3 ::: ./*.flac
Avec lame
#!/bin/bash for a in ./*.flac; do # give output correct extension OUTF="${a[@]/%flac/mp3}" # get the tags ARTIST=$(metaflac "$a" --show-tag=ARTIST | sed s/.*=//g) TITLE=$(metaflac "$a" --show-tag=TITLE | sed s/.*=//g) ALBUM=$(metaflac "$a" --show-tag=ALBUM | sed s/.*=//g) GENRE=$(metaflac "$a" --show-tag=GENRE | sed s/.*=//g) TRACKNUMBER=$(metaflac "$a" --show-tag=TRACKNUMBER | sed s/.*=//g) DATE=$(metaflac "$a" --show-tag=DATE | sed s/.*=//g) # stream flac into the lame encoder flac -c -d "$a" | lame -V0 --add-id3v2 --pad-id3v2 --ignore-tag-errors \ --ta "$ARTIST" --tt "$TITLE" --tl "$ALBUM" --tg "${GENRE:-12}" \ --tn "${TRACKNUMBER:-0}" --ty "$DATE" - "$OUTF" done
En une ligne
find . -iname "*.wma" -execdir bash -c 'NAME="{}" && ffmpeg -y -i "$NAME" -ab 192k "${NAME/.wma/.mp3}" && rm "$NAME"' \;
En script
#!/bin/bash for i in *.wma; do j="${i%.wma}" soundconverter -b -m audio/mpeg -s .mp3 "$j.wma" && rm -f "$j.wma" && echo "$i réencodé en mp3." done
for f in *.jpeg ; do convert $f -resize 50% new_$f; done
Avec systemd, nous avons obtenu journalctl qui permet facilement un filtrage à grain fin comme celui-ci:
sudo journalctl --since "2 days ago" sudo journalctl --since "2019-03-10" --until "2019-03-11 03:00" sudo journalctl -b # last boot sudo journalctl -k # kernel messages sudo journalctl -p er # by priority (emerg|alert|crit|err|warning|info|debug) sudo journalctl -u sshd # by unit sudo journalctl _UID=1000 # by user id
#!/bin/bash couleur_rouge () { echo -e "\e[91m $@ \033[0m" } echo "Une phrase avec un $(couleur_rouge mot) voilà"
Et pour le référenciel des couleurs et bien plus : https://misc.flogisoft.com/bash/tip_colors_and_formatting
grep installed /var/log/dpkg.log | grep <LE PAQUET>
Exemple, avec VLC
grep installed /var/log/dpkg.log | grep vlc 2022-01-26 16:39:29 status half-installed libvlccore9:amd64 3.0.16-1+b5 2022-01-26 16:39:29 status half-installed libvlc5:amd64 3.0.16-1+b5 2022-01-26 16:39:29 status half-installed vlc:amd64 3.0.16-1+b5 2022-01-26 16:39:29 status half-installed vlc-bin:amd64 3.0.16-1+b5 2022-01-26 16:39:29 status half-installed libvlc-bin:amd64 3.0.16-1+b5 2022-01-26 16:39:40 status half-installed vlc-plugin-base:amd64 3.0.16-1+b5 2022-01-26 16:39:41 status half-installed vlc-plugin-skins2:amd64 3.0.16-1+b5 2022-01-26 16:39:41 status half-installed vlc-plugin-qt:amd64 3.0.16-1+b5 2022-01-26 16:39:41 status half-installed vlc-plugin-video-output:amd64 3.0.16-1+b5 2022-01-26 16:41:11 status half-installed vlc-plugin-access-extra:amd64 3.0.16-1+b5 2022-01-26 16:41:11 status half-installed vlc-plugin-notify:amd64 3.0.16-1+b5 2022-01-26 16:41:11 status half-installed vlc-plugin-samba:amd64 3.0.16-1+b5 2022-01-26 16:41:11 status half-installed vlc-plugin-video-splitter:amd64 3.0.16-1+b5 2022-01-26 16:41:12 status half-installed vlc-plugin-visualization:amd64 3.0.16-1+b5 2022-01-26 16:41:54 status installed libvlccore9:amd64 3.0.16-1+b6 2022-01-26 16:41:54 status installed vlc-plugin-qt:amd64 3.0.16-1+b6 2022-01-26 16:42:48 status installed vlc-plugin-notify:amd64 3.0.16-1+b6 2022-01-26 16:42:48 status installed vlc-plugin-samba:amd64 3.0.16-1+b6 2022-01-26 16:42:49 status installed vlc-plugin-skins2:amd64 3.0.16-1+b6 2022-01-26 16:42:50 status installed vlc-plugin-video-splitter:amd64 3.0.16-1+b6 2022-01-26 16:42:50 status installed libvlc5:amd64 3.0.16-1+b6 2022-01-26 16:42:51 status installed vlc-plugin-visualization:amd64 3.0.16-1+b6 2022-01-26 16:42:51 status installed vlc-plugin-access-extra:amd64 3.0.16-1+b6 2022-01-26 16:42:53 status installed libvlc-bin:amd64 3.0.16-1+b6 2022-01-26 16:42:55 status installed vlc-bin:amd64 3.0.16-1+b6 2022-01-26 16:44:03 status installed vlc-plugin-video-output:amd64 3.0.16-1+b6 2022-01-26 16:44:04 status installed vlc-plugin-base:amd64 3.0.16-1+b6 2022-01-26 16:44:04 status installed vlc:amd64 3.0.16-1+b6 2022-01-26 16:44:05 status installed libvlc-bin:amd64 3.0.16-1+b6
awk '/^Upgrade:/{getline;d=$2" "$3}END{print d}' /var/log/apt/history.log
Pour connaître le réglage par défaut de la vérification de ta partition sda1 par exemple,
# LANG=C tune2fs -l /dev/sda1 | egrep -i "mount count|Check interval|Last|Next"
Pour lancer la vérification avec fsck tous les 20 montages de la partition sda1,
# tune2fs -c 20 /dev/sda1
Pour lancer la vérification avec fsck tous les 20 jours de la partition sda1,
# tune2fs -i 20d /dev/sda1
A défaut
#!/bin/sh chown -R www-data:www-data /var/www find /var/www -name "*" -type d -exec chmod 755 {} \; find /var/www -name "*" -type f -exec chmod 644 {} \;
echo; dpkg -l | awk '!/^rc/ && / linux-(c|g|h|i|lo|m|si|t)/{print $1,$2,$3,$4 | "sort -k3V | column -t"}' ; echo -e "\nNoyau courant : $(uname -mr)"
ii linux-image-5.10.0-10-amd64 5.10.84-1 amd64 ii linux-image-5.10.0-15-amd64 5.10.120-1 amd64 ii linux-image-5.10.0-17-amd64 5.10.136-1 amd64 ii linux-image-5.10.0-19-amd64 5.10.149-2 amd64 ii linux-image-amd64 5.10.149-2 amd64 Noyau courant : 5.10.0-19-amd64 x86_64
Avec xrand
$ xrandr | awk '/ connected/{print sqrt( ($(NF-2)/10)^2 + ($NF/10)^2 )/2.54" inches"}' 13,9615 inches
Avec python3
Le script
#!/usr/bin/env python3 import gi gi.require_version('Gdk', '3.0') from gi.repository import Gdk dsp = Gdk.Display.get_default() n_mons = dsp.get_n_monitors() print(("\t").join(["Screen", "width", "height", "diagonal\n"+32*"-"])) for i in range(n_mons): mon = dsp.get_monitor(i) mon_name = mon.get_model() w = mon.get_width_mm()/25.4 h = mon.get_height_mm()/25.4 d = ((w**2)+(h**2))**(0.5) print(("\t").join([mon_name]+[str(round(n, 1)) for n in [w, h, d]]))
L'output
$ python3 screensize.py Screen width height diagonal -------------------------------- eDP-1 12.2 6.9 14.0
# grub-reboot X # reboot now
Et X préciser l'entrée du grub sur laquelle rebooter
Très intéressante cette entrée dans le manuel, je l'avais zappée https://www.debian.org/releases/stable/amd64/install.fr.pdf
§ 6.4.3 Finaliser le système installé (à ce moment p. 59)
# apt install isenkram-cli
# isenkram-autoinstall-firmware
Connaître les architectures supportées
lscpu | head -n2
Architecture du système
dpkg --print-architecture
ou
arch
Ajout d'une architecture, ici 386
dpkg --add-architecture i386 apt update
Purge des paquets i386 puis suppression d'une architecture, ici 386
aptitude purge ~i~ri386 dpkg --remove-architecture i386 apt update
Lister les paquets installés, ici architecture i386
aptitude search ~i~ri386 aptitude search ~i~ri386aptitude search '~S ~i ~ri386' aptitude search '?narrow(?installed, ?architecture(i386))'
xrandr --output $(xrandr | grep -w connected | cut -f '1' -d ' ') --brightness 0.5
rename s/$/.jpg/ *
################### ## pgrep example ## ################### pgrep -x mysqld >/dev/null && echo "Process found" || echo "Process not found" pgrep -x httpd >/dev/null && echo "Process found" || echo "Process not found" ################### ## pidof example ## ################### pidof httpd >/dev/null && echo "Service is running" || echo "Service NOT running" pidof nginx >/dev/null && echo "Service is running" || echo "Service NOT running" ################ ## ps example ## ################ ps -C httpd >/dev/null && echo "Running" || echo "Not running" ps -C nginx >/dev/null && echo "Running" || echo "Not running"
Avec systemd
systemctl is-active --quiet <service name> || systemctl restart <service name> &