diff --git a/scripts/getInfo b/scripts/getInfo index 91619cd..b4f9f74 100755 --- a/scripts/getInfo +++ b/scripts/getInfo @@ -1,7 +1,7 @@ #!/bin/bash -version=2.62.0 -date="11/12/2017" +version=2.63.0 +date="12/12/2017" projet="simpledeb" contact="IRC freenode ##sdeb ou https://framagit.org/kyodev/kyopages/issues/" script="getInfo" @@ -46,21 +46,51 @@ f__color(){ # 08/10/2017 } # $1=oui|non&[-tx] réponse par défaut & -tx=timeout, $2=message question, return 0 pour oui, 1 pour non -f__dialog_oui_non(){ # 5/12/2017 - local reply param +f__dialog_oui_non(){ # 12/12/2017 + local param [[ "$1" =~ -t[0-9]{1,2} ]] && param="$(sed -En 's/.*(-t[0-9]{1,2}).*/\1/p' <<< $1)" echo -en "$BLUE$2$STD" [[ "$1" =~ oui ]] && echo -n " [O/n] " || echo -n " [o/N] " if [ "$param" ]; then - read -t2 reply + read -t2 -r else - read reply + read -r fi - if [ -z "$reply" ]; then - [[ "$1" =~ oui ]] && reply="oui" || reply="non" + if [ -z "$REPLY" ]; then + [[ "$1" =~ oui ]] && REPLY="oui" || REPLY="non" fi echo - if [[ ${reply,,} =~ ^ou?i?$ ]]; then return 0; else return 1; fi + if [[ ${REPLY,,} =~ ^ou?i?$ ]]; then return 0; else return 1; fi +} + + # $1=-c|-l|-lc, $2 répertoire, [$3] motif exclusion sur nom fichier, affiche 0|null si répertoire inexistant + # -c: compte du nombre de fichiers dans un répertoire + # -l: liste inline des noms de fichiers seuls + # -lc: liste en colonne des noms de fichiers seuls + # si joker (*?) sur chemin, le motif d'exclusion ne s'applique pas à un répertoire listé, juste sur le nom du fichier + # attention, les jokers sont interprétés à l'appel de la fonction + # exemple: f__dir -l "$dir" "lock|partial" ou "\.list" +f__dir(){ # 12/12/2017 + local i=0 action="-c" stock='' + + [[ "$1" =~ - ]] && action="$1" || action="-c" # si option en erreur: -c + while read -r ; do + if [[ ! "$REPLY" =~ $3 ]] || [ -z "$3" ]; then + REPLY=${REPLY#*:} # suppression du titre de répertoire listé + [ -z "$REPLY" ] && continue # ligne vide, on passe + ((i++)) + stock+="$REPLY " +#echo "$REPLY $i" + fi + done <<< $( ls $2 2>/dev/null ) + if [ "$action" == "-c" ]; then + echo "$i" + elif [ "$action" == "-l" ]; then + echo ${stock% } + elif [ "$action" == "-lc" ]; then + stock=${stock% } + echo -e "${stock// /$'\n'}" + fi } # affichage $1 en rouge, $1++ optionnels en bleu, sortie script sur erreur, log $1 si $opType=upgrade @@ -305,8 +335,8 @@ f_affichage(){ # 2/12/2017 # passage en paramètre VARIABLE et pas $variable # un test si variable $2 est vide est fait sauf ':vide' # un test si variable $2 contient 'nofile' (non trouvé par f_grep_file) - # f_di "variable" "type" "titre" "commentaire" -f_di(){ # 2/12/2017 + # f_dspl "variable" "type" "titre" "commentaire" +f_dspl(){ # 2/12/2017 local display='' toDisplay [ "$text" ] && echo -en "$text" >> "$fileOutput" # flush, avant fonction, de $text parent @@ -316,7 +346,7 @@ f_di(){ # 2/12/2017 [[ "$2" || "$1" =~ :vide ]] || return 0 # test si contenu dans $2 # traitement ligne de titre [ "$toDisplay" ] || toDisplay="vide" # cas si :vide - [[ "$1" =~ sans|var|cmd ]] || display=" **⚡ erreur f_di \$1 ($2 $3) ⚡** \n" # test $1 valide + [[ "$1" =~ sans|var|cmd ]] || display=" **⚡ erreur f_dspl \$1 ($2 $3) ⚡** \n" # test $1 valide [[ "$1" =~ "var" ]] && display="**$3**" # type var, titre en gras [[ "$1" =~ "cmd" ]] && display="\`$3\`" # type cmd, titre entre backtick [ "$4" ] && display+="$spc5( $4 )" # +$4 en gras avec 5 espaces insécables avant @@ -352,67 +382,6 @@ f_dspl_alrt(){ # 21/11/2017 echo -en "$display\n" >> "$fileOutput" # flush fonction } - # 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(){ # 3/12/2017 - local display display2 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 # si taille en octets > 100ko pager - pager "$1" || less "$1" || more "$1" - return - fi - [ "$2" == "marge" ] && margin=" " - display=$(cat $1) - # code - display=${display//\`\`\`/------------} # transforme ``` en ---, plus visibles - # traitement par lignes, à là sed, obligatoire pour les titres # - # plus simple pour les multi-patterns, sinon matches multilignes délicats à gérer en cas d'impairage - IFS=$'\n' # normalement inutile - display=${display//\\/\\\\} # echappement des antislash, utile pour efiboot - while read ligne; do - ligne=${ligne//\\/\\\\} # re echappement des antislash, utile pour efiboot, méthode bourrin, sans comprendre le pourquoi - # # TITRE 1 red - [[ "$ligne" =~ ^(#[^#].*)$ ]] && ligne="\x1B[31m"${BASH_REMATCH[1]}"\x1B(B\x1B[m" - # ## TITRE 2 blue - [[ "$ligne" =~ ^(#{2}[^#].*)$ ]] && ligne="\x1B[34m"${BASH_REMATCH[1]}"\x1B(B\x1B[m" - # ### TITRE 3 green - [[ "$ligne" =~ ^(#{3}[^#].*)$ ]] && ligne="\x1B[32m"${BASH_REMATCH[1]}"\x1B(B\x1B[m" - # #### TITRE 4 yellow - [[ "$ligne" =~ ^(#{4}[^#].*)$ ]] && ligne="\x1B[33m"${BASH_REMATCH[1]}"\x1B(B\x1B[m" - # interne message alert, red - [[ "$ligne" =~ ( ↯ .*)$ ]] && ligne="\x1B[31m"${BASH_REMATCH[1]}"\x1B(B\x1B[m" - # interne message indo, green - [[ "$ligne" =~ ( ☛ .*)$ ]] && ligne="\x1B[32m"${BASH_REMATCH[1]}"\x1B(B\x1B[m" - # **gras** - while [[ "$ligne" =~ (.*)\*{2}(.*)\*{2}(.*) ]]; do - ligne=${BASH_REMATCH[1]}'\x1B[1m'${BASH_REMATCH[2]}'\x1B(B\x1B[m'${BASH_REMATCH[3]} - done - # ` backtick en italique - while [[ "$ligne" =~ (.*)\`([^\`].*)\`(.*) ]]; do - ligne=${BASH_REMATCH[1]}'\x1B[3m'${BASH_REMATCH[2]}'\x1B(B\x1B[m'${BASH_REMATCH[3]} - done - # puces niveau 1 - ligne=${ligne/#\*[^*]/• } - ligne=${ligne/#-[^-]/• } - # puces niveau 2 - [[ "$ligne" =~ ^([[:space:]]{3,4})\*(.*)$ ]] && ligne=${BASH_REMATCH[1]}'► '${BASH_REMATCH[2]} - [[ "$ligne" =~ ^([[:space:]]{3,4})-(.*)$ ]] && ligne=${BASH_REMATCH[1]}'► '${BASH_REMATCH[2]} - # 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+="$margin""$ligne\n" - done <<< "$display" - IFS="$IFS_INI" - echo -e "$display2" -} - # $1=liste fichier(s) à grepper, [$2]: N &| nofile &| novide &| ligneVide &| date &| commentXY &| sources # si aucun fichier dans la liste retour: 'nofile|vide|inexistant' # /!\ protéger les chemins avec " (surtout si plusieurs chemins ou joker) @@ -426,7 +395,7 @@ f_dspl_md(){ # 3/12/2017 # option 'sources' affiche les sources en "colonne" (3 premières col: largeur maxi) # ex. cumul option: "10 novide nofile lignevide" (espace obligatoire, pas d'autre séparateur) # cmd de base: grep -Ersv '^#|^$' file|dossier "options" -f_grep_file(){ # 8/12/2017 +f_grep_file(){ # 12/12/2017 local file content display='' motif col1=0 col2=0 col3=0 col4=0 un deux trois quatre # motif de base "^[[:blank:]]*#|^[[:blank:]]*$" motif="^[[:blank:]]*#" @@ -444,13 +413,13 @@ f_grep_file(){ # 8/12/2017 fi if [[ "$2" =~ sources ]]; then content=$( - while read un deux trois quatre; do + while read -r un deux trois quatre; do [ ${#un} -gt "$col1" ] && col1=$(( ${#un}+1 )) [ ${#deux} -gt "$col2" ] && col2=$(( ${#deux}+1 )) [ ${#trois} -gt "$col3" ] && col3=$(( ${#trois}+1 )) [ ${#quatre} -gt "$col4" ] && col4=$(( ${#quatre}+1 )) done <<< "$content" - while read un deux trois quatre; do + while read -r un deux trois quatre; do [ "$un" ] && printf "%-"$col1"s %-"$col2"s %-"$col3"s %-"$col4"s \n" "$un" "$deux" "$trois" "$quatre" done <<< "$content" ) @@ -519,7 +488,7 @@ toDisplay=( echo -e "$STD\n plus d'infos: $GREEN$urlNotice\n$STD" } - # f_pr "1||2|3|l1|l2|l3|titre1|titre2|titre3|hl|quote|flush|code" "texte" '[CONDITION test]' + # f_prnt "1||2|3|l1|l2|l3|titre1|titre2|titre3|hl|quote|flush|code" "texte" '[CONDITION test]' # $1: # 1|2|3 indentation, liste à puce, une puce par ligne # l1|l2|l3 ligne, indentation, avec espaces @@ -529,9 +498,9 @@ toDisplay=( # $3 test éventuel, Si CONDITION ok -> affichage # ATTENTION aux éventuelles collision $x dans ce cas: # "[ \"$1\" != \"notitre\" ]" ou "[ $1 != notitre ]" (attention au manque de ") - # flush (f_pr flush) inutile si f_d(x) final + # flush (f_prnt flush) inutile si f_d(x) final # $1 type, $2 texte, [$3] test /!\ assigne la variable parent $text -f_pr(){ # 11/12/2017 +f_prnt(){ # 11/12/2017 local preline='' line='' endline=" \n" [[ "$1" == 'titre1' ]] && preline="\n# " @@ -566,6 +535,66 @@ f_pr(){ # 11/12/2017 fi } + # 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_prnt_md(){ # 12/12/2017 + local display display2 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 # si taille en octets > 100ko pager + pager "$1" || less "$1" || more "$1" + return + fi + [ "$2" == "marge" ] && margin=" " + display=$(cat $1) + # code + display=${display//\`\`\`/------------} # transforme ``` en ---, plus visibles + # traitement par lignes, à là sed, obligatoire pour les titres # + # plus simple pour les multi-patterns, sinon matches multilignes délicats à gérer en cas d'impairage + IFS=$'\n' # normalement inutile + while read -r ligne; do + ligne=${ligne//\\/\\\\} # re echappement des antislash, utile pour efiboot, méthode bourrin, sans comprendre le pourquoi + # # TITRE 1 red + [[ "$ligne" =~ ^(#[^#].*)$ ]] && ligne="\x1B[31m"${BASH_REMATCH[1]}"\x1B(B\x1B[m" + # ## TITRE 2 blue + [[ "$ligne" =~ ^(#{2}[^#].*)$ ]] && ligne="\x1B[34m"${BASH_REMATCH[1]}"\x1B(B\x1B[m" + # ### TITRE 3 green + [[ "$ligne" =~ ^(#{3}[^#].*)$ ]] && ligne="\x1B[32m"${BASH_REMATCH[1]}"\x1B(B\x1B[m" + # #### TITRE 4 yellow + [[ "$ligne" =~ ^(#{4}[^#].*)$ ]] && ligne="\x1B[33m"${BASH_REMATCH[1]}"\x1B(B\x1B[m" + # interne message alert, red + [[ "$ligne" =~ ( ↯ .*)$ ]] && ligne="\x1B[31m"${BASH_REMATCH[1]}"\x1B(B\x1B[m" + # interne message indo, green + [[ "$ligne" =~ ( ☛ .*)$ ]] && ligne="\x1B[32m"${BASH_REMATCH[1]}"\x1B(B\x1B[m" + # **gras** + while [[ "$ligne" =~ (.*)\*{2}(.*)\*{2}(.*) ]]; do + ligne=${BASH_REMATCH[1]}'\x1B[1m'${BASH_REMATCH[2]}'\x1B(B\x1B[m'${BASH_REMATCH[3]} + done + # ` backtick en italique + while [[ "$ligne" =~ (.*)\`([^\`].*)\`(.*) ]]; do + ligne=${BASH_REMATCH[1]}'\x1B[3m'${BASH_REMATCH[2]}'\x1B(B\x1B[m'${BASH_REMATCH[3]} + done + # puces niveau 1 + ligne=${ligne/#\*[^*]/• } + ligne=${ligne/#-[^-]/• } + # puces niveau 2 + [[ "$ligne" =~ ^([[:space:]]{3,4})\*(.*)$ ]] && ligne=${BASH_REMATCH[1]}'► '${BASH_REMATCH[2]} + [[ "$ligne" =~ ^([[:space:]]{3,4})-(.*)$ ]] && ligne=${BASH_REMATCH[1]}'► '${BASH_REMATCH[2]} + # 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+="$margin""$ligne\n" + done <<< "$display" + IFS="$IFS_INI" + echo -e "$display2" +} + # [$1=silent], assigne fe_nb_audio, fe_cards_audio fi_audio(){ # 8/12/2017 local cardsAudio cmd_cards version_alsa card_alsa cmd_card_alsa cmt_card_alsa pluriel text @@ -610,16 +639,16 @@ fi_audio(){ # 8/12/2017 cmt_mod="$( f__wcv -l "$mod" ) module"$pluriel" utilisé"$pluriel fi ### - f_pr titre2 "audio" - f_pr l "$(sed -E 's/(.*)/**\1** /' <<< $fe_cards_audio)" # en gras - f_pr + f_prnt titre2 "audio" + f_prnt l "$(sed -E 's/(.*)/**\1** /' <<< $fe_cards_audio)" # en gras + f_prnt # lspci -nnv - f_di cmd "$cardsAudio" "$cmd_cards" + f_dspl cmd "$cardsAudio" "$cmd_cards" f_dspl_alrt "$alert_alsa" "alert" - f_di cmd "$version_alsa" "/proc/asound/version" "driver alsa (Advanced Linux Sound Architecture)" - f_di cmd "$card_alsa" "$cmd_card_alsa" "$cmt_card_alsa" - f_di cmd "$mod_alsa" "$cmd_card_alsa" "$cmt_card_alsa" - f_di cmd "$mod" "$cmd_mod" "$cmt_mod" + f_dspl cmd "$version_alsa" "/proc/asound/version" "driver alsa (Advanced Linux Sound Architecture)" + f_dspl cmd "$card_alsa" "$cmd_card_alsa" "$cmt_card_alsa" + f_dspl cmd "$mod_alsa" "$cmd_card_alsa" "$cmt_card_alsa" + f_dspl cmd "$mod" "$cmd_mod" "$cmt_mod" } fi_batt(){ # 9/12/2017 @@ -629,8 +658,8 @@ fi_batt(){ # 9/12/2017 [ "$fg_batt" ] || return 0 # pas de batterie [ "$fg_nb_batt" -gt 1 ] && pluriel="s" || unset pluriel ### - f_pr titre2 "batterie"$pluriel - f_di sans "$fg_batt" + f_prnt titre2 "batterie"$pluriel + f_dspl sans "$fg_batt" } # [$1=silent] (pas d'affichage), assigne $fe_nb_bluez, $fe_cards_bluez @@ -665,10 +694,10 @@ fi_bluez(){ # 8/12/2017 cmt_mod="$( f__wcv -l "$mod" ) module"$pluriel" utilisé"$pluriel fg_mod_motif=${fg_mod_motif//|/ } # fg_mod_motif motif de recherche, avec | ### - f_pr titre2 "Bluetooth" - f_di cmd "$bluez" "$cmd_bluez" "$cmt_bluez" - f_di cmd "$mod" "$cmd_mod" "$cmt_mod" - [ "$mod" ] || f_di sans "$fg_mod_motif" "" "pas de modules en mémoire parmi:" + f_prnt titre2 "Bluetooth" + f_dspl cmd "$bluez" "$cmd_bluez" "$cmt_bluez" + f_dspl cmd "$mod" "$cmd_mod" "$cmt_mod" + [ "$mod" ] || f_dspl sans "$fg_mod_motif" "" "pas de modules en mémoire parmi:" } fi_conf(){ # 3/12/2017 @@ -692,8 +721,8 @@ fi_conf(){ # 3/12/2017 confs=$( f_grep_file "${toScrut[*]}" "noinexist" ) ### - f_pr titre2 "fichiers configuration divers" - f_di cmd "$confs" "grep -Ersv '^#|^$' " + f_prnt titre2 "fichiers configuration divers" + f_dspl cmd "$confs" "grep -Ersv '^#|^$' " } fi_cpu(){ # 11/12/2017 @@ -722,14 +751,14 @@ fi_cpu(){ # 11/12/2017 fi [ "$(( ${fg_cpu:0:1} ))" -gt 1 ] && pluriel="s" || unset pluriel ### - f_pr titre2 "processeur"$pluriel - f_di cmd "$fg_cpu" "lscpu" # affichage proc - f_di var "$fg_uarch" "µarchitecture processeur" + f_prnt titre2 "processeur"$pluriel + f_dspl cmd "$fg_cpu" "lscpu" # affichage proc + f_dspl var "$fg_uarch" "µarchitecture processeur" f_dspl_alrt "$alert_microcode" "info" - f_pr 1 "$fg_ucode" '[[ -z "$alert_microcode" && "$fg_ucode" ]]' - f_pr - f_di var "$cpu_flags" "$qte_flags flags cpu" # flags cpu bruts - f_di sans "$text_flags" # flags cpu texte + f_prnt 1 "$fg_ucode" '[[ -z "$alert_microcode" && "$fg_ucode" ]]' + f_prnt + f_dspl var "$cpu_flags" "$qte_flags flags cpu" # flags cpu bruts + f_dspl sans "$text_flags" # flags cpu texte } fi_disk(){ # 5/12/2017 @@ -787,55 +816,55 @@ fi_disk(){ # 5/12/2017 fi [ "$fg_nb_disk" -gt 1 ] && pluriel="s" || unset pluriel ### - f_pr titre2 "disque"$pluriel + f_prnt titre2 "disque"$pluriel # espace des partitions fixes montées - f_pr 1 "$(gawk -F': ' '{print $1": **"$2"**"}' <<< $fg_disk_part_fix_tot)" - f_pr - f_pr l '```' + f_prnt 1 "$(gawk -F': ' '{print $1": **"$2"**"}' <<< $fg_disk_part_fix_tot)" + f_prnt + f_prnt l '```' # disques fixes et amovibles [ "$(wc -w <<< $fg_disk_fixe)" -gt 1 ] && pluriel="s" || unset pluriel - f_pr l "$(printf '%-17s: %s' "disque$pluriel fixe$pluriel" "$fg_disk_fixe")" + f_prnt l "$(printf '%-17s: %s' "disque$pluriel fixe$pluriel" "$fg_disk_fixe")" [ "$(wc -w <<< $fg_disk_amov)" -gt 1 ] && pluriel="s" || unset pluriel - f_pr l "$(printf '%-17s: %s' "disque$pluriel amovible$pluriel" "$fg_disk_amov")" - f_pr + f_prnt l "$(printf '%-17s: %s' "disque$pluriel amovible$pluriel" "$fg_disk_amov")" + f_prnt # partitions fixes montées / swap / non montées [ "$(wc -w <<< $fg_disk_part_fixe_m)" -gt 1 ] && pluriel="s" || unset pluriel - f_pr l "$(printf '%-24s: %s' "partition$pluriel fixe$pluriel montée$pluriel" "$fg_disk_part_fixe_m")" + f_prnt l "$(printf '%-24s: %s' "partition$pluriel fixe$pluriel montée$pluriel" "$fg_disk_part_fixe_m")" [ "$(wc -w <<< $fg_disk_part_swap)" -gt 1 ] && pluriel="s" || unset pluriel - f_pr l "$(printf '%-24s: %s' "partition$pluriel swap$pluriel" "$fg_disk_part_swap")" + f_prnt l "$(printf '%-24s: %s' "partition$pluriel swap$pluriel" "$fg_disk_part_swap")" [ "$(wc -w <<< $fg_disk_part_fixe_nm)" -gt 1 ] && pluriel="s" || unset pluriel - f_pr l "$(printf '%-28s: %s' "partition$pluriel fixe$pluriel non montée$pluriel" "$fg_disk_part_fixe_nm")" - f_pr + f_prnt l "$(printf '%-28s: %s' "partition$pluriel fixe$pluriel non montée$pluriel" "$fg_disk_part_fixe_nm")" + f_prnt # partitions amovibles montées / non montées [ "$(wc -w <<< $fg_disk_part_amov_m)" -gt 1 ] && pluriel="s" || unset pluriel - f_pr l "$(printf '%-32s: %s' "partition$pluriel amovible$pluriel montée$pluriel" "$fg_disk_part_amov_m")" + f_prnt l "$(printf '%-32s: %s' "partition$pluriel amovible$pluriel montée$pluriel" "$fg_disk_part_amov_m")" [ "$(wc -w <<< $fg_disk_part_amov_nm)" -gt 1 ] && pluriel="s" || unset pluriel - f_pr l "$(printf '%-32s: %s' "partition$pluriel amovible$pluriel non montée$pluriel" "$fg_disk_part_amov_nm")" - f_pr + f_prnt l "$(printf '%-32s: %s' "partition$pluriel amovible$pluriel non montée$pluriel" "$fg_disk_part_amov_nm")" + f_prnt # détails des disques par type - f_pr l "$fg_disk_table" - f_pr l '```' - f_pr + f_prnt l "$fg_disk_table" + f_prnt l '```' + f_prnt [ "$fg_nb_disk" -gt 1 ] && pluriel="s" || unset pluriel - f_pr 1 "**types de disque"$pluriel"** " - f_pr - f_pr l "| sata | usb | mmc | nvme |" - f_pr l "| :---: | :---: | :---: | :---: |" - f_pr l "| $fg_disk_ata | $fg_disk_usb | $fg_disk_mmc | $fg_disk_nvme |" - f_pr + f_prnt 1 "**types de disque"$pluriel"** " + f_prnt + f_prnt l "| sata | usb | mmc | nvme |" + f_prnt l "| :---: | :---: | :---: | :---: |" + f_prnt l "| $fg_disk_ata | $fg_disk_usb | $fg_disk_mmc | $fg_disk_nvme |" + f_prnt # éventuellement hddtemp - f_di cmd "$dd_temp" "$cmd_dd_temp" "température disque"$pluriel + f_dspl cmd "$dd_temp" "$cmd_dd_temp" "température disque"$pluriel f_dspl_alrt "$alert_dd_temp" "info" # df, espaces des partitions montées seules - f_di cmd "$disk_df" "$cmd_dfh" "utilisation disque"$pluriel + f_dspl cmd "$disk_df" "$cmd_dfh" "utilisation disque"$pluriel # df -i, inoeuds - f_di cmd "$disk_df_i" "$cmd_dfi" "utilisation inoeuds" + f_dspl cmd "$disk_df_i" "$cmd_dfi" "utilisation inoeuds" # lsblk répertoire disques & partitions - f_di cmd "$disk_lsblk" "lsblk -o NAME,FSTYPE,SIZE,LABEL,MOUNTPOINT,UUID" "disque"$pluriel" & partitions" + f_dspl cmd "$disk_lsblk" "lsblk -o NAME,FSTYPE,SIZE,LABEL,MOUNTPOINT,UUID" "disque"$pluriel" & partitions" # fstab - f_di cmd "$fstab" "grep -Ev '^#|^$' /etc/fstab" "fstab" + f_dspl cmd "$fstab" "grep -Ev '^#|^$' /etc/fstab" "fstab" # resume - f_di cmd "$resume" "grep -Evs '^#|^$' /etc/initramfs-tools/conf.d/resume" "resume" + f_dspl cmd "$resume" "grep -Evs '^#|^$' /etc/initramfs-tools/conf.d/resume" "resume" f_dspl_alrt "$alert_file_resume" "info" f_dspl_alrt "$alert_uuidResume" "alert" } @@ -879,14 +908,14 @@ fi_dmesg(){ # 2/12/2017 # suppression fichier de transfert rm "$file-"* ### - f_pr titre2 "dmesg kernel (emergency, alerte, erreur, warning ou critique)" - f_di cmd "$dmesg_emerg" "dmesg -l emerg" "emergency, $nb_lignes premières lignes" - f_di cmd "$dmesg_alert" "dmesg -l alert" "alerte, $nb_lignes premières lignes" - f_di cmd "$dmesg_crit" "dmesg -l crit" "critique, $nb_lignes premières lignes" - f_di cmd "$dmesg_err" "dmesg -l err" "erreur, $nb_lignes premières lignes" - f_di cmd "$dmesg_warn" "dmesg -l warn" "warning, $nb_lignes premières lignes" - f_pr l "**les $nb_lignes premières lignes commencent à la date la plus ancienne encore dans les logs kernel**" - f_pr flush + f_prnt titre2 "dmesg kernel (emergency, alerte, erreur, warning ou critique)" + f_dspl cmd "$dmesg_emerg" "dmesg -l emerg" "emergency, $nb_lignes premières lignes" + f_dspl cmd "$dmesg_alert" "dmesg -l alert" "alerte, $nb_lignes premières lignes" + f_dspl cmd "$dmesg_crit" "dmesg -l crit" "critique, $nb_lignes premières lignes" + f_dspl cmd "$dmesg_err" "dmesg -l err" "erreur, $nb_lignes premières lignes" + f_dspl cmd "$dmesg_warn" "dmesg -l warn" "warning, $nb_lignes premières lignes" + f_prnt l "**les $nb_lignes premières lignes commencent à la date la plus ancienne encore dans les logs kernel**" + f_prnt flush f_dspl_alrt "$info_ucode" "info" f_dspl_alrt "$alert_firmBug" "alert" } @@ -900,8 +929,8 @@ fi_efi(){ # 6/12/2017 ! /^Boot0/ { print $0 } ' <<< $( efibootmgr -v 2>/dev/null ) ) ### - f_pr titre2 "EFI boot" - f_di cmd "$efiboot" "efibootmgr -v" "config EFI boot" + f_prnt titre2 "EFI boot" + f_dspl cmd "$efiboot" "efibootmgr -v" "config EFI boot" } # assigne $fe_gpu (liste des gpu), $fe_nb_gpu, fe_Xorg, si [$1=silent|xorgOnly], sortie après configs xorg complete @@ -950,9 +979,9 @@ fi_gpu(){ # 11/12/2017 info_config+="non sorties ici." if [ "$1" == "xorgOnly" ]; then - f_di cmd "$confs" "$cmd_confs" "$cmt_confs" + f_dspl cmd "$confs" "$cmd_confs" "$cmt_confs" confs=$( f_grep_file "/usr/share/X11/xorg.conf.d/*" ) - f_di cmd "$confs" "grep -Ersv '^#|^$' /usr/share/X11/xorg.conf.d/*" "config par défaut Xorg" + f_dspl cmd "$confs" "grep -Ersv '^#|^$' /usr/share/X11/xorg.conf.d/*" "config par défaut Xorg" fi_log_xorg "notitre" return 0 fi @@ -1037,32 +1066,32 @@ fi_gpu(){ # 11/12/2017 # fonctions externes [ "$fg_resolution" ] || figet_screen ### - f_pr titre2 "vidéo" - f_pr l "$( sed -E 's/(.*)/**\1** /' <<< $fe_gpu )" # mise en gras - f_pr + f_prnt titre2 "vidéo" + f_prnt l "$( sed -E 's/(.*)/**\1** /' <<< $fe_gpu )" # mise en gras + f_prnt # nb écran & résolution(s) active(s) - f_pr l "nombre d'écrans: **$fg_nb_screen**" + f_prnt l "nombre d'écrans: **$fg_nb_screen**" [ "$( f__wcv "-wv" "$fg_resolution" "pixels" )" -gt 1 ] && pluriel="s" || unset pluriel - f_pr l "résolution"$pluriel" active"$pluriel": **$fg_resolution**" - f_pr + f_prnt l "résolution"$pluriel" active"$pluriel": **$fg_resolution**" + f_prnt # lspci -nnv - f_di cmd "$cards" "$cmd_cards" + f_dspl cmd "$cards" "$cmd_cards" f_dspl_alrt "$alert_hybrid" "alert" # wayland f_dspl_alrt "$alert_Wayland" "info" # openGl - f_di cmd "$glx_dvc" "$cmd_glx_dvc" "devices OpenGl" + f_dspl cmd "$glx_dvc" "$cmd_glx_dvc" "devices OpenGl" f_dspl_alrt "$alert_3D" "info" - f_di cmd "$openGl" "$cmd_openGl" "OpenGl" + f_dspl cmd "$openGl" "$cmd_openGl" "OpenGl" # liste providers, preferred & current - f_di cmd "$current_preferred" "$cmd_current_preferred" "$cmt_current_preferred" - f_di cmd "$providers" "$cmd_providers" + f_dspl cmd "$current_preferred" "$cmd_current_preferred" "$cmt_current_preferred" + f_dspl cmd "$providers" "$cmd_providers" # résolutions possibles, pas d'affichage si mode (ssh) ou xrandr pas accessible - f_di cmd "$resolutions" "$cmd_resolutions" "$cmt_resolutions" + f_dspl cmd "$resolutions" "$cmd_resolutions" "$cmt_resolutions" # modules vidéo - f_di cmd "$modGpu" "$cmd_modGpu" "$cmt_modGpu" + f_dspl cmd "$modGpu" "$cmd_modGpu" "$cmt_modGpu" # Xorg config - f_di cmd "$confs" "$cmd_confs" "$cmt_confs" + f_dspl cmd "$confs" "$cmd_confs" "$cmt_confs" f_dspl_alrt "$info_config" "info" } @@ -1097,10 +1126,10 @@ fi_gpu_openGl(){ # 28/11/2017 fi_hw(){ # 6/12/2017 [ "$fg_hw" ] || figet_hw ### - f_pr titre2 "hardware monitor" - f_di sans "$fg_hw" "sans" - f_pr 1 "pas d'informations détectées" '[ -z "$fg_hw" ]' - f_pr flush + f_prnt titre2 "hardware monitor" + f_dspl sans "$fg_hw" "sans" + f_prnt 1 "pas d'informations détectées" '[ -z "$fg_hw" ]' + f_prnt flush } fi_journal(){ # 10/12/2017 @@ -1175,38 +1204,38 @@ fi_journal(){ # 10/12/2017 # suppression fichier de transfert rm "$file-"* ### - f_pr titre2 "journalctl kernel (emergency, alert, erreur, warning ou critique)" - f_pr 1 "**journaux persistants**" '[ -z "$alert_jctl_persist" ]' - f_pr 1 "Début des log: **$jctl_boot**" - f_pr + f_prnt titre2 "journalctl kernel (emergency, alert, erreur, warning ou critique)" + f_prnt 1 "**journaux persistants**" '[ -z "$alert_jctl_persist" ]' + f_prnt 1 "Début des log: **$jctl_boot**" + f_prnt f_dspl_alrt "$alert_jctl_persist" "info" # journaux kernel - f_di cmd "$jctl_alert_k" "journalctl --no-hostname -b0 -k -p1" \ + f_dspl cmd "$jctl_alert_k" "journalctl --no-hostname -b0 -k -p1" \ "**kernel emergency 0 & alerte 1**, $nb_lignes premières lignes" - f_di cmd "$jctl_crit_k" "journalctl --no-hostname -b 0 -k -p 2..2" \ + f_dspl cmd "$jctl_crit_k" "journalctl --no-hostname -b 0 -k -p 2..2" \ "**kernel critique**, $nb_lignes premières lignes" - f_di cmd "$jctl_err_k" "journalctl --no-hostname -b0 -k -p 3..3" \ + f_dspl cmd "$jctl_err_k" "journalctl --no-hostname -b0 -k -p 3..3" \ "**kernel erreur**, $nb_lignes premières lignes)" - f_di cmd "$jctl_warn_k" "journalctl --no-hostname -b0 -k -p 4..4" \ + f_dspl cmd "$jctl_warn_k" "journalctl --no-hostname -b0 -k -p 4..4" \ "**kernel warning**, $nb_lignes premières lignes" # journaux hors kernel - f_pr titre2 "journalctl hors kernel (emergency, alert, erreur, warning ou critique)" - f_pr 1 "Début des log: **$jctl_boot**" - f_pr - f_di cmd "$jctl_alert_nok" "journalctl --no-hostname -b0 -p 1 | grep -v kernel" \ + f_prnt titre2 "journalctl hors kernel (emergency, alert, erreur, warning ou critique)" + f_prnt 1 "Début des log: **$jctl_boot**" + f_prnt + f_dspl cmd "$jctl_alert_nok" "journalctl --no-hostname -b0 -p 1 | grep -v kernel" \ "**hors kernel, emergency 0 & alerte 1**, $nb_lignes premières lignes" - f_di cmd "$jctl_crit_nok" "journalctl --no-hostname -b0 -p 2..2 | grep -v kernel" \ + f_dspl cmd "$jctl_crit_nok" "journalctl --no-hostname -b0 -p 2..2 | grep -v kernel" \ "**hors kernel, critique**, $nb_lignes premières lignes" - f_di cmd "$jctl_err_nok" "journalctl --no-hostname -b0 -p 3..3 | grep -v kernel" \ + f_dspl cmd "$jctl_err_nok" "journalctl --no-hostname -b0 -p 3..3 | grep -v kernel" \ "**hors kernel, erreur**, $nb_lignes premières lignes" - f_di cmd "$jctl_warn_nok" "journalctl --no-hostname -b0 -p 4..4 | grep -v kernel" \ + f_dspl cmd "$jctl_warn_nok" "journalctl --no-hostname -b0 -p 4..4 | grep -v kernel" \ "**hors kernel, warning**, $nb_lignes premières lignes" #informations - f_pr 1 "les $nb_lignes premières lignes commencent à la date du dernier boot" - f_pr - f_di cmd "$jctl_size" "journalctl --disk-usage " "taille des journaux" + f_prnt 1 "les $nb_lignes premières lignes commencent à la date du dernier boot" + f_prnt + f_dspl cmd "$jctl_size" "journalctl --disk-usage " "taille des journaux" # dernières lignes - f_di cmd "$jctl_last" "journalctl --no-hostname -b0 -p 4 -n25" \ + f_dspl cmd "$jctl_last" "journalctl --no-hostname -b0 -p 4 -n25" \ "**toutes provenance, emergency-warning**, $nb_lignes lignes les plus **récentes**" f_dspl_alrt "$alert_firmBug" "alert" f_dspl_alrt "$info_ucode" "info" @@ -1246,19 +1275,19 @@ fi_locale(){ # 10/12/2017 [ $( f__which setxkbmap ) ] && xKeyboardMap="$(setxkbmap -query)" fi ### - f_pr titre2 "localisation" + f_prnt titre2 "localisation" # locale - f_di cmd "$localeConf" "grep -Esv '#|^$' /etc/default/locale* /etc/locale.conf" - f_di cmd "$localeCtl" "localectl status" - f_di cmd "$locale" "locale" + f_dspl cmd "$localeConf" "grep -Esv '#|^$' /etc/default/locale* /etc/locale.conf" + f_dspl cmd "$localeCtl" "localectl status" + f_dspl cmd "$locale" "locale" # timezone - f_di cmd "$timezone" "grep -EHsv '#|^$' /etc/timezone*" - f_di cmd "$timedatectl" "timedatectl status" + f_dspl cmd "$timezone" "grep -EHsv '#|^$' /etc/timezone*" + f_dspl cmd "$timedatectl" "timedatectl status" f_dspl_alrt "$alert_ntp" "info" f_dspl_alrt "$alert_rtc" "alert" # keyboard layout - f_di cmd "$keyboard" "grep -EHv '#|^$' /etc/default/keyboard*" - f_di cmd "$xKeyboardMap" "setxkbmap -query" + f_dspl cmd "$keyboard" "grep -EHv '#|^$' /etc/default/keyboard*" + f_dspl cmd "$xKeyboardMap" "setxkbmap -query" } # [$1=notitre] @@ -1304,8 +1333,8 @@ fi_log_xorg(){ # 3/12/2017 cmd_logXorg="grep -Es '\(WW\)|\(EE\)|\(\?\?\)' $cmd_logXorg" cmt_logXorg="Xorg.log" ### - f_pr titre2 "journaux Xorg" "[ \"$1\" != \"notitre\" ]" - f_di cmd "$logXorg" "$cmd_logXorg" "$cmt_logXorg" + f_prnt titre2 "journaux Xorg" "[ \"$1\" != \"notitre\" ]" + f_dspl cmd "$logXorg" "$cmd_logXorg" "$cmt_logXorg" f_dspl_alrt "$info_logs" "info" } @@ -1318,9 +1347,9 @@ fi_mem(){ # 5/12/2017 memoire+="$fg_mem" swappiness=$( cat /proc/sys/vm/swappiness 2>/dev/null ) ### - f_pr titre2 "mémoire" - f_di cmd "$memoire" "free -h" - f_di cmd "$swappiness" "cat /proc/sys/vm/swappiness" "Seuil bas de RAM libre où le swap est utilisé" + f_prnt titre2 "mémoire" + f_dspl cmd "$memoire" "free -h" + f_dspl cmd "$swappiness" "cat /proc/sys/vm/swappiness" "Seuil bas de RAM libre où le swap est utilisé" } # [$1=silent], assigne fe_nb_reseau, fe_cards_reseau @@ -1362,14 +1391,14 @@ fi_net(){ # 8/12/2017 ( matériel ) alert_wlx+="https://kyodev.frama.io/kyopages/trucs/interfaces-nommage-classique/" fi ### - f_pr titre2 "réseau" - f_pr l "$(sed -E 's/(.*)/**\1** /' <<< $fe_cards_reseau)" # mise en gras - f_pr + f_prnt titre2 "réseau" + f_prnt l "$(sed -E 's/(.*)/**\1** /' <<< $fe_cards_reseau)" # mise en gras + f_prnt # lspci -nnv - f_di cmd "$cards" "$cmd_cards" + f_dspl cmd "$cards" "$cmd_cards" # modules réseau - f_di cmd "$modEth" "$cmd_modEth" "$cmt_modEth" - f_di cmd "$modWln" "$cmd_modWln" "$cmt_modWln" + f_dspl cmd "$modEth" "$cmd_modEth" "$cmt_modEth" + f_dspl cmd "$modWln" "$cmd_modWln" "$cmt_modWln" f_dspl_alrt "$alert_wlx" "alert" } @@ -1390,10 +1419,10 @@ fi_nm(){ # 5/12/2017 [ "$(f__wcv "-l" "$nm_wifis")" -eq 1 ] && unset nm_wifis nm_connected=$( LC_ALL=C nmcli -f SSID,ACTIVE,IN-USE device wifi list | gawk '/yes[[:space:]]+\*/ {print $1}' ) ### - f_pr titre2 "NetworkManager" - f_di cmd "$nm_etat" "$cmd_nm_etat" "$cmt_nm_etat" - f_di cmd "$nm_conf" "$cmd_nm_conf" "$cmt_nm_conf" - f_di cmd "$nm_wifis" "$cmd_nm_wifis" "$cmt_nm_wifis" + f_prnt titre2 "NetworkManager" + f_dspl cmd "$nm_etat" "$cmd_nm_etat" "$cmt_nm_etat" + f_dspl cmd "$nm_conf" "$cmd_nm_conf" "$cmt_nm_conf" + f_dspl cmd "$nm_wifis" "$cmd_nm_wifis" "$cmt_nm_wifis" } fi_packagers(){ #v2 23/11/2017 @@ -1441,9 +1470,9 @@ fi_packagers(){ #v2 23/11/2017 fi } -fi_pkg_apt(){ #v3 11/12/2017 +fi_pkg_apt(){ #v3 12/12/2017 local dateMaj nb_packages ifile info_update text pluriel - local sources cmt_sources cmd_sources + local sources cmt_sources cmd_sources dir_source result local apt_v apt_version apt_prefs cmt_apt_prefs cmd_apt_prefs local stck_upgd qte_upgradable local upgrade cmt_upgrade cmd_upgrade @@ -1462,13 +1491,15 @@ fi_pkg_apt(){ #v3 11/12/2017 sources=$( f_grep_file "/etc/apt/sources.list /etc/apt/sources.list.d/*.list" sources ) cmt_sources="dépôts" cmd_sources="grep -Ersv '^#|^$' /etc/apt/sources.list /etc/apt/sources.list.d/*.list" - if [ $( ls -1 /etc/apt/sources.list.d/ | grep -cEv '\.list$' ) -gt 0 ]; then - for ifile in $( ls /etc/apt/sources.list.d/* ); do - if [[ ${ifile##*.} != "list" ]]; then - alert_non_list+="$ifile: ignoré, extension non valable" - fi - done + # sources non .list + shopt -s extglob # activer opérateurs de correspondance étendue + dir_source="/etc/apt/sources.list.d" + if result=$( f__dir "-l" "$dir_source" "\.list" ) ; then + alert_non_list="ignoré, extension non valable dans "$dir_source":\n" + alert_non_list+="${result//$dir_source\/}" + alert_non_list="${alert_non_list//$'\n'/ }" fi + shopt -u extglob # désactiver opérateurs de correspondance étendue # apt prefs apt_prefs=$( f_grep_file "/etc/apt/preferences.d/*" ) cmd_apt_prefs="grep -Erv '^#|^$' /etc/apt/preferences.d/" @@ -1479,21 +1510,23 @@ fi_pkg_apt(){ #v3 11/12/2017 # apt_unUpgrd=$( f_grep_file "/etc/apt/apt.conf.d/!(*.save)" "comment//" ) apt_unUpgrd=$( f_grep_file "/etc/apt/apt.conf.d/50unattended-upgrades" "comment//" ) cmd_unUpgrd="grep -Erv '^//|^$' /etc/apt/apt.conf.d/50unattended-upgrades" - [ "$apt_unUpgrd" ] && info_unUpgrd="les logs spécifiques unattended-upgrades: " - info_unUpgrd+="**ls -l /var/log/unattended-upgrades/*.log**" - f_di cmd "$sources" "$cmd_sources" "$cmt_sources" - f_di cmd "$apt_prefs" "$cmd_apt_prefs" "$cmt_apt_prefs" - f_di cmd "$apt_unUpgrd" "$cmd_unUpgrd" ".conf unattended-upgrades" + if [ "$apt_unUpgrd" ]; then + info_unUpgrd="les logs spécifiques unattended-upgrades: " + info_unUpgrd+="**ls -l /var/log/unattended-upgrades/*.log**" + fi + f_dspl cmd "$sources" "$cmd_sources" "$cmt_sources" + f_dspl cmd "$apt_prefs" "$cmd_apt_prefs" "$cmt_apt_prefs" + f_dspl cmd "$apt_unUpgrd" "$cmd_unUpgrd" ".conf unattended-upgrades" f_dspl_alrt "$info_unUpgrd" "info" - #f_di cmd "$( cat /var/log/syslog | tail -n20 )" "cat /var/log/syslog | tail -n20" "20 derniers logs" - #f_di cmd "$( cat /var/log/apt/history.log | tail -n25 )" "cat /var/log/apt/history.log | tail -n25" "25 derniers historiques apt" - #f_di sans "$( f_grep_file "/var/log/unattended-upgrades/*.log" )" + #f_dspl cmd "$( tail -n20 /var/log/syslog )" "$( tail -n20 /var/log/syslog )" "20 derniers logs" + #f_dspl cmd "$( tail -n25 /var/log/apt/history.log )" "tail -n25 /var/log/apt/history.log" "25 derniers historiques apt" + #f_dspl sans "$( f_grep_file "/var/log/unattended-upgrades/*.log" )" IFS=$'\n' -# essai=($(cat /var/log/apt/history.log | grep -B1 -A2 'unattended-upgrade')) +# essai=( grep -B1 -A2 'unattended-upgrade' /var/log/apt/history.log ) # for i in "${!essai[@]}"; do # for i in /var/log/unattended-upgrades/* ; do # done - # f_di cmd $(echo "${essai[*]}") "$cmt_apt_history" + # f_dspl cmd $(echo "${essai[*]}") "$cmt_apt_history" #echo ${#essai[*]} #echo ${essai[3]} IFS="$IFS_INI" @@ -1594,11 +1627,11 @@ fi_pkg_apt(){ #v3 11/12/2017 size_clean=${size_clean%[[:blank:]]total} size_cleanH=$( du -chS /var/cache/apt/archives/ 2>/dev/null | grep -i 'total' ) # affichage en human size_cleanH=${size_cleanH%[[:blank:]]total} - qte_clean=$( f__wcv -l "$( ls -1 /var/cache/apt/archives/ )" ) + qte_clean=$( f__dir -c /var/cache/apt/archives "lock|partial" ) [ "$qte_clean" -gt 1 ] && pluriel="s" || unset pluriel cmt_clean="taille du cache des paquets" cmd_clean="du -chS /var/cache/apt/archives/" - if [ "$size_clean" -gt 200 ]; then # alerte si > à 100 ko (cache pas vide) + if [ "$qte_clean" -gt 0 ]; then # alerte si > à 100 ko (cache pas vide) alert_clean="$qte_clean archive"$pluriel" dans le cache de téléchargement des paquets \n" alert_clean+="$size_cleanH pourraient être libérés en effaçant ce cache: **apt clean**" else # cache vide (72ko à 120ko) @@ -1614,7 +1647,7 @@ fi_pkg_apt(){ #v3 11/12/2017 cmd_non_ii="dpkg -l | grep -v '^ii'" # dpkg -l | gawk '! /^ii/ {print $0}' if [ "$qte_non_ii" -gt 0 ]; then # extraction différents états constatés - while read etat ligne ; do + while read -r etat ligne ; do stck_etat+="$etat"$'\n' done <<< "$non_ii" stck_etat=$( sort -u <<< "$stck_etat" ) # tri et dédoublonnage @@ -1685,38 +1718,38 @@ fi_pkg_apt(){ #v3 11/12/2017 cmd_kernel="dpkg -l | grep -i -E \"linux-(headers|image)-$(uname -r)\"" cmt_kernel="noyau" ### - f_pr titre2 "gestion de paquets ${1#*:}" - f_pr 1 "nombre de paquets installés: **$nb_packages**" - f_pr 1 "dernière mise à jour apt: **$dateMaj**" - f_pr 1 "version apt: **$apt_version**" - f_pr + f_prnt titre2 "gestion de paquets ${1#*:}" + f_prnt 1 "nombre de paquets installés: **$nb_packages**" + f_prnt 1 "dernière mise à jour apt: **$dateMaj**" + f_prnt 1 "version apt: **$apt_version**" + f_prnt f_dspl_alrt "$info_update" "info" - f_di cmd "$sources" "$cmd_sources" "$cmt_sources" + f_dspl cmd "$sources" "$cmd_sources" "$cmt_sources" f_dspl_alrt "$alert_https" "info" f_dspl_alrt "$alert_httpsPossible" "info" f_dspl_alrt "$alert_non_list" "info" f_dspl_alrt "$alert_httpredir" "info" - f_di cmd "$apt_prefs" "$cmd_apt_prefs" "$cmt_apt_prefs" - f_di cmd:vide "$upgrade" "$cmd_upgrade" "$cmt_upgrade" + f_dspl cmd "$apt_prefs" "$cmd_apt_prefs" "$cmt_apt_prefs" + f_dspl cmd:vide "$upgrade" "$cmd_upgrade" "$cmt_upgrade" f_dspl_alrt "$alert_upgrade" "info" f_dspl_alrt "$alert_apt" "alerte" - f_di var "$notUpgraded" "" "$cmt_notUpgraded" + f_dspl var "$notUpgraded" "" "$cmt_notUpgraded" f_dspl_alrt "$alert_full_upgrade" "info" - f_di cmd:vide "$toRemove" "$cmd_toRemove" "$cmt_toRemove" + f_dspl cmd:vide "$toRemove" "$cmd_toRemove" "$cmt_toRemove" f_dspl_alrt "$alert_remove" "info" - f_di cmd:vide "$autoclean" "$cmd_autoclean" "$cmt_autoclean" + f_dspl cmd:vide "$autoclean" "$cmd_autoclean" "$cmt_autoclean" f_dspl_alrt "$alert_autoclean" "info" - f_di cmd "$clean" "$cmd_clean" "$cmt_clean" + f_dspl cmd "$clean" "$cmd_clean" "$cmt_clean" f_dspl_alrt "$alert_clean" "info" - f_di cmd:vide "$non_ii" "$cmd_non_ii" "$cmt_non_ii" + f_dspl cmd:vide "$non_ii" "$cmd_non_ii" "$cmt_non_ii" f_dspl_alrt "$alert_non_ii" "info" if [ $( f__which deborphan ) ]; then - f_di cmd "$deborphan" "$cmd_deborphan" "$cmt_deborphan" + f_dspl cmd "$deborphan" "$cmd_deborphan" "$cmt_deborphan" f_dspl_alrt "$alert_deborphan" "info" fi - f_di cmd:vide "$holded" "$cmd_holded" "$cmt_holded" - f_di cmd "$metaPkg" "$cmd_metaPkg" "$cmt_metaPkg" - f_di cmd "$kernel" "$cmd_kernel" "$cmt_kernel" + f_dspl cmd:vide "$holded" "$cmd_holded" "$cmt_holded" + f_dspl cmd "$metaPkg" "$cmd_metaPkg" "$cmt_metaPkg" + f_dspl cmd "$kernel" "$cmd_kernel" "$cmt_kernel" } fi_pkg_x(){ #v2 1/12/2017 @@ -1746,7 +1779,7 @@ fi_pkg_x(){ #v2 1/12/2017 sources=$( f_grep_file "/etc/portage/repos.conf /etc/portage/repos.conf/*" ) cmd_sources="grep -Ersv '^#|^$' /etc/portage/repos.conf /etc/portage/repos.conf/*" elif [[ ${1%:*} == "slackware" ]]; then # Slackware - nb_packages=$( ls -1 /var/log/packages 2>/dev/null ) + nb_packages=$( f__dir -c /var/log/packages ) cmd_nbPackages="wc -l <<< \$(ls -1 /var/log/packages)" sources=$( f_grep_file "/etc/slackpkg/mirrors" ) cmd_sources="grep -Ersv '^#|^$' /etc/slackpkg/mirrors" @@ -1761,17 +1794,16 @@ fi_pkg_x(){ #v2 1/12/2017 nb_packages=$( alps showinstalled &>/dev/null ) cmd_nbPackages="alps showinstalled" elif [[ ${1#*:} == "eopkg" ]]; then # Solus Linux - nb_packages=$( ls -1 /var/lib/eopkg/package 2>/dev/null ) - nb_packages=$( f__wcv -l "$nb_packages") + nb_packages=$( f__dir -c /var/lib/eopkg/package ) cmd_nbPackages="wc -l <<< \$(ls -1 /var/lib/eopkg/package)" elif [[ ${1#*:} == "Guix" ]]; then # Gnu Guix - nb_packages=$( ls -1 /gnu/store/*/ 2>/dev/null ) + nb_packages=$( f__dir -c "/gnu/store/*/" ) cmd_nbPackages="wc -l <<< \$(ls -1 /gnu/store/*/)" elif [[ ${1#*:} == "lvu" ]]; then # LunarLinux nb_packages=$( lvu installed 2>/dev/null ) cmd_nbPackages="lvu installed" elif [[ ${1#*:} == "Nix" ]]; then # NixOs - nb_packages=$( ls -d -1 /nix/store/*/ 2>/dev/null ) + nb_packages=$( f__dir -c "/nix/store/*/" ) cmd_nbPackages="wc -l <<< \$(ls -1 /nix/store/*/)" elif [[ ${1#*:} == "opkg" ]]; then # opkg fork ipkg, ipkg (abandonné) sauf sur Syno? nb_packages=$( opkg list-installed 2>/dev/null ) @@ -1797,11 +1829,11 @@ fi_pkg_x(){ #v2 1/12/2017 [[ -z "$nb_packages" || "$nb_packages" -le 5 ]] && nb_packages="n/a" [[ ${1#*:} == "Inconnue" ]] && unset nb_packages # totalement inconnu ### - f_pr titre2 "gestion de paquets ${1#*:}" - f_di cmd:text "$nb_packages" "$cmd_nbPackages" "nombre de paquets installés" - f_di cmd "$sources" "$cmd_sources" "sources" - f_di cmd "$holded" "$cmd_holded" "paquets figés" - f_di var "$alert_pkg_todo" "aide souhaitée" + f_prnt titre2 "gestion de paquets ${1#*:}" + f_dspl cmd:text "$nb_packages" "$cmd_nbPackages" "nombre de paquets installés" + f_dspl cmd "$sources" "$cmd_sources" "sources" + f_dspl cmd "$holded" "$cmd_holded" "paquets figés" + f_dspl var "$alert_pkg_todo" "aide souhaitée" } fi_reseau(){ # 11/12/2017 ( configuration ) @@ -1874,45 +1906,45 @@ fi_reseau(){ # 11/12/2017 ( configuration ) alert_slaac+="à vérifier si cet état est souhaité." fi ### - f_pr titre2 "configuration" - f_pr code - f_pr l1 "ipv4" - f_pr l2 "$ip4" - f_pr + f_prnt titre2 "configuration" + f_prnt code + f_prnt l1 "ipv4" + f_prnt l2 "$ip4" + f_prnt [ "$(f__wcv "-l" "$fg_gws")" -gt 1 ] && pluriel="s" || unset pluriel - f_pr l2 "passerelle"$pluriel": ${gw4//$'\n'/ ⊗ }" - f_pr + f_prnt l2 "passerelle"$pluriel": ${gw4//$'\n'/ ⊗ }" + f_prnt figet_ip "-6" - f_pr l1 "ipv6" - f_pr l2 "$ip6" - f_pr + f_prnt l1 "ipv6" + f_prnt l2 "$ip6" + f_prnt [ "$(f__wcv "-w" "$fg_ifn_prior")" -gt 1 ] && pluriel="s" || unset pluriel - f_pr l2 "interface"$pluriel" sortante"$pluriel": $fg_ifn_prior" '[ "$fg_ifn_prior" ]' - f_pr - f_pr l2 "passerelles: ${gw6//$'\n'/ ⊗ }" - f_pr code - f_pr - f_pr 1 "les adresses Mac peuvent être affichées avec \`$DIRNAME""getInfo --mac\`" - f_pr 1 "l'IP publique peut être connue avec: \`$DIRNAME""getInfo --ip\`" - f_pr + f_prnt l2 "interface"$pluriel" sortante"$pluriel": $fg_ifn_prior" '[ "$fg_ifn_prior" ]' + f_prnt + f_prnt l2 "passerelles: ${gw6//$'\n'/ ⊗ }" + f_prnt code + f_prnt + f_prnt 1 "les adresses Mac peuvent être affichées avec \`$DIRNAME""getInfo --mac\`" + f_prnt 1 "l'IP publique peut être connue avec: \`$DIRNAME""getInfo --ip\`" + f_prnt # ip a & route & interface & resolv - f_di cmd "$ip_a" "ip address" - f_di cmd "$route" "ip route show" - f_di cmd "$interfaces" "grep -EHrsv '#|^$' /etc/network/interfaces*" "configuration manuelle" - f_di cmd "$resolv" "cat /etc/resolv.conf" "serveurs de noms DNS utilisés" + f_dspl cmd "$ip_a" "ip address" + f_dspl cmd "$route" "ip route show" + f_dspl cmd "$interfaces" "grep -EHrsv '#|^$' /etc/network/interfaces*" "configuration manuelle" + f_dspl cmd "$resolv" "cat /etc/resolv.conf" "serveurs de noms DNS utilisés" # iwconfig & iwlist - f_di cmd "$iwconfig" "/sbin/iwconfig 2>/dev/null" "état carte wifi" - f_di cmd "$canal_wifi" "/sbin/iwlist chan | grep 'Current Frequency' | grep -Eio 'channel [0-9]+'" \ + f_dspl cmd "$iwconfig" "/sbin/iwconfig 2>/dev/null" "état carte wifi" + f_dspl cmd "$canal_wifi" "/sbin/iwlist chan | grep 'Current Frequency' | grep -Eio 'channel [0-9]+'" \ "canal wifi utilisé" - f_pr 1 "la configuration ssid utilisée peut être connue (si NetworkManager installé) avec \n \`$DIRNAME""getInfo --ssid\`" - f_pr + f_prnt 1 "la configuration ssid utilisée peut être connue (si NetworkManager installé) avec \n \`$DIRNAME""getInfo --ssid\`" + f_prnt # network manager - f_pr 1 "gestionnaire de réseau" '[ "$netmgrinst" ]' + f_prnt 1 "gestionnaire de réseau" '[ "$netmgrinst" ]' [ "$(wc -w <<< $netmgrinst)" -gt 1 ] && pluriel="s" || unset pluriel - f_pr 2 "installé"$pluriel": **$netmgrinst**" '[ "$netmgrinst" ]' - f_pr 2 "en fonctionnement: **$netmgrrun**" '[ "$netmgrrun" ]' - f_pr 2 "non trouvé parmi: ${!netmgr[*]}" '[ -z "$netmgrrun" ]' - f_pr flush + f_prnt 2 "installé"$pluriel": **$netmgrinst**" '[ "$netmgrinst" ]' + f_prnt 2 "en fonctionnement: **$netmgrrun**" '[ "$netmgrrun" ]' + f_prnt 2 "non trouvé parmi: ${!netmgr[*]}" '[ -z "$netmgrrun" ]' + f_prnt flush f_dspl_alrt "$alert_ifconfig" "info" f_dspl_alrt "$alert_slaac" "info" } @@ -1927,24 +1959,24 @@ fi_serial(){ #v9 1/12/2017 machineId=$( cat /etc/machine-id 2>/dev/null ) [ "$machineId" ] || machineId="n/a" ### - f_pr titre1 "$BOLD""ID MAchine $BLUE$machineId$STD" - f_pr - f_pr 1 "$BOLD""N° Série:$STD" - f_pr - f_pr 2 "$GREEN""Disques:" - f_pr l3 "$BLUE$fg_disk_serial$STD" '[ "$fg_disk_serial" ]' - f_pr - f_pr 2 "$GREEN""Batteries:" - f_pr l3 "$BLUE$fg_batt_serial$STD" - f_pr - f_pr 2 "$GREEN""Chassis:" - f_pr l3 "$BLUE$chassis_serial$STD" + f_prnt titre1 "$BOLD""ID MAchine $BLUE$machineId$STD" + f_prnt + f_prnt 1 "$BOLD""N° Série:$STD" + f_prnt + f_prnt 2 "$GREEN""Disques:" + f_prnt l3 "$BLUE$fg_disk_serial$STD" '[ "$fg_disk_serial" ]' + f_prnt + f_prnt 2 "$GREEN""Batteries:" + f_prnt l3 "$BLUE$fg_batt_serial$STD" + f_prnt + f_prnt 2 "$GREEN""Chassis:" + f_prnt l3 "$BLUE$chassis_serial$STD" echo -e "$text\n" } fi_ssid(){ #v2 11/12/2017 local nm_ssid text - local fileOutput="/tmp/$RANDOM-$RANDOM" # ré-assigne sortie pour f_di + local fileOutput="/tmp/$RANDOM-$RANDOM" # ré-assigne sortie pour f_dspl [ "$EUID" -eq 0 ] || f__error "Root requis" [ $( f__which nmcli ) ] || f__error "NetworkManager requis" @@ -1954,15 +1986,15 @@ fi_ssid(){ #v2 11/12/2017 nm_ssid=$( f_grep_file "/etc/NetworkManager/system-connections/*" "lignevide" ) ### f__info "$RED""Attention:$BLUE la clé du réseau wifi est visible" - f_pr titre1 "configuration(s) ssid networkmanager" - f_di cmd "$nm_ssid" "grep -Ersv '#|^$' /etc/NetworkManager/system-connections/*" - f_pr flush - f_dspl_md "$fileOutput" "marge" + f_prnt titre1 "configuration(s) ssid networkmanager" + f_dspl cmd "$nm_ssid" "grep -Ersv '#|^$' /etc/NetworkManager/system-connections/*" + f_prnt flush + f_prnt_md "$fileOutput" "marge" rm "$fileOutput" } -fi_system(){ # 9/12/2017 - local mbr uname bootImage initDaemon date_install ligne lastboot uptime uptimePure loadAverage pluriel text +fi_system(){ # 12/12/2017 + local mbr uname bootImage initDaemon date_install lastboot uptime uptimePure loadAverage pluriel text local enum_batt serverX local alimentation alim_total @@ -1998,8 +2030,8 @@ fi_system(){ # 9/12/2017 initDaemon=${initDaemon/systemd /systemd v} fi initDaemon=${initDaemon^} - while read ligne; do - date_install=$ligne + while read -r; do + date_install=$REPLY done <<< $( ls -lt --time-style '+FORMAT %d/%m/%Y' / ) [[ "$date_install" =~ .*([0-9]{2}/[0-9]{2}/[0-9]{4}).* ]] && date_install=${BASH_REMATCH[1]} # lastboot="$(last -n 1 --time-format iso reboot | gawk 'FNR==1 {sub(/T/," ",$5);print $5}')" # remis à jours en début de mois ?!! @@ -2045,8 +2077,8 @@ fi_system(){ # 9/12/2017 [[ "$serverX" == " " && "$ENV_SSH" ]] && serverX+=":ssh" [ "$serverX" == " " ] && serverX="n/a" # alimentation - if [ $( grep -c 'AC' <<< $(ls /sys/class/power_supply/ 2>/dev/null) ) -gt 0 ]; then - alim_total=$( grep -cs . <<< $(ls /sys/class/power_supply/AC*/online) ) + if [ $( grep -c 'AC' <<< $( f__dir -lc "/sys/class/power_supply/" ) ) -gt 0 ]; then + alim_total=$( grep -cs 1 /sys/class/power_supply/AC*/online ) alimentation=$( gawk -v "alim_total=$alim_total" ' { alim_on=sprintf("%d", $1); if (alim_on>1) pllo="s" } END { if ( alim_total > 1 ) pllt="s"; printf alim_total " alimentation" pllt @@ -2056,61 +2088,61 @@ fi_system(){ # 9/12/2017 # batterie(s) enum_batt=$(grep -E '[A-Z][A-Z]' <<< $fg_batt) ### - [ "$ORIGIN" ] && f_pr titre2 "système" - f_pr l "$( sed -E 's/(.*)/**\1** /' <<<$fg_dmi )" # en gras - f_pr - f_pr 1 "CPU" - f_pr 2 "**$( sed -n '1p' <<< $fg_cpu )**" - f_pr 1 "Vidéo" - f_pr 2 "$( sed -E 's/(.*)/**\1**/' <<<$fe_gpu )" '[ "$fe_gpu" ]' - f_pr 2 "pas de carte graphique détectée" '[ "$fe_nb_gpu" -eq 0 ]' - f_pr 1 "Réseau" - f_pr 2 "$( sed -E 's/(.*)/**\1**/' <<<$fe_cards_reseau )" '[ "$fe_cards_reseau" ]' - f_pr 2 "pas de carte réseau détectée" '[ "$fe_nb_reseau" -eq 0 ]' - f_pr 1 "Audio" - f_pr 2 "$( sed -E 's/(.*)/**\1**/' <<<$fe_cards_audio )" '[ "$fe_cards_audio" ]' - f_pr 2 "pas de carte réseau détectée" '[ "$fe_nb_audio" -eq 0 ]' - f_pr - f_pr l '```' - f_pr l1 "$fg_distrib" - f_pr l2 "$uname" - f_pr l2 "boot: $mbr" - f_pr l2 "architecture système: $fu_archi" - f_pr l2 "date d'installation: $date_install" - f_pr l2 "démon d'initialisation: $initDaemon" - f_pr l2 "shell actif: $fg_shell" + [ "$ORIGIN" ] && f_prnt titre2 "système" + f_prnt l "$( sed -E 's/(.*)/**\1** /' <<<$fg_dmi )" # en gras + f_prnt + f_prnt 1 "CPU" + f_prnt 2 "**$( sed -n '1p' <<< $fg_cpu )**" + f_prnt 1 "Vidéo" + f_prnt 2 "$( sed -E 's/(.*)/**\1**/' <<<$fe_gpu )" '[ "$fe_gpu" ]' + f_prnt 2 "pas de carte graphique détectée" '[ "$fe_nb_gpu" -eq 0 ]' + f_prnt 1 "Réseau" + f_prnt 2 "$( sed -E 's/(.*)/**\1**/' <<<$fe_cards_reseau )" '[ "$fe_cards_reseau" ]' + f_prnt 2 "pas de carte réseau détectée" '[ "$fe_nb_reseau" -eq 0 ]' + f_prnt 1 "Audio" + f_prnt 2 "$( sed -E 's/(.*)/**\1**/' <<<$fe_cards_audio )" '[ "$fe_cards_audio" ]' + f_prnt 2 "pas de carte réseau détectée" '[ "$fe_nb_audio" -eq 0 ]' + f_prnt + f_prnt l '```' + f_prnt l1 "$fg_distrib" + f_prnt l2 "$uname" + f_prnt l2 "boot: $mbr" + f_prnt l2 "architecture système: $fu_archi" + f_prnt l2 "date d'installation: $date_install" + f_prnt l2 "démon d'initialisation: $initDaemon" + f_prnt l2 "shell actif: $fg_shell" [ "$( f__wcv -w "$fg_shells" )" -gt 1 ] && pluriel="s" || unset pluriel - f_pr l2 "shell"$pluriel" installé"$pluriel": $fg_shells" - f_pr l2 "$bootImage" - f_pr - f_pr l1 "Environnement" - f_pr l2 "serveur d'affichage: $serverX" - f_pr l2 "nombre d'écrans: $fg_nb_screen" + f_prnt l2 "shell"$pluriel" installé"$pluriel": $fg_shells" + f_prnt l2 "$bootImage" + f_prnt + f_prnt l1 "Environnement" + f_prnt l2 "serveur d'affichage: $serverX" + f_prnt l2 "nombre d'écrans: $fg_nb_screen" [ "$(f__wcv "-wv" "$fg_resolution" "pixels")" -gt 1 ] && pluriel="s" || unset pluriel - f_pr l2 "résolution"$pluriel": $fg_resolution" + f_prnt l2 "résolution"$pluriel": $fg_resolution" [ "$(wc -w <<< $fg_dsp_mngr)" -gt 1 ] && pluriel="s" || unset pluriel - f_pr l2 "display manager"$pluriel": $fg_dsp_mngr" - f_pr l2 "display manager actif: $fg_dsp_mngr_actif" '[ "$fg_dsp_mngr_actif" != "$fg_dsp_mngr" ]' - f_pr l2 "desktop (DE): $fg_de" - f_pr l2 "panel: $fg_de_panel" '[ "$fg_de_panel" ]' - f_pr l2 "window manager: $fg_wm" - f_pr - f_pr l1 "Matériel" + f_prnt l2 "display manager"$pluriel": $fg_dsp_mngr" + f_prnt l2 "display manager actif: $fg_dsp_mngr_actif" '[ "$fg_dsp_mngr_actif" != "$fg_dsp_mngr" ]' + f_prnt l2 "desktop (DE): $fg_de" + f_prnt l2 "panel: $fg_de_panel" '[ "$fg_de_panel" ]' + f_prnt l2 "window manager: $fg_wm" + f_prnt + f_prnt l1 "Matériel" [ "$fg_nb_cpu" -gt 1 ] && pluriel="s" || unset pluriel - f_pr l2 "$fg_nb_cpu processeur"$pluriel" $fg_cpu_arch" + f_prnt l2 "$fg_nb_cpu processeur"$pluriel" $fg_cpu_arch" [ "$fe_nb_bluez" -gt 1 ] && pluriel="s" || unset pluriel - f_pr l2 "$fe_nb_bluez carte"$pluriel" bluetooth ($fe_cards_bluez)" '[ "$fe_nb_bluez" -gt 0 ]' - f_pr l2 "$alimentation" '[ "$alimentation" ]' + f_prnt l2 "$fe_nb_bluez carte"$pluriel" bluetooth ($fe_cards_bluez)" '[ "$fe_nb_bluez" -gt 0 ]' + f_prnt l2 "$alimentation" '[ "$alimentation" ]' [ "$fg_nb_batt" -gt "1" ] && pluriel="s" || unset pluriel - f_pr l2 "$fg_nb_batt batterie"$pluriel" présente"$pluriel":" '[ "$fg_batt" ]' - f_pr l3 "$enum_batt" '[ "$fg_batt" ]' - f_pr l '```' - f_pr - f_pr 1 "$( sed -E 's/^(.*: )(.*)/\1**\2**/' <<<$fg_disk_part_fix_tot )" '[ "$fg_disk_part_fix_tot" ]' - f_pr 1 "dernier boot: **$lastboot**, il y a **$uptime**" + f_prnt l2 "$fg_nb_batt batterie"$pluriel" présente"$pluriel":" '[ "$fg_batt" ]' + f_prnt l3 "$enum_batt" '[ "$fg_batt" ]' + f_prnt l '```' + f_prnt + f_prnt 1 "$( sed -E 's/^(.*: )(.*)/\1**\2**/' <<<$fg_disk_part_fix_tot )" '[ "$fg_disk_part_fix_tot" ]' + f_prnt 1 "dernier boot: **$lastboot**, il y a **$uptime**" [ "$fg_nb_threads" -gt "1" ] && pluriel="s" || unset pluriel - f_pr 1 "$loadAverage" - f_pr flush + f_prnt 1 "$loadAverage" + f_prnt flush } fi_system_analyse(){ #v 2/12/2017 @@ -2175,15 +2207,15 @@ fi_system_analyse(){ #v 2/12/2017 cmd_bootGraph="systemd-analyze plot > $file ; xdg-open graph.svg" cmt_bootGraph="graph durées et ordre de chargement des services" ### - f_pr titre2 "analyse boot systemd" - f_pr 1 "pas de service en erreur" '[ -z "$srvcFail" ]' - f_di cmd "$bootTime" "$cmd_bootTime" "$cmt_bootTime" - f_di cmd "$srvcFail" "$cmd_srvcFail" "$cmt_srvcFail" + f_prnt titre2 "analyse boot systemd" + f_prnt 1 "pas de service en erreur" '[ -z "$srvcFail" ]' + f_dspl cmd "$bootTime" "$cmd_bootTime" "$cmt_bootTime" + f_dspl cmd "$srvcFail" "$cmd_srvcFail" "$cmt_srvcFail" f_dspl_alrt "$info_services" "info" f_dspl_alrt "$alert_srvcFail" "alert" - f_di cmd "$bootBlame" "$cmd_bootBlame" "$cmt_bootBlame" - f_di cmd "$bootCritic" "$cmd_bootCritic" "$cmt_bootCritic" - f_di cmd:text "$bootGraph" "$cmd_bootGraph" "$cmt_bootGraph" + f_dspl cmd "$bootBlame" "$cmd_bootBlame" "$cmt_bootBlame" + f_dspl cmd "$bootCritic" "$cmd_bootCritic" "$cmt_bootCritic" + f_dspl cmd:text "$bootGraph" "$cmd_bootGraph" "$cmt_bootGraph" } fi_usb(){ # 1/12/2017 @@ -2193,9 +2225,9 @@ fi_usb(){ # 1/12/2017 lsusb_t=$( lsusb -t ) [ "$lsusb" ] || return 0 ### - f_pr titre2 "USB" - f_di cmd "$lsusb" "lsusb" - f_di cmd "$lsusb_t" "lsusb -t" + f_prnt titre2 "USB" + f_dspl cmd "$lsusb" "lsusb" + f_dspl cmd "$lsusb_t" "lsusb -t" } fi_vrms(){ # 1/12/2017 @@ -2219,13 +2251,13 @@ fi_vrms(){ # 1/12/2017 vrms=$( sed -E "s/.*rms would be proud.*/$tempo/" <<< "$vrms" ) fi ### - f_pr titre2 "paquets non-libres" - f_di cmd "$vrms" "vrms" "détection des paquets non libres par RMS" - f_pr flush + f_prnt titre2 "paquets non-libres" + f_dspl cmd "$vrms" "vrms" "détection des paquets non libres par RMS" + f_prnt flush } # informations batterie(s), assigne $fg_nb_batt $fg_batt $fg_batt_serial -figet_batt(){ #v2 9/12/2017 +figet_batt(){ #v2 12/12/2017 local batt_detail batt_unit batt_capa_design batt_capa_full batt_capa_now batt_conso local batt_volt_min batt_volt_now batt_status batt_cycle alert_batt_alarm local batt_sante batt_restant tempo batRep ibat uevent @@ -2236,62 +2268,62 @@ figet_batt(){ #v2 9/12/2017 [ "$fg_batt" ] || fg_batt="répertoire power_supply inaccessible" return 1 fi - fg_nb_batt="$(grep -is 'Battery' /sys/class/power_supply/*/type | grep -c .)" # pas de messages, pb gentoo, pk? + fg_nb_batt=$( grep -is 'Battery' /sys/class/power_supply/*/type | grep -c . ) # pas de messages, pb gentoo, pk? if [ "$fg_nb_batt" -eq 0 ]; then return 0 fi - batRep="/sys/class/power_supply" + batRep="/sys/class/power_supply/" unset batt_detail - for ibat in $(ls $batRep); do - grep -qi 'Battery' "$batRep/$ibat/type" || continue # plus loin si non batterie - [ -e "$batRep/$ibat/uevent" ] || batt_detail="$ibat: **uevent** incorrect" - [ -e "$batRep/$ibat/uevent" ] || continue - uevent="$(grep -s . $batRep/$ibat/uevent)" + for ibat in $batRep*; do + grep -qi 'Battery' "$ibat/type" || continue # plus loin si non batterie + [ -e "$ibat/uevent" ] || batt_detail="${ibat#$batRep}: **uevent** inexistant" + [ -e "$ibat/uevent" ] || continue + uevent=$( grep -s . $ibat/uevent ) # extractions valeur de calcul selon type if grep -q 'POWER_SUPPLY_CHARGE_' <<< $uevent ; then batt_unit="mAh" - batt_capa_design="$(gawk -F '=' '/POWER_SUPPLY_CHARGE_FULL_DESIGN=/ {printf "%d", $2/1000}' <<< $uevent)" # mA - batt_capa_full="$(gawk -F '=' '/POWER_SUPPLY_CHARGE_FULL=/ {printf "%d", $2/1000}' <<< $uevent)" # mA - batt_capa_now="$(gawk -F '=' '/POWER_SUPPLY_CHARGE_NOW=/ {printf "%d", $2/1000}' <<< $uevent)" # mA - batt_conso="$(gawk -F '=' '/POWER_SUPPLY_CURRENT_NOW=/ {printf "%d", $2/1000}' <<< $uevent)" # mA + batt_capa_design=$( gawk -F '=' '/POWER_SUPPLY_CHARGE_FULL_DESIGN=/ {printf "%d", $2/1000}' <<< $uevent ) # mA + batt_capa_full=$( gawk -F '=' '/POWER_SUPPLY_CHARGE_FULL=/ {printf "%d", $2/1000}' <<< $uevent ) # mA + batt_capa_now=$( gawk -F '=' '/POWER_SUPPLY_CHARGE_NOW=/ {printf "%d", $2/1000}' <<< $uevent ) # mA + batt_conso=$( gawk -F '=' '/POWER_SUPPLY_CURRENT_NOW=/ {printf "%d", $2/1000}' <<< $uevent ) # mA elif grep -q 'POWER_SUPPLY_ENERGY_' <<< $uevent ; then batt_unit="Wh" - batt_capa_design="$(gawk -F '=' '/POWER_SUPPLY_ENERGY_FULL_DESIGN=/ {printf "%.2f", $2/1000000}' <<< $uevent)" # W - batt_capa_full="$(gawk -F '=' '/POWER_SUPPLY_ENERGY_FULL=/ {printf "%.2f", $2/1000000}' <<< $uevent)" # W - batt_capa_now="$(gawk -F '=' '/POWER_SUPPLY_ENERGY_NOW=/ {printf "%.2f", $2/1000000}' <<< $uevent)" # W - batt_conso="$(gawk -F '=' '/POWER_SUPPLY_POWER_NOW=/ {printf "%.2f", $2/1000000}' <<< $uevent)" # W + batt_capa_design=$( gawk -F '=' '/POWER_SUPPLY_ENERGY_FULL_DESIGN=/ {printf "%.2f", $2/1000000}' <<< $uevent ) # W + batt_capa_full=$( gawk -F '=' '/POWER_SUPPLY_ENERGY_FULL=/ {printf "%.2f", $2/1000000}' <<< $uevent ) # W + batt_capa_now=$( gawk -F '=' '/POWER_SUPPLY_ENERGY_NOW=/ {printf "%.2f", $2/1000000}' <<< $uevent ) # W + batt_conso=$( gawk -F '=' '/POWER_SUPPLY_POWER_NOW=/ {printf "%.2f", $2/1000000}' <<< $uevent ) # W fi # extractions simples - batt_volt_min="$(gawk -F '=' '/POWER_SUPPLY_VOLTAGE_MIN_DESIGN=/ {printf "%.2f", $2/1000000}' <<< $uevent)" # V - batt_volt_now="$(gawk -F '=' '/POWER_SUPPLY_VOLTAGE_NOW=/ {printf "%.2f", $2/1000000}' <<< $uevent)" # V - batt_status="$(gawk -F '=' '/POWER_SUPPLY_STATUS=/ {print $2}' <<< $uevent)" - batt_cycle="$(gawk -F '=' '/POWER_SUPPLY_CYCLE_COUNT=/ {print $2}' <<< $uevent)" - fg_batt_serial="$(gawk -F '=' '/POWER_SUPPLY_SERIAL_NUMBER=/ {sub(/^ | $|0/,"",$2); print $2}' <<< $uevent)" - alert_batt_alarm="$(cat $batRep/$ibat/alarm 2>/dev/null)" + batt_volt_min=$( gawk -F '=' '/POWER_SUPPLY_VOLTAGE_MIN_DESIGN=/ {printf "%.2f", $2/1000000}' <<< $uevent ) # V + batt_volt_now=$( gawk -F '=' '/POWER_SUPPLY_VOLTAGE_NOW=/ {printf "%.2f", $2/1000000}' <<< $uevent ) # V + batt_status=$( gawk -F '=' '/POWER_SUPPLY_STATUS=/ {print $2}' <<< $uevent ) + batt_cycle=$( gawk -F '=' '/POWER_SUPPLY_CYCLE_COUNT=/ {print $2}' <<< $uevent ) + fg_batt_serial=$( gawk -F '=' '/POWER_SUPPLY_SERIAL_NUMBER=/ {sub(/^ | $|0/,"",$2); print $2}' <<< $uevent ) + alert_batt_alarm=$( cat $ibat/alarm 2>/dev/null ) [ "$alert_batt_alarm" == "0" ] && unset alert_batt_alarm || alert_batt_alarm="$ibat: $alert_batt_alarm" # calculs - batt_sante="$(gawk '$1 != "na" && $2 != "" && $2 != 0 {printf "%.1f", $1/$2*100}' <<< "$batt_capa_full $batt_capa_design")" + batt_sante=$( gawk '$1 != "na" && $2 != "" && $2 != 0 {printf "%.1f", $1/$2*100}' <<< "$batt_capa_full $batt_capa_design" ) if [[ "$batt_status" == "Full" || "$batt_status" == "Unknown" ]]; then batt_restant="totalement chargée" elif [ "$batt_status" == "Discharging" ]; then batt_restant="en décharge, reste approximativement: " - tempo="$(gawk '$1+$2 != "" && $2!=0 {print $1*0.9/$2}' <<< "$batt_capa_now $batt_conso")" + tempo=$( gawk '$1+$2 != "" && $2!=0 {print $1*0.9/$2}' <<< "$batt_capa_now $batt_conso" ) elif [ "$batt_status" == "Charging" ]; then batt_restant="en charge, reste approximativement: " - tempo="$(gawk '$1+$2+$3 != "" && $3 != 0 {print ($1-$2)/$3}' <<< "$batt_capa_full $batt_capa_now $batt_conso")" + tempo=$( gawk '$1+$2+$3 != "" && $3 != 0 {print ($1-$2)/$3}' <<< "$batt_capa_full $batt_capa_now $batt_conso" ) fi - batt_restant+="$(gawk '$1 != "" {printf "%d h %02d mn \n", $1, $1*60%60}' <<< $tempo) " + batt_restant+=$( gawk '$1 != "" {printf "%d h %02d mn \n", $1, $1*60%60}' <<< $tempo )" " # mise en forme pour sortie, séparateur milliers if [ "$batt_unit" == "mAh" ]; then - batt_capa_design="$(printf "%'d" $batt_capa_design)" - batt_capa_full="$(printf "%'d" $batt_capa_full)" - batt_conso="$(printf "%'d" $batt_conso)" - batt_capa_now="$(printf "%'d" $batt_capa_now)" + batt_capa_design=$( printf "%'d" $batt_capa_design ) + batt_capa_full=$( printf "%'d" $batt_capa_full ) + batt_conso=$( printf "%'d" $batt_conso ) + batt_capa_now=$( printf "%'d" $batt_capa_now ) fi # sortie # ligne 1 && n° série - batt_detail+="$ibat: $(cat $batRep/$ibat/manufacturer 2>/dev/null) " - batt_detail+="($(cat $batRep/$ibat/model_name 2>/dev/null)) $(cat $batRep/$ibat/technology 2>/dev/null), " + batt_detail+=${ibat#$batRep}": "$( cat $ibat/manufacturer 2>/dev/null )" " + batt_detail+="("$( cat $ibat/model_name 2>/dev/null )") "$( cat $ibat/technology 2>/dev/null )", " batt_detail+="$batt_capa_design$batt_unit - $batt_volt_min""V / $batt_volt_now""V (mini/actuel)" [ "$(xargs <<< $fg_batt_serial)" ] && fg_batt_serial="$batt_detail, n° série: $fg_batt_serial" || fg_batt_serial="n/a" [ "$batt_cycle" != "0" ] && batt_detail+=", $batt_cycle cycles "$'\n' || batt_detail+=" "$'\n' #ln 1fin @@ -2840,32 +2872,32 @@ figet_de(){ #v 9/12/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 9/12/2017 +figet_disk(){ #v2 12/12/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 fg_disk_table="$(printf '%-5s %-8s %-6s %-10s %-18s %-6s' "disk" "taille" "type" "vendeur" "modèle" " rév.")"$'\n' fg_disk_serial="$(printf '%-5s %-10s %-18s %-6s %-24s %s' "disk" "vendeur" "modèle " " rév." " n° série")"$'\n' - for idisk in $(grep -v 'loop' <<< $(ls /sys/block/)); do - size="$( lsblk -no SIZE -d /dev/$idisk | xargs )" #149,1G - type="$( sed -n '2p' <<< $(lsblk -no HOTPLUG /dev/$idisk) | xargs )" # 0 \n 0 \n ... + for idisk in $(f__dir -l "/sys/block/" "loop" ); do + size=$( lsblk -no SIZE -d /dev/$idisk | xargs ) #149,1G + type=$( sed -n '2p' <<< $(lsblk -no HOTPLUG /dev/$idisk) | xargs ) # 0 \n 0 \n ... [ "$type" == "0" ] && type="Fixe" || type="Amov" - vendor="$( lsblk -no VENDOR /dev/$idisk | xargs )" - model="$( lsblk -no MODEL /dev/$idisk | xargs )" - serial="$( lsblk -no SERIAL /dev/$idisk | xargs )" + vendor=$( lsblk -no VENDOR /dev/$idisk | xargs ) + model=$( lsblk -no MODEL /dev/$idisk | xargs ) + serial=$( lsblk -no SERIAL /dev/$idisk | xargs ) if [[ -z "$vendor" || -z "$model" ]]; then # tentative extraction valeur via /dev/disk/by-id/ vendor="n/a" - vendor="$(ls -l /dev/disk/by-id/ | gawk ' !/-part/ && !/wwn-/ {print $9,$11}' | xargs )" - vendor="$(sed -E 's/.*-(.*)_[0-9]+.*$/\1/;s/_/ /g' <<< $vendor)" - fg_disk_table+="$(printf '%-5s %-8s %-6s %s' "$idisk" "$size" "$type" "$vendor")"$'\n' - fg_disk_serial+="$(printf '%-5s %s %s' "$idisk" "$vendor" "$serial")"$'\n' + vendor=$( ls -l /dev/disk/by-id/ | gawk ' !/-part/ && !/wwn-/ {print $9,$11}' | xargs ) + vendor=$( sed -E 's/.*-(.*)_[0-9]+.*$/\1/;s/_/ /g' <<< $vendor ) + fg_disk_table+=$( printf '%-5s %-8s %-6s %s' "$idisk" "$size" "$type" "$vendor" )$'\n' + fg_disk_serial+=$( printf '%-5s %s %s' "$idisk" "$vendor" "$serial" )$'\n' else - rev="$( lsblk -no REV /dev/$idisk | xargs )" - fg_disk_table+="$(printf '%-5s %-8s %-6s %-10s %-18s %-6s' "$idisk" "$size" "$type" "$vendor" "$model" "$rev")"$'\n' - fg_disk_serial+="$(printf '%-5s %-10s %-18s %-6s %-24s %s' "$idisk" "$vendor" "$model" "$rev" "$serial")"$'\n' + rev=$( lsblk -no REV /dev/$idisk | xargs ) + fg_disk_table+=$( printf '%-5s %-8s %-6s %-10s %-18s %-6s' "$idisk" "$size" "$type" "$vendor" "$model" "$rev")$'\n' + fg_disk_serial+=$( printf '%-5s %-10s %-18s %-6s %-24s %s' "$idisk" "$vendor" "$model" "$rev" "$serial")$'\n' fi # liste disques fixes ou amovibles - if [ "$(lsblk -no HOTPLUG /dev/$idisk | xargs | cut -d' ' -f2)" == "0" ]; then + if [ "$( lsblk -no HOTPLUG /dev/$idisk | xargs | cut -d' ' -f2 )" == "0" ]; then fg_disk_fixe+="$idisk " # "sda sdb ..." else fg_disk_amov+="$idisk " @@ -2876,15 +2908,15 @@ figet_disk(){ #v2 9/12/2017 # 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) - lsblk="$(lsblk -no KNAME,MOUNTPOINT $(printf '/dev/%s ' $fg_disk_fixe) 2>/dev/null)" - fg_disk_part_fixe_m="$(echo "$lsblk" | gawk '/\// {print $1}' | tr '\n' ' ')" - fg_disk_part_fixe_nm="$(echo "$lsblk" | gawk '!/\// && /[0-9]+/ && !/\[SWAP\]/{print $1}' | tr '\n' ' ')" + lsblk=$( lsblk -no KNAME,MOUNTPOINT $(printf '/dev/%s ' $fg_disk_fixe) 2>/dev/null ) + fg_disk_part_fixe_m=$( echo "$lsblk" | gawk '/\// {print $1}' | tr '\n' ' ') + fg_disk_part_fixe_nm=$( echo "$lsblk" | gawk '!/\// && /[0-9]+/ && !/\[SWAP\]/{print $1}' | tr '\n' ' ' ) # séquences partitions amovibles, montées (m) et non montées (nm) - lsblk="$(lsblk -no KNAME,MOUNTPOINT $(printf '/dev/%s ' $fg_disk_amov) 2>/dev/null)" - fg_disk_part_amov_m="$(echo "$lsblk" | gawk '/\// {print $1}' | tr '\n' ' ')" - fg_disk_part_amov_nm="$(echo "$lsblk" | gawk '!/\// && /[0-9]+/ && !/\[SWAP\]/{print $1}' | tr '\n' ' ')" + lsblk=$( lsblk -no KNAME,MOUNTPOINT $(printf '/dev/%s ' $fg_disk_amov) 2>/dev/null ) + fg_disk_part_amov_m=$( echo "$lsblk" | gawk '/\// {print $1}' | tr '\n' ' ' ) + fg_disk_part_amov_nm=$( echo "$lsblk" | gawk '!/\// && /[0-9]+/ && !/\[SWAP\]/{print $1}' | tr '\n' ' ' ) # partitions swap - fg_disk_part_swap="$(echo "$(lsblk -no KNAME,MOUNTPOINT)" | gawk '/\[SWAP\]/ {print $1}' | tr '\n' ' ')" + fg_disk_part_swap=$( echo "$(lsblk -no KNAME,MOUNTPOINT)" | gawk '/\[SWAP\]/ {print $1}' | tr '\n' ' ' ) [ "$fg_disk_fixe" ] || fg_disk_fixe="-" [ "$fg_disk_amov" ] || fg_disk_amov="-" [ "$fg_disk_part_fixe_m" ] || fg_disk_part_fixe_m="-" @@ -2898,20 +2930,20 @@ figet_disk(){ #v2 9/12/2017 fg_disk_part_fix_tot="$(sed 's/G/Go/g; s/M/Mo/g; s/K/ko/g' <<< $fg_disk_part_fix_tot)" [ "$fg_disk_part_fix_tot" ] || fg_disk_part_fix_tot="n/a" # liste des disques par type - list_id="$(ls -l /dev/disk/by-id/ | gawk '{print $9,$11}')" - fg_disk_ata="$(sed '/^ata/!d; /part/d' <<< $list_id | gawk -F '/' '{print $NF}' | tr '\n' ' ')" - fg_disk_usb="$(sed -n '/part/d; /^usb/p' <<< $list_id | gawk -F '/' '{print $NF}' | tr '\n' ' ')" -# fg_disk_mmc="$(sed '/^mmc/!d; /part/d; /\/mmcblk/!d; s/^.*\(mmcblk..*\)$/\1/' <<< $list_id | tr '\n' ' ')" - fg_disk_mmc="$(sed '/^mmc/!d; /part/d' <<< $list_id | gawk -F '/' '{print $NF}' | tr '\n' ' ')" - fg_disk_nvme="$(sed '/^nvme/!d; /part/d' <<< $list_id | gawk -F '/' '{print $NF}' | tr '\n' ' ')" - [ "$fg_disk_ata" ] || fg_disk_ata="-" && fg_disk_ata="$(tr ' ' '\n' <<< "$fg_disk_ata" | sort | tr '\n' ' ')" - [ "$fg_disk_usb" ] || fg_disk_usb="-" && fg_disk_usb="$(tr ' ' '\n' <<< "$fg_disk_usb" | sort | tr '\n' ' ')" - [ "$fg_disk_mmc" ] || fg_disk_mmc="-" && fg_disk_mmc="$(tr ' ' '\n' <<< "$fg_disk_mmc" | sort | tr '\n' ' ')" - [ "$fg_disk_nvme" ] || fg_disk_nvme="-" && fg_disk_nvme="$(tr ' ' '\n' <<< "$fg_disk_nvme" | sort | tr '\n' ' ')" + list_id=$( ls -l /dev/disk/by-id/ | gawk '{print $9,$11}' ) + fg_disk_ata=$( sed '/^ata/!d; /part/d' <<< $list_id | gawk -F '/' '{print $NF}' | tr '\n' ' ') + fg_disk_usb=$( sed -n '/part/d; /^usb/p' <<< $list_id | gawk -F '/' '{print $NF}' | tr '\n' ' ' ) +# fg_disk_mmc=$( sed '/^mmc/!d; /part/d; /\/mmcblk/!d; s/^.*\(mmcblk..*\)$/\1/' <<< $list_id | tr '\n' ' ' ) + fg_disk_mmc=$( sed '/^mmc/!d; /part/d' <<< $list_id | gawk -F '/' '{print $NF}' | tr '\n' ' ' ) + fg_disk_nvme=$( sed '/^nvme/!d; /part/d' <<< $list_id | gawk -F '/' '{print $NF}' | tr '\n' ' ' ) + [ "$fg_disk_ata" ] || fg_disk_ata="-" && fg_disk_ata=$( tr ' ' '\n' <<< "$fg_disk_ata" | sort | tr '\n' ' ' ) + [ "$fg_disk_usb" ] || fg_disk_usb="-" && fg_disk_usb=$( tr ' ' '\n' <<< "$fg_disk_usb" | sort | tr '\n' ' ' ) + [ "$fg_disk_mmc" ] || fg_disk_mmc="-" && fg_disk_mmc=$( tr ' ' '\n' <<< "$fg_disk_mmc" | sort | tr '\n' ' ' ) + [ "$fg_disk_nvme" ] || fg_disk_nvme="-" && fg_disk_nvme=$( tr ' ' '\n' <<< "$fg_disk_nvme" | sort | tr '\n' ' ' ) } # assigne $fg_distrib -figet_distrib(){ #v 23/11/2017 +figet_distrib(){ #v 12/12/2017 local prefix version # priorité /etc/os-release, version officielle systemd [ -e "/etc/os-release" ] && source "/etc/os-release" || source "/usr/lib/os-release" @@ -2920,16 +2952,18 @@ figet_distrib(){ #v 23/11/2017 fg_distrib=${fg_distrib//'"'} # suppression " fi # essai version sur fichier - version=$(cat /etc/*version 2>/dev/null) # fichier *version? + version=$( cat /etc/*version 2>/dev/null ) # fichier *version? [[ $version =~ [0-9.]+ ]] || unset version # qui contient des chiffres # essai lsb_release, antique méthode - [ "$fg_distrib" ] && [[ $(grep -is 'chrome-' /proc/version) || -f "/dev/cros_ec" ]] && fg_distrib="$(lsb_release -sd 2>/dev/null)/xhrome-os" - [ "$fg_distrib" ] && [ $(grep -is 'microsoft' /proc/version) ] && fg_distrib="$(lsb_release -sd 2>/dev/null)/windows" - [ "$fg_distrib" ] || fg_distrib=$(lsb_release -sd 2>/dev/null) + if [ "$fg_distrib" ]; then + [[ $( grep -is 'microsoft' /proc/version ) ]] && fg_distrib=$( lsb_release -sd 2>/dev/null )"/windows" + [[ $( grep -is 'chrome-' /proc/version ) || -f "/dev/cros_ec" ]] && fg_distrib=$( lsb_release -sd 2>/dev/null )"/chrome-os" + fi + [ "$fg_distrib" ] || fg_distrib=$( lsb_release -sd 2>/dev/null ) # prefix sur nom fichier éventuels *[_-][version|release] - [ "$prefix" ] || prefix=$(ls /etc/*_version 2>/dev/null | sed -En 's#/etc/(.*)_version#\1#p') - [ "$prefix" ] || prefix=$(ls /etc/*-version 2>/dev/null | sed -En 's#/etc/(.*)-version#\1#p') - [ "$prefix" ] || prefix=$(ls /etc/*-release 2>/dev/null | grep -v 'os-release' | sed -En 's#/etc/(.*)-release#\1#p') + [ "$prefix" ] || prefix=$( f__dir -l '/etc/*_version' | sed -En 's#/etc/(.*)_version#\1#p' ) + [ "$prefix" ] || prefix=$( f__dir -l '/etc/*-version' | sed -En 's#/etc/(.*)-version#\1#p' ) + [ "$prefix" ] || prefix=$( f__dir -l '/etc/*-release' "os" | sed -En 's#/etc/(.*)-release#\1#p' ) # spécial complément [ "$prefix" == "redstar" ] && prefix="Red Star OS" [ "$prefix" ] && prefix=${prefix^} # 1er caractère majuscule @@ -2939,7 +2973,7 @@ figet_distrib(){ #v 23/11/2017 elif [ -z "$fg_distrib" ] && [ "$prefix" ]; then # si fg_distrib vide et si prefix fg_distrib="$prefix $(xargs <<< $version)" else - fg_distrib="$fg_distrib $(xargs <<< $version)" # utilisation fg_distrib "normal", sans préfixe (compris dans fg_distrib) + fg_distrib="$fg_distrib $( xargs <<< $version )" # utilisation fg_distrib "normal", sans préfixe (compris dans fg_distrib) fi fg_distrib=${fg_distrib% } # suppression espace final éventuel [ "$fg_distrib" ] || fg_distrib="${OS^} (indéterminé)" @@ -3063,25 +3097,24 @@ figet_dsp_mngr(){ #v1 27/11/2017 } # infos température et fan via acpi, assigne $fg_hw -figet_hw(){ #v2 31/10/2017 +figet_hw(){ #v2 12/12/2017 local name labelF inputF labelT inputT critT hystT maxiT fan temp ihw if [ ! -d /sys/class/hwmon/ ]; then fg_hw="gestion acpi hwmon non accessible" return 1 fi unset fan temp - for ihw in $(ls /sys/class/hwmon/); do - [ -e /sys/class/hwmon/$ihw/name ] && name="$(cat /sys/class/hwmon/$ihw/name)" || name="indéfini" + for ihw in /sys/class/hwmon/*; do + [ -e $ihw/name ] && name=$( cat $ihw/name 2>/dev/null ) || name="indéfini" ## TEMPÉRATURE - if grep -Eq 'temp[0-9]+' <<< $(ls /sys/class/hwmon/$ihw/) ; then + if grep -Eq 'temp[0-9]+' <<< $( f__dir -l $ihw ) ; then # tempX dans un nom de fichier # extraction label -# labelT=$(printf "%s/" "$(cat /sys/class/hwmon/$ihw/temp*_label 2>/dev/null)" | sed 's/ //g' | tr '\n' ' ') - labelT=$(printf "%s/" "$(cat /sys/class/hwmon/$ihw/temp*_label 2>/dev/null)" | tr ' ' '.' | tr '\n' ' ') + labelT=$( printf "%s/" "$( cat $ihw/temp*_label 2>/dev/null)" | tr ' ' '.' | tr '\n' ' ' ) # extraction températures - inputT=$(gawk '$0!="" && $0!=0 {printf "%.1f/", $1/1000}' <<< $(cat /sys/class/hwmon/$ihw/temp*_input 2>/dev/null)) - critT=$(gawk '$0!="" && $0!=0 {printf "%.1f/", $1/1000}' <<< $(cat /sys/class/hwmon/$ihw/temp*_crit 2>/dev/null)) - hystT=$(gawk '$0!="" && $0!=0 {printf "%.1f/", $1/1000}' <<< $(cat /sys/class/hwmon/$ihw/temp*_crit_hyst 2>/dev/null)) - maxiT=$(gawk '$0!="" && $0!=0 {printf "%.1f/", $1/1000}' <<< $(cat /sys/class/hwmon/$ihw/temp*_max 2>/dev/null)) + inputT=$( gawk '$0!="" && $0!=0 {printf "%.1f/", $1/1000}' $ihw/temp*_input 2>/dev/null ) + critT=$( gawk '$0!="" && $0!=0 {printf "%.1f/", $1/1000}' $ihw/temp*_crit 2>/dev/null ) + hystT=$( gawk '$0!="" && $0!=0 {printf "%.1f/", $1/1000}' $ihw/temp*_crit_hyst 2>/dev/null ) + maxiT=$( gawk '$0!="" && $0!=0 {printf "%.1f/", $1/1000}' $ihw/temp*_max 2>/dev/null ) # suppression doublons critT=$(echo $critT | tr '/' '\n' | sort --unique | tr '\n' '/') hystT=$(echo $hystT | tr '/' '\n' | sort --unique | tr '\n' '/') @@ -3106,11 +3139,11 @@ figet_hw(){ #v2 31/10/2017 fi fi ## FAN - if grep -Eq 'fan[0-9]+' <<< $(ls /sys/class/hwmon/$ihw/) ; then + if grep -Eq 'fan[0-9]+' <<< $( f__dir -l $ihw ) ; then # fanX dans nom de fichiers # extraction label - labelF=$(printf "%s/" $(cat /sys/class/hwmon/$ihw/fan*_label 2>/dev/null)) + labelF=$( printf "%s/" $( cat $ihw/fan*_label 2>/dev/null) ) # extraction vitesse fan, \047=' pour insérer séparateur de milliers - inputF=$(gawk '$0!="" && $0!=0 {printf "%\047d/", $1}' <<< $(cat /sys/class/hwmon/$ihw/fan*_input 2>/dev/null)) + inputF=$( gawk '$0!="" && $0!=0 {printf "%\047d/", $1}' $ihw/fan*_input 2>/dev/null ) # suppression dernier caractère (/) fin (nécessaire si multi-valeurs) [ "$labelF" ] && labelF=${labelF::-1} [ "$inputF" ] && inputF=${inputF::-1} @@ -3125,7 +3158,7 @@ figet_hw(){ #v2 31/10/2017 } # assigne $fg_ip, $fg_gws6, $fg_ifn, $fg_mac -figet_ip(){ # 11/12/2017 +figet_ip(){ # 12/12/2017 local target ifn [ $( f__which ip ) ] || return 1 @@ -3165,7 +3198,7 @@ figet_ip(){ # 11/12/2017 fi # ifnames & mac fg_ifn="" fg_mac="" - for ifn in $( ls /sys/class/net/ ) ; do + for ifn in $( f__dir -l /sys/class/net/ ) ; do if [ "$ifn" != "lo" ]; then fg_ifn+="$ifn " fg_mac+="$ifn: $( cat /sys/class/net/$ifn/address )"$'\n' @@ -3270,7 +3303,7 @@ figet_ip_pub(){ # 20/11/2017 # $1=audio|video|net & audio|ethernet|wireless, $2 objet raw|name|module, $3=[graph] (optirun, DRI), # affiche device (name), lspci détail (raw) # pour module (module kernel), video|ethernet|wireless, assigne $fg_modules_lp $fg_srch_mod_lp -figet_lspci(){ # 8/12/2017 +figet_lspci(){ # 12/12/2017 local motif slots lspci display='' prefixCmd modLspci dir modules mod_emplac imod mod_ko if [ "$1" = "audio" ]; then @@ -3286,7 +3319,7 @@ figet_lspci(){ # 8/12/2017 fi # uniquement les devices if [ "$2" == "name" ]; then - while read field1 lspci; do + while read -r field1 lspci; do lspci=${lspci#*: } # suppression début, jusqu"à': ' lspci=${lspci% (rev*} # suppression à la fin, '(rev..' lspci=${lspci/System Controller Hub } # suppression 'System Controller Hub ' @@ -3361,7 +3394,7 @@ figet_mem(){ # 9/12/2017 local freeDebug MemTotal MemFree MemAvailable Buffers Cached SReclaimable Shmem MemUsed local SwapTotal SwapFree SwapCached col a b c MemLibre [ "$2" == "debug" ] && freeDebug="$(free -hw | sed '3d')" - while read a b c; do + while read -r a b c; do [ "$a" == "MemTotal:" ] && MemTotal="$b" #echo "$a $((${b/kB}/1024))" ! partie entière ! [ "$a" == "MemAvailable:" ] && MemAvailable="$b" [ "$a" == "MemFree:" ] && MemFree="$b" @@ -3427,24 +3460,20 @@ figet_mem(){ # 9/12/2017 } # $1=bluetooth|audio [$2=moduleAChercher(audio)], assigne $fg_modules, $fg_mod_motif, fg_srch_mod -figet_modules(){ # 8/12/2017 +figet_modules(){ # 12/12/2017 local modules dir separator mod_emplac imod mod_ko if [ "$1" == "bluetooth" ]; then dir="/lib/modules/$(uname -r)/kernel/drivers/bluetooth" # répertoire à scruter # recherche modules/formation motif ou liste separator="|" # séparateur | par défaut - modules=$( ls -1R "$dir/"* | gawk -v separator="$separator" ' - /\.ko/ { - gsub(/^\/.*:$/,"") # supp ligne répertoire - gsub(/\/.*\//,"") # supp /../ - gsub(/\.ko/,"") # supp extension .ko - printf "%s%s",$0,separator }' ) # séparateur espace ou | + modules=$( f__dir -l "$dir" ) + modules=${modules//.ko} + modules=${modules// /|} modules=${modules%$separator} # suppression dernier séparateur modules=${modules//$separator/$'\n'} modules=$( sort <<< $modules ) modules=${modules//$'\n'/$separator} -# modules=$( echo $modules | tr "$separator" '\n' | sort | tr '\n' "$separator" ) elif [ "$1" == "audio" ]; then dir="/lib/modules/$(uname -r)" modules=$( sort -u <<< "$2" ) @@ -3943,7 +3972,7 @@ prg_2(){ # traitements principaux 1/12/2017 $i done fi - [[ "$1" == all ]] || f_dspl_md "$fileOutput" + [[ "$1" == all ]] || f_prnt_md "$fileOutput" } prg_3(){ # fin de traitements echo -e "--- \n" >> "$fileOutput" @@ -3953,10 +3982,11 @@ prg_3(){ # fin de traitements "vous pouvez le visualiser ultérieurement avec $GREEN$script -l" \ "vous pourrez l'exporter ultérieurement avec $BLUE$script -p" } -prg_menu(){ # 5/12/2017 +prg_menu(){ # 12/12/2017 function display_menu { - local centre=50 left=2 larg=60 reply line + local centre=50 left=2 larg=60 + if [ $(( $(tput cols) )) -le 80 ]; then centre=$(( $(tput cols)/2+$left )) larg=$(( $centre+3*$left )) @@ -3967,7 +3997,7 @@ function display_menu { tput hpa $centre printf '%.'$larg's' "$2" } - + echo -en " $GREEN$script -h$STD : afficher l'aide \n" display_menu "$GREEN$script -c$RED""s$STD : catégorie système" \ "$GREEN$script -c$RED""c$STD : catégorie configuration" @@ -3977,10 +4007,10 @@ function display_menu { " $GREEN$script -c$RED""sa$STD générera un rapport sur le système & l'analyse" echo -en "\n ( ne pas saisir le préfixe $YELLOW-c$STD, all par défaut)\n" echo -en "\n choix des catégories à générer (all pour toutes)? " - read reply - [ "$reply" ] && reply="-c${reply,,}" || reply="all" - reply="$(sed 's/-call/all/' <<< $reply)" - exec $0 "$reply" + read -r + [ "$REPLY" ] && REPLY="-c${REPLY,,}" || REPLY="all" + REPLY=$( sed 's/-call/all/' <<< $REPLY ) + exec $0 "$REPLY" } ######## début script / initialisation @@ -4039,8 +4069,8 @@ for j in $options; do ORIGIN='test' prg_1 "$*" echo -n "•" - fi_reseau - echo; f_dspl_md "$fileOutput" + fi_hw + echo; f_prnt_md "$fileOutput" exit ;; # test -c* | all ) [ "$j" == "-c" ] && exec $0 "menu" @@ -4052,19 +4082,19 @@ for j in $options; do -dx ) prg_1 "$*" fi_gpu "xorgOnly" - f_dspl_md "$fileOutput" + f_prnt_md "$fileOutput" exit ;; # essai détail, xorgOnly -dp ) prg_1 "$*" fi_pkg_apt "confOnly" - f_dspl_md "$fileOutput" + f_prnt_md "$fileOutput" exit ;; # essai util source/apt confOnly -j ) prg_1 "$*" prg_2 "a" exit ;; # exporte le rapport existant -l ) - f_dspl_md "$fileOutput" + f_prnt_md "$fileOutput" exit ;; # afficher le rapport existant -p ) fipaste @@ -4086,7 +4116,7 @@ for j in $options; do exit ;; # affiche ip public --mac ) figet_ip - f__info "fg_mac:\n$GREEN$fg_mac" + f__info "adresses MAC:\n$GREEN$fg_mac" exit ;; # affiche adresses mac --serial ) fi_serial diff --git a/scripts/getInfo_changelog.md b/scripts/getInfo_changelog.md index 583286d..2d474ea 100644 --- a/scripts/getInfo_changelog.md +++ b/scripts/getInfo_changelog.md @@ -1,6 +1,12 @@ # changelog getInfo +f__dialog_oui_non, f__dir +## getInfo 2.63.0 12/12/2017 + +* révision: général, optimisation affichage et comptage via ls +* révision: fi_pkg_apt, fi_pkg_x, figet_batt, figet_disk, figet_distrib, figet_hw, figet_modules +* fix: fi_system, comptage alim ## getInfo 2.62.0 11/12/2017