Outils pour utilisateurs

Outils du site


php-bash:aide-memoire

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
php-bash:aide-memoire [2020/01/12 18:02] – [Récupérer les mails d’un fichier sous Linux] crustphp-bash:aide-memoire [2023/12/31 12:30] (Version actuelle) – [Rebooter sur une entrée grub de son choix] cyrille
Ligne 1: Ligne 1:
 +~~LASTMOD~~
 +
 ====== Aide mémoire Linux ====== ====== Aide mémoire Linux ======
 +
 +===== Pourquoi ne pas lancer des applis X via le compte root (si non prévues) =====
 +
 +
 +__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__
 +
 +  * https://bugzilla.gnome.org//show_bug.cgi?id=772875#c5
 +  * https://wiki.archlinux.org/title/Running_GUI_applications_as_root
 +
  
 Quelques liens : Quelques liens :
Ligne 10: Ligne 35:
   * [[http://www.serveur-linux.info/2012/01/depot-personnalise-paquets-debian/|Dépôt personnalisé paquet Debian]]   * [[http://www.serveur-linux.info/2012/01/depot-personnalise-paquets-debian/|Dépôt personnalisé paquet Debian]]
   * [[https://www.cyberciti.biz/linux-news/linux-kernel-5-0-released-how-to-install/|Compiler un kernel 5]]   * [[https://www.cyberciti.biz/linux-news/linux-kernel-5-0-released-how-to-install/|Compiler un kernel 5]]
 +  * [[https://www.cyberciti.biz/faq/linux-unix-creating-a-manpage/|Créer ses pages de man]]
 +  * [[http://www.pingouin-land.com/howto/Man-Page.html|Structuration d'une page de man]]
 +  * [[http://www.linuxfocus.org/Francais/November2003/article309.shtml|Structuration d'une page de man]]
 +  * [[https://www.cyberciti.biz/faq/redirecting-stderr-to-stdout/|Gestion des redirections]]
 +
 +-----
 +__**Creation de paquets debians**__
 +
 +  *[[ https://vincent.bernat.ch/fr/blog/2016-empaquetage-debian-empirique|Empaquetage empirique ]]
 +  *[[ https://www.debian.org/doc/debian-policy/#document-ch-maintainerscripts|Debian Policy Manual ]]
 +  *[[ https://www.debian.org/doc/debian-policy/ch-archive.html#s-subsections| Section / priority]]
 +  *[[https://www.debian.org/doc/manuals/debmake-doc/ch05.en.html#control| DEBIAN CONTROL]]
 +  *[[https://manpages.debian.org/jessie/devscripts/debchange.1.fr.html | Debchange]]
 +  *[[ https://linuxhint.com/debian-package-creation-howto/Debian Package Creation HowTo| ]]
 +  *[[https://www.debian.org/doc/manuals/maint-guide/dother.fr.html | Chapitre 5. Autres fichiers dans le répertoire debian]]
 +  *[[ https://www.debian.org/doc/manuals/maint-guide/dreq.fr.html#customrules| Chapitre 4. Fichiers nécessaires dans le répertoire debian]]
 +  *[[https://www.cyberciti.biz/faq/linux-unix-creating-a-manpage/|Creer page de man]]
  
    
Ligne 15: Ligne 57:
   *[[https://fr.wikibooks.org/wiki/Programmation_Bash|Programmation BASH]]   *[[https://fr.wikibooks.org/wiki/Programmation_Bash|Programmation BASH]]
   *[[https://bash.cyberciti.biz/guide/Main_Page|Linux Shell Scripting Tutorial (LSST) v2.0 ]]   *[[https://bash.cyberciti.biz/guide/Main_Page|Linux Shell Scripting Tutorial (LSST) v2.0 ]]
 +  *[[http://www.dartmouth.edu/~rc/classes/ksh/index.html|Shell]]
 +
 +===== BASH et les chaines de caractères ====
 +  * [[https://www.supinfo.com/articles/single/4814-manipulation-chaine-caracteres-bash|Manipulation de chaine de caractères en BASH]]
 +  * [[https://abs.traduc.org/abs-5.0-fr/ch09s02.html|Manipuler les chaines]]
 +  * [[https://www.tutorialspoint.com/unix/unix-string-operators.htm|Unix / Linux - Shell String Operators Example]]
 +
 =====Perte mot de passe root===== =====Perte mot de passe root=====
  
Ligne 191: Ligne 240:
 =====Bash : recursif===== =====Bash : recursif=====
  
-<code bash>#!/bin/sh+<code bash>#!/bin/bash
  
 dossierDeTravail="/home/serveur"; dossierDeTravail="/home/serveur";
Ligne 537: Ligne 586:
  
 Parse le fichier, récupère les mails, supprime les doublons et redirige la sortie standard via un fichier texte Parse le fichier, récupère les mails, supprime les doublons et redirige la sortie standard via un fichier texte
-<code bash>  + 
- grep -iEo ‘[a-z.0-9-_]{1,}@[a-z0-9-_]*.[-a-z0-9-_]*.*[a-z]{2,4}’ fichierDepart.txt sort uniq fichierMail.txt</code>+<code bash>grep -i -o '[A-Z0-9._%+-]\+@[A-Z0-9.-]\+\.[A-Z]\{2,4\}' inputMail.txt | sort -u > outputMail.txt</code> 
 + 
 +===== Inverse un motif dans un fichier selon des patterns ===== 
 +<code bash>cat file.txt | awk '{split($0,a," : ") ; print "[[ "a[2] " | "  a[1] "]]"}'</code> 
 + 
 +===== Supprimer les kernels non utilisés ===== 
 + 
 +<code bash># dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs apt-get -y purge</code> 
 + 
 + 
 + 
 +===== Lister les repo d'apt et les sources.list ===== 
 +<code bash> find /etc/apt -type f -name '*.list' -exec bash -c 'echo -e "\n$1"; nl -ba "$1"' '{}' \;</code> 
 + 
 +<code bash>grep -v "^#" /etc/apt/sources.list{,.d/*}</code> 
 + 
 +<code bash>apt-cache policy | grep http | awk '{print $2 $3}' | sort -u</code> 
 + 
 +<code bash>find /etc/apt -type f -name '*.list' | xargs cat | grep -v "^#" | grep -v '*$'</code> 
 +===== Temps d'execution d'un script et charge processeur ===== 
 + 
 +<code bash>/usr/bin/time -f "\t%E real,\t%U user,\t%S sys, \t%P cpu" ls -Rls /</code> 
 + 
 +===== nmap ===== 
 + 
 + 
 +Scanner plusieurs IP 
 +<code bash>nmap 192.168.1.1 192.168.1.20 192.168.1.30 192.168.1.40</code> 
 + 
 +Scanner une plage d'IP 
 +<code bash>nmap 192.168.1.1-20 
 +nmap 192.168.1.*</code> 
 + 
 +Scanner la totalité d'un réseau 
 +<code bash>nmap 192.168.1.0/24</code> 
 + 
 + 
 +Exclure un poste du scan 
 +<code bash>nmap 192.168.1.0/24 --exclude 192.168.1.5</code> 
 + 
 +Scann et recherche machine Up ou Down 
 +<code bash>nmap -sP 192.168.0.0/24</code> 
 + 
 +===== xfce4 : changer fond écran ligne de commande ===== 
 + 
 + 
 +Afin de déterminer les paramètres à utiliser, lancer 
 +<code bash>$ xfconf-query -c xfce4-desktop -m</code> 
 + 
 +Et modifier de façon traditionnelle le wallpaper 
 + 
 +{{ :php-bash:2020-05-09_10-47.png?direct&400 |}} 
 +<code bash> 
 +$ xfconf-query -c xfce4-desktop -m 
 +Commencer à surveiller le canal « xfce4-desktop » : 
 + 
 +définir: /backdrop/screen0/monitoreDP-1/workspace0/last-image</code> 
 + 
 + 
 +Pour avoir toutes les options de xfce4-desktop 
 +<code bash>xfconf-query -c xfce4-desktop -l</code> 
 + 
 +Modifier instantanément le wallpaper 
 +<code bash>$ xfconf-query  -c xfce4-desktop -p /backdrop/screen0/monitoreDP-1/workspace0/last-image -s "/chemin/vers/le/dossier/du/fond-ecran.png"</code>  
 + 
 + 
 + 
 +===== glances  ===== 
 +Eviter les soucis de mise en page 
 +<code bash>alias  
 +alias glances='glances 2>/dev/null'</code> 
 + 
 +===== Mise à jour cassée ou interrompue ===== 
 +Nettoyer s'il y a des reliquats d'installation qui coincent 
 +<code | download> 
 +su -  
 +apt update 
 +</code> 
 + 
 +Lancer la réparation 
 +<code | download> 
 +dpkg --configure -a 
 +apt install -f 
 +</code> 
 + 
 +Finir ta mise à jour (éventuellement) 
 +<code | download> 
 +apt upgrade 
 +</code> 
 + 
 +===== Réparer une clef USB ===== 
 + 
 + 
 +Identifier sa clef USB 
 +<code | download> 
 +$ lsblk 
 +</code> 
 +ou 
 +<code | download> 
 +$ blkid 
 +</code> 
 +On doit voir alors une sortie de ce style "/dev/sdc1" 
 + 
 +Démonter la clef si elle est montée 
 +<code | download> 
 +# umount /dev/sdXY 
 +</code> 
 + 
 +Réparer la clef USB 
 +<code | download> 
 +# fsck /dev/sdXY 
 +</code> 
 + 
 + 
 +===== Crontab sans notification mail ===== 
 + 
 +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<code> 
 +> /dev/null 2>&
 +</code> à 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: 
 + 
 +<code> 
 +15 * * * Sun     ${HOME}/bigtask.sh > /dev/null 2>&
 +</code> 
 + 
 +Pour reprendre la réception des notifications par e-mail des tâches cron, supprimez simplement **> /dev/null 2>&1** de la commande. 
 + 
 + 
 + 
 +===== FLAC TO MP3 ===== 
 + 
 +**Avec ffmpeg** 
 +<code> 
 +parallel ffmpeg -i {} -qscale:a 0 {.}.mp3 ::: ./*.flac 
 +</code> 
 + 
 + 
 +**Avec lame** 
 + 
 +<code> 
 +#!/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 
 +</code> 
 + 
 + 
 +===== WMA TO MP3 ===== 
 + 
 +**En une ligne** 
 +<code>find . -iname "*.wma" -execdir bash -c 'NAME="{}" && ffmpeg -y -i "$NAME" -ab 192k "${NAME/.wma/.mp3}" && rm "$NAME"' \;</code> 
 + 
 +**En script** 
 + 
 + 
 +<code | download> 
 +#!/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 
 +</code> 
 +===== Redimensionner des images ===== 
 + 
 +<code> 
 +for f in *.jpeg ; do convert $f -resize 50% new_$f; done 
 +</code> 
 + 
 + 
 +===== Chercher [dansles logs ===== 
 + 
 +Avec systemd, nous avons obtenu journalctl qui permet facilement un filtrage à grain fin comme celui-ci: 
 + 
 +<code> 
 +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 
 +</code> 
 +===== Fonction bash pour la gestion des couleurs ===== 
 + 
 +<code | download> 
 + 
 +#!/bin/bash 
 + 
 +couleur_rouge () { 
 +    echo -e "\e[91m $@ \033[0m" 
 +}  
 + 
 +echo  "Une phrase avec un $(couleur_rouge mot) voilà" 
 +</code> 
 + 
 +Et pour le référenciel des couleurs et bien plus : https://misc.flogisoft.com/bash/tip_colors_and_formatting 
 +  
 + 
 +===== Retrouver la date de mise à jour d'un logiciel ===== 
 + 
 + 
 +<code | download> 
 +grep installed /var/log/dpkg.log | grep <LE PAQUET> 
 +</code> 
 + 
 +Exemple, avec VLC 
 + 
 + 
 +<code | download> 
 +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 
 + 
 +</code> 
 + 
 + 
 +===== Retrouver la date de mise à jour d'un logiciel ===== 
 + 
 +<code | download> 
 +awk '/^Upgrade:/{getline;d=$2" "$3}END{print d}' /var/log/apt/history.log 
 +</code> 
 + 
 + 
 +===== fsck : régler le laps de temps de verif système ===== 
 +Pour  connaître le réglage par défaut de la vérification de ta partition sda1 par exemple, 
 + 
 + 
 +<code | download> 
 +    # LANG=C tune2fs -l /dev/sda1 | egrep -i "mount count|Check interval|Last|Next" 
 +</code> 
 + 
 +Pour lancer la vérification avec fsck tous les 20 montages de la partition sda1, 
 + 
 + 
 +<code | download> 
 +    # tune2fs -c 20 /dev/sda1 
 +</code> 
 + 
 +Pour lancer la vérification avec fsck tous les 20 jours de la partition sda1, 
 + 
 +<code | download> 
 +    # tune2fs -i 20d /dev/sda1 
 +</code> 
 + 
 + 
 +===== Droits sur rep de pub web ===== 
 + 
 +A défaut  
 + 
 +<code | download> 
 +#!/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 {} \; 
 +</code> 
 + 
 +===== Lister les noyaux ===== 
 +<code | download> 
 +echo; dpkg -l | awk '!/^rc/ && / linux-(c|g|h|i|lo|m|si|t)/{print $1,$2,$3,$| "sort -k3V | column -t"}' ; echo -e "\nNoyau courant : $(uname -mr)" 
 +</code> 
 +<code> 
 +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 
 +</code> 
 + 
 + 
 +===== Connaître son screensize ===== 
 + 
 +**Avec xrand** 
 +<code download> 
 +$ xrandr awk '/ connected/{print sqrt( ($(NF-2)/10)^2 + ($NF/10)^2 )/2.54" inches"}' 
 +13,9615 inches 
 +</code> 
 + 
 +**Avec python3** 
 + 
 +Le script 
 +<code | download> 
 +#!/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]])) 
 +</code> 
 + 
 +L'output 
 + 
 +<code | download> 
 +$ python3 screensize.py  
 +Screen width height diagonal 
 +-------------------------------- 
 +eDP-1 12.2 6.9 14.0 
 +</code> 
 + 
 + 
 +===== Rebooter sur une entrée grub de son choix ===== 
 + 
 +<code | download> 
 +# grub-reboot X 
 +# reboot now 
 +</code> 
 + 
 +Et X  préciser l'entrée du grub sur laquelle rebooter 
 + 
 + 
 +=====  Détection & installation des microprogrammes manquants  ===== 
 + 
 +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) 
 + 
 +<code | download> 
 +# apt install isenkram-cli 
 +</code> 
 + 
 + 
 +<code | download> 
 +# isenkram-autoinstall-firmware 
 +</code> 
 + 
  
php-bash/aide-memoire.1578848569.txt.gz · Dernière modification : 2020/01/12 18:02 de crust