From fa21b1e2001eeef95e0317a842bc7fab73b12cd3 Mon Sep 17 00:00:00 2001 From: kyodev Date: Wed, 22 Nov 2017 20:33:37 +0100 Subject: [PATCH] getInfo 2.43.0 --- scripts/getInfo | 316 ++++++++++++++++++++--------------- scripts/getInfo_changelog.md | 10 +- 2 files changed, 188 insertions(+), 138 deletions(-) diff --git a/scripts/getInfo b/scripts/getInfo index 22cb88e..a527f65 100755 --- a/scripts/getInfo +++ b/scripts/getInfo @@ -1,7 +1,7 @@ #!/bin/bash -version=2.42.3 -date="21/11/2017" +version=2.43.0 +date="22/11/2017" projet="simpledeb" contact="IRC freenode ##sdeb ou https://framagit.org/kyodev/kyopages/issues/" script="getInfo" @@ -372,22 +372,23 @@ f_dspl_alert(){ # 21/11/2017 echo -en "$display\n" >> "$fileOutput" # flush fonction } - # conversion markdown pour affichage en console, $1 file à parser - # tout en bash pour regex par défaut non-greedy (non gourmand) comme sed ou gawk + # conversion markdown pour affichage en console, $1 file à parser, [$2=marge] margin left 2 espaces + # tout en bash regex par défaut non-greedy (non gourmand) comme sed ou gawk # contrainte markdown: # l'italique avec _ ou * n'est pas géré, trop d'interférences potentielles # liste niveau2: 3 ou 4 caractères, niveau3: 6 ou 8 caractères, puce * ou - -f_dspl_md(){ # 20/11/2017 - local display display2 ifs_origin ligne +f_dspl_md(){ # 22/11/2017 + local display display2 ifs_origin ligne margin if [ ! -f "$1" ]; then f__info "pas de rapport à afficher, vous devez lancer une analyse auparavant:" \ "$GREEN$script -l$BLUE ou afficher l'aide $GREEN$script -h" return 0 fi - if [ "$(stat -c %s $1)" -gt "100000" ]; then # taille en octets, > 100ko + if [ "$(stat -c %s $1)" -gt "100000" ]; then # si taille en octets > 100ko pager pager "$1" || less "$1" || more "$1" return fi + [ "$2" == "marge" ] && margin=" " display=$(< $1) display=${display//\`\`\`/---} # transforme ``` en ---, plus visibles # traitement par lignes, à là sed, obligatoire pour les titres # @@ -426,7 +427,7 @@ f_dspl_md(){ # 20/11/2017 # puces niveau 3 [[ "$ligne" =~ ^([[:space:]]{6,8})\*(.*)$ ]] && ligne=${BASH_REMATCH[1]}'◾ '${BASH_REMATCH[2]} [[ "$ligne" =~ ^([[:space:]]{6,8})-(.*)$ ]] && ligne=${BASH_REMATCH[1]}'◾ '${BASH_REMATCH[2]} - display2+="$ligne\n" + display2+="$margin""$ligne\n" done <<< "$display" IFS="$ifs_origin" echo -e "$display2" @@ -450,64 +451,72 @@ f_dspl_scandir(){ # 21/10/2017 echo -e "$text" >> "$fileOutput" # flush fonction } - # $1=liste fichier(s) à grepper, [$2]: largeur 1ère colonne &| ' nofile' &| ' novide' + # $1=liste fichier(s) à grepper, [$2]: largeur 1ère colonne &| nofile &| novide &| ligneVide # si 'nofile' pas d'énumération de fichier greppé, si aucun fichier retour 'nofile', - # concatène les fichiers, induit novide - # si novide pas d'indication vide, ex. cumul option: " 10 novide" bien que '10-novide-nofile' fonctionne -f_grep_file(){ # 19/11/2017 - local file var_temp display + ## concatène les fichiers, induit novide + # si novide pas d'indication vide, + # ex. cumul option: " 10 novide" '10-novide-nofile' fonctionne + # si ligneVide, pas de suppression des lignes vides + # grep -Ersv '^[[:blank:]]*#|^[[:blank:]]*$' file|dossier +f_grep_file(){ # 22/11/2017 + local file content display for file in $1; do - var_temp="$(grep -Ersv '^[[:blank:]]*#|^[[:blank:]]*$' $file)" + content=$( grep -Ersv '^[[:blank:]]*#|^[[:blank:]]*$' "$file") + [[ ${2,,} =~ lignevide ]] && content=$( grep -Ersv '^[[:blank:]]*#' "$file") [ -d "$file" ] && file+='/' # si répertoire, ajout / final - var_temp=${var_temp//$file} # pour esthétique, suppression de $file dans les noms de fichiers - [[ "$2" =~ nofile ]] || display+=" $file \n" # nom fichier greppé si $2 ne contient pas 'file' - if [ "$var_temp" ]; then - if [[ "$2" =~ [0-9] ]]; then # si $2 contient des chiffres, largeur, gawk - display+=$(gawk -v "larg=${2//[[:alpha:]]}" ' - { printf "%-"larg"s",$1; $1=""; printf "%s\n",$0 } - ' <<< "$var_temp") - display+="\n" #?? pk gawk n'honore pas \n final pour la dernière ligne ?! - else - display+="$var_temp\n" - fi - fi - if [[ ! "$2" =~ file ]]; then - [[ "$2" =~ novide || "$var_temp" ]] && display+=$'\n' || display+=" ‣ vide"$'\n' + content=${content//$file} # joli, suppression de $file dans les noms de fichiers en tête de ligne + if [[ "$2" =~ [0-9] ]]; then # si $2 contient des chiffres, largeur, gawk + content=$(gawk -v "larg=${2//[[:alpha:]]}" ' + { printf "%-"larg"s",$1; $1=""; printf "%s\n",$0 } + ' <<< "$content") fi +echo "***" +#[ -z "$content" ] && unset content +content=${content%%[[:space:]]} +echo -n "$content" +echo "***" + content+=$'\n' + [[ "$2" =~ nofile ]] || display+=" $file \n" # nom fichier greppé si $2 pas 'nofile' + [[ "$2" =~ novide || "$content" ]] && display+="$content"$'\n' || display+=" ‣ vide"$'\n' done - [ "$display" ] || display="nofile" # display vide, inscription 'nofile' + display=${display::-1} + [ "$display" ] || display="nofile" # si display vide, inscription 'nofile' echo -en "$display" } -f_help(){ # 06/11/2017 - printf "$BLUE" -cat << 'EOF' - ./getInfo : exécution normale, rapport markdown de la configuration - getInfo : exécution normale si script installé dans le système - - options: - -c : (catégorie) menu sélection catégorie d'analyse - -cs : catégorie système -cs : catégorie configuration - -cr : catégorie réseau -ca : catégorie analyse - -h : (help) affichage aide - -j : (journaux) analyse démarrage système, log Xorg, kernel et système, catégorie -ca - -l : (list) afficher le rapport markdown existant - -p : (paste) exporte le rapport markdown existant, durée standard du paste 7 jours - -tn : durée du paste de n jour(s) - -us : upgrade spécial du script (pas de mise à jour auto, maj du script en place) - - --ip : affiche ip publique (ipv4/ipv6), infos confidentielles, pas de rapport markdown - --mac : affiche les adresses Mac, infos confidentielles, pas de rapport markdown - --serial : affiche n° série disques, batterie et châssis - --ssid : affiche configurations ssid, infos confidentielles, pas de rapport markdown, - root et NetworkManager requis - - -i, --install : installation du script dans le système, root requis - -r, --remove : suppression du script dans le système, root requis - -u, --upgrade : upgrade script installé si maj possible - -v, --version : version du script, en ligne et en cours d'exécution -EOF -echo -e "$STD\n plus d'infos: $GREEN$urlNotice\n$STD" +f_help(){ # 22/11/2017 + local toDisplay ligne +toDisplay=( + "$GREEN ./getInfo$BLUE : exécution normale, rapport markdown de la configuration" + "$GREEN getInfo$BLUE : script installé dans le système" + "" + "$STD$BOLD options:$STD$BLUE" + " -c : (catégorie) menu sélection catégorie d'analyse" + " -cs : catégorie système -cs : catégorie configuration" + " -cr : catégorie réseau -ca : catégorie analyse" + " -h : (help) affichage aide" + " -j : (journaux) analyse démarrage système, log Xorg, kernel et système, catégorie -ca" + " -l : (list) afficher le rapport markdown existant" + " -p : (paste) exporte le rapport markdown existant, durée standard du paste 7 jours" + "" + " --ip : affiche ip publique (ipv4/ipv6), pas de rapport markdown" + " --mac : affiche les adresses Mac, pas de rapport markdown" + " pas de rapport markdown, $RED ROOT$BLUE requis:" + " --serial : affiche n° série disques, batterie et châssis" + " --ssid : affiche configurations ssid, infos confidentielles,$RED NetworkManager$BLUE requis" + "" + " -tn : durée du paste de n jour(s)" + " -us : upgrade spécial du script (pas de mise à jour automatique, maj du script en place)" + "" + " -i, --install : installation du script dans le système, root requis" + " -r, --remove : suppression du script dans le système, root requis" + " -u, --upgrade : upgrade script installé si maj possible" + " -v, --version : version du script, en ligne et en cours d'exécution" +) + for ligne in "${toDisplay[@]}"; do + echo -e "$ligne" + done + echo -e "$STD\n plus d'infos: $GREEN$urlNotice\n$STD" } fi_batt(){ # 10/11/2017 @@ -522,6 +531,39 @@ fi_batt(){ # 10/11/2017 unset text } +fi_conf(){ # 22/11/2017 + local conf toScrut=( + /etc/sysctl.conf + '/etc/sysctl.d/*.conf' + '/etc/hostname' # debian + /etc/sysconfig/network # fedora? + /etc/HOSTNAME # suse + # /etc/os-release # nouveau standard systemd/freedesktop + /etc/vconsole.conf + # /etc/locale.conf # voir fi_locale + '/etc/modules-load.d/*.conf' + '/etc/tmpfiles.d/*.conf' + '/etc/binfmt.d/*.conf' + # /etc/machine-id # voir fi-serial + /etc/machine-info + ) +#conf=$( f_grep_file "${toScrut[@]}" ) +#f_grep_file "${toScrut[*]}" "nofile novide" +echo "----" +#f_grep_file "/etc/apt/s" "nofile esc" +#f_grep_file "/etc/apt/sources.list.d" "nofile" +f_grep_file "/etc/apt/sources.list /etc/apt/sources.list.d/* /etc/toto" "" +echo "----" +#f_grep_file "/etc/apt/sources.list /etc/apt/sources.list.d/* /etc/toto" "nofile" +#echo "----" +#echo $conf +### + text="## fichiers conf divers \n\n" + f_display "conf" "cmd" "grep " + echo -en "$text\n" >> "$fileOutput" + unset text +} + fi_cpu(){ # 19/11/2017 local cpu_flags text iflag var_temp qte_flags text_flags="" pluriel cpu_flags=$(sed -n 's/^flags.*: \(.*\)$/\1/p;' /proc/cpuinfo | sed -n '1p'| \ @@ -1801,46 +1843,39 @@ fi_reseau(){ # 20/11/2017 unset text } -fi_serial(){ # 16/11/2017 - local file="/tmp/$$-$RANDOM-fi_serial" chassis_serial text +fi_serial(){ #v2 22/11/2017 + local chassis_serial machineId text [ "$fg_nb_disk" ] || figet_disk [ "$fg_nb_batt" ] || figet_batt - f__sudo "cat /sys/class/dmi/id/chassis_serial 2>/dev/null > $file ; \ - chown $user_: $file" - chassis_serial="$(cat $file 2>/dev/null)" - rm "$file" + chassis_serial=$( cat /sys/class/dmi/id/chassis_serial 2>/dev/null ) + machineId=$( cat /etc/machine-id 2>/dev/null ) ### - text="$BOLD\n N° Série \n\n$STD" - [ "$fg_disk_serial" ] && text+="$GREEN * Disques: \n" + [ "$machineId" ] && text+="\n$BOLD ID MAchine: $BLUE$machineId \n\n$STD" + text+="$BOLD* N° Série: \n\n$STD" + [ "$fg_disk_serial" ] && text+="$GREEN * Disques: \n" [ "$fg_disk_serial" ] && text+="$BLUE$fg_disk_serial \n\n$STD" - [ "$fg_batt_serial" ] && text+="$GREEN * Batteries \n" + [ "$fg_batt_serial" ] && text+="$GREEN * Batteries \n" [ "$fg_batt_serial" ] && text+="$BLUE$fg_batt_serial \n\n$STD" - [ "$chassis_serial" ] && text+="$GREEN * Chassis \n" + [ "$chassis_serial" ] && text+="$GREEN * Chassis \n" [ "$chassis_serial" ] && text+="$BLUE$chassis_serial \n\n$STD" - echo -en "$text\n" >> "$fileOutput" + echo -en "$text" unset text } -fi_ssid(){ # 09/11/2017 - [ $( f__which nmcli ) ] || f__error "NetworkManager requis" - local nm_ssid file="/tmp/$$-$RANDOM-fi_ssid" text -# nm_ssid="$(grep -Ev '#|^$' /etc/NetworkManager/system-connections/*)" - [ "$EUID" -eq 0 ] || echo - f__sudo "grep -Ev '^[[:blank:]]*#|^[[:blank:]]*$' /etc/NetworkManager/system-connections/* > $file ; \ - chown $user_: $file" - if [ "$?" != "0" ]; then - f__info "\n la consultation des connections NetworkManager$RED a échoué$BLUE (droits root requis, échec authentification?)" - return 1 - fi - nm_ssid="$(cat $file 2>/dev/null)" - rm "$file" +fi_ssid(){ #v2 22/11/2017 + local nm_ssid text + local fileOutput="/tmp/$RANDOM-$RANDOM" # ré-assigne sortie pour f_display + [ "$EUID" -eq 0 ] || f__error "Root requis" + [ $( f__which nmcli ) ] || f__error "NetworkManager requis" + nm_ssid=$( f_grep_file "/etc/NetworkManager/system-connections/*" "ligneVide" ) ### - f__info "la$RED clé du réseau wifi étant visible$STD, aucun rapport n'a été créé" - text="$BOLD configuration(s) ssid networkmanager \n\n" - text+="$GREEN""grep -Ehv '#|^$' /etc/NetworkManager/system-connections/*$STD \n\n" - text+="$nm_ssid \n\n" + f__info "$RED""Attention:$BLUE la clé du réseau wifi est visible" + text="## configuration(s) ssid networkmanager \n\n" + f_display "nm_ssid" "cmd" "grep -Ersv '#|^$' /etc/NetworkManager/system-connections/*" echo -en "$text\n" >> "$fileOutput" unset text + f_dspl_md "$fileOutput" "marge" + rm "$fileOutput" } fi_system_analyse(){ #v 21/11/2017 @@ -1915,7 +1950,7 @@ fi_system_analyse(){ #v 21/11/2017 unset text } -fi_systeme(){ # 21/11/2017 +fi_systeme(){ # 22/11/2017 local mbr uname bootImage initDaemon serverX shells lastboot uptime charge pluriel text local alimentation alim_total ish ifs_origin ligne date_install microcode local alert_SLiM alert_microcode @@ -1924,7 +1959,7 @@ fi_systeme(){ # 21/11/2017 bootImage="$(gawk '/BOOT_IMAGE/ {print $1}' /proc/cmdline)" bootImage="$(gawk '{print $1}{i=2; while (i <= NF-1) { print " ",$i; i++}}' /proc/cmdline)" initDaemon="$(ps -p1 | gawk 'FNR==2 {print $4}')" #? ps -ax | gawk '$1==1' ou ps -p1 | gawk '$1==1' - [ "$initDaemon" == "systemd" ] && initDaemon=$( systemd --version ) + [ $( f__which systemd )] && initDaemon=$( systemd --version ) initDaemon=${initDaemon%%[[:space:]]+*} initDaemon=${initDaemon/systemd/systemd version} [ "$ENV_SSH" ] && serverX="n/a (ssh)" || serverX="$XDG_SESSION_TYPE" # normalement retourne wayland @@ -2395,7 +2430,7 @@ figet_de(){ #v 21/11/2017 # thanks neofetch # $fg_disk_part_fixe_m, $fg_disk_part_amov_m : liste partitions montées, fixes ou amovibles # $fg_disk_part_swap : liste partitions swap # $fg_disk_part_fixe_nm, $fg_disk_part_amov_nm : liste partitions non montées, fixes ou amovibles -figet_disk(){ #v2 07/11/2017 +figet_disk(){ #v2 22/11/2017 local size type list_id idisk lsblk vendor model rev serial unset fg_disk_fixe fg_disk_amov # bug printf: caractères accentués diminuent 1 caractère sur arguments suivants, ajouter autant d'espaces @@ -2427,6 +2462,7 @@ figet_disk(){ #v2 07/11/2017 fi done [ "$fg_disk_table" ] && fg_disk_table=${fg_disk_table::-1} # suppression dernier $'\n' + [ "$fg_disk_serial" ] && fg_disk_serial=${fg_disk_serial::-1} # suppression dernier $'\n' # nb de disques (fixe+amovible), peut servir d'indicateur fonction déja appelée fg_nb_disk="$(tr ' ' '\n' <<< "$fg_disk_fixe$fg_disk_amov" | grep -c .)" # séquences partitions fixes, montées (m) et non montées (nm) @@ -3248,6 +3284,57 @@ fscript_update(){ # 06/11/2017 rm -rf "$dirTemp/" } +prg_init(){ # 22/11/2017 + PATH='/usr/sbin:/usr/bin:/sbin:/bin' + TERM=xterm + IFS=$' \t\n' + export PATH TERM IFS + + # aucune erreur visible, prévoir option --debug + # exec 2>/dev/null + # exec 2>"$script.log" # à tester + + # test bash v4 + bashVersion=( $( grep -o 'version 4' <<< $( bash --version ) ) ) + [ ${bashVersion[1]} -ge 4 ] || f__error "bash v4 requis" \ + "version installée: $( grep -m1 'version' <<< $(bash --version) )" + + # test /proc + [ -e /proc/cpuinfo ] || f__error "/proc/cpuinfo non trouvé" "/proc ne doit pas être monté" + + # test OS + OS=$(uname -s) + [[ ${OS,,} =~ linux || ${OS,,} =~ gnu ]] && OS="linux" + [[ ${OS,,} =~ bsd || ${OS,,} =~ Bitrig || ${OS,,} =~ DragonFly ]] && OS="bsd" + [[ ${OS,,} =~ cygwin || ${OS,,} =~ msys || ${OS,,} =~ mingw ]] && OS="windows" + [ "$OS" == "bsd" ] && f__info "ce script pour Linux n'est pas prévu de fonctionner sur BSD..." + [ "$OS" == "windows" ] && f__info "ce script pour Linux n'est pas prévu de fonctionner sous windows..." + [ "$OS" != "linux" ] && f__error "Linux requis" + # recherche wayland + [ "$(ps -ef | grep -c 'wayland')" -gt 1 ] && wayland="wayland" + # essai détection erreur No protocol specified, Can't open display :0 (root Fedora) + if [[ "$wayland" && "$EUID" -eq 0 ]]; then + f__info "Wayland ne permet pas de lancer des applications graphiques en Root" \ + "seul l'utilisateur ayant démarré le serveur X peut permettre des connexions à celui-ci" \ + "le plus simple est de redémarrer le script en utilisateur pour déterminer certaines propriétés graphiques ou essayer: \n" \ + "$GREEN""xhost si:localuser:root$BLUE pour autoriser,$GREEN xhost -si:localuser:root$BLUE pour enlever cette autorisation" + fi + + # test SSH + [[ "$SSH_CLIENT" || "$SSH_CLIENT" || "$SSH_CLIENT" ]] && ENV_SSH="ssh" + # détermination user derrière root + f__user + retourFUser="$?" + [ "$retourFUser" -eq 1 ] && f__error "user indéterminé" \ + "pour contourner, lancer le script avec:\n$GREEN USER_INSTALL= $0 \n" + if [ "$retourFUser" -eq 2 ]; then + [ "$EUID" -eq 0 ] && user_="root" || f__error "user détecté, mais pas de home: /home/$user_" + f__info "user root" + fi + + # requis pour fonctionnement programme + f__requis "gawk wget ip>iproute2 lspci>pciutils wc>coreutils" || exit 1 +} prg_1(){ # début echo > "$fileOutput" chown $user_: "$fileOutput" &>/dev/null @@ -3263,7 +3350,7 @@ prg_2(){ # traitements principaux 21/11/2017 $i done fi - if [[ "$1" == all || "$1" =~ c ]]; then #configuration #debian, packages -cc + if [[ "$1" == all || "$1" =~ c ]]; then #configuration #debian, packages -cc fi_conf echo -e "# ▷ Configuration \n\n" >> "$fileOutput" for i in fi_locale fi_vrms fi_packagers ; do echo -n "•" @@ -3324,49 +3411,6 @@ function display_menu { reply="$(sed 's/-call/all/' <<< $reply)" exec $0 "$reply" } -prg_init(){ # 21/11/2017 - PATH='/usr/sbin:/usr/bin:/sbin:/bin' - TERM=xterm - IFS=$' \t\n' - export PATH TERM IFS - # aucune erreur visible, prévoir option --debug - # exec 2>/dev/null - # exec 2>"$script.log" # à tester - # test bash v4 - bashVersion=( $( grep -o 'version 4' <<< $( bash --version ) ) ) - [ ${bashVersion[1]} -ge 4 ] || f__error "bash v4 requis" \ - "version installée: $( grep -m1 'version' <<< $(bash --version) )" - # test /proc - [ -e /proc/cpuinfo ] || f__error "/proc/cpuinfo non trouvé" "/proc ne doit pas être monté" - # test OS - OS=$(uname -s) - [[ ${OS,,} =~ linux || ${OS,,} =~ gnu ]] && OS="linux" - [[ ${OS,,} =~ bsd || ${OS,,} =~ Bitrig || ${OS,,} =~ DragonFly ]] && OS="bsd" - [[ ${OS,,} =~ cygwin || ${OS,,} =~ msys || ${OS,,} =~ mingw ]] && OS="windows" - [ "$OS" == "bsd" ] && f__info "ce script pour Linux n'est pas prévu de fonctionner sur BSD..." - [ "$OS" == "windows" ] && f__info "ce script pour Linux n'est pas prévu de fonctionner sous windows..." - [ "$OS" != "linux" ] && f__error "Linux requis" - # recherche wayland - [ "$(ps -ef | grep -c 'wayland')" -gt 1 ] && wayland="wayland" - # essai détection erreur No protocol specified, Can't open display :0 (root Fedora) - if [[ "$wayland" && "$EUID" -eq 0 ]]; then - f__info "Wayland ne permet pas de lancer des applications graphiques en Root" \ - "seul l'utilisateur ayant démarré le serveur X peut permettre des connexions à celui-ci" \ - "le plus simple est de redémarrer le script en utilisateur pour déterminer certaines propriétés graphiques ou essayer: \n" \ - "$GREEN""xhost si:localuser:root$BLUE pour autoriser,$GREEN xhost -si:localuser:root$BLUE pour enlever cette autorisation" - fi - # test SSH - [[ "$SSH_CLIENT" || "$SSH_CLIENT" || "$SSH_CLIENT" ]] && ENV_SSH="ssh" - # détermination user derrière root - f__user - retourFUser="$?" - [ "$retourFUser" -eq 1 ] && f__error "user indéterminé" \ - "pour contourner, lancer le script avec:\n$GREEN USER_INSTALL= $0 \n" - if [ "$retourFUser" -eq 2 ]; then - [ "$EUID" -eq 0 ] && user_="root" || f__error "user détecté, mais pas de home: /home/$user_" - f__info "user root" - fi -} ######## début script / initialisation @@ -3375,8 +3419,6 @@ f__affichage # tests au démarrage prg_init - # requis pour fonctionnement programme -f__requis "gawk wget ip>iproute2 lspci>pciutils wc>coreutils" || exit 1 options=$@ # traitement option paramètres @@ -3425,8 +3467,8 @@ for j in $options; do case $j in -t | --test ) prg_1 "$*" - echo -n "." - fi_graph + echo -n "•" + fi_conf exit ;; # test -c* | all ) [ "$j" == "-c" ] && exec $0 "menu" diff --git a/scripts/getInfo_changelog.md b/scripts/getInfo_changelog.md index f104e05..a07d669 100644 --- a/scripts/getInfo_changelog.md +++ b/scripts/getInfo_changelog.md @@ -3,9 +3,17 @@ * f__wcv, f_display_grep, f_dspl_md, f__wget_test, fscript_get_version, fscript_update * ! f__requis, fscript_install, f__scandir +## 2.43.0 22/11/2017 + +* nouveau: fi_serial, machine ID si présent +* révision: f_help, nouvelle manière afficher +* fix: fi_serial, fi_ssid, pas d'utilisation fichier MD +* fix: f_grep_file, protection espaces dans nom de fichier (NM!..) +* fix: fi_systeme, erreur sous fedora + ## 2.42.3 21/11/2017 -* révision: wayland, wayland/root, évolution wayland si plus de xprop, xrandr, xdpyinfo... +* révision: wayland, wayland/root, évolution wayland si plus de xprop, xrandr, xdpyinfo... +70lignes pour ça, environ! * révision: fi_system, figet_de, fi_graph, figet_screen, fi_system_analyse prise en compte wayland * révision: figet_wm, + compositor si connu * révision: fi_log_xorg, + emplacement log sous gdm3 X11 (nouveau sous buster?), cmd et info adaptés