getInfo 3.26.0

This commit is contained in:
kyodev 2018-02-27 09:31:41 +01:00
parent 67a85b9d32
commit 0c5b3a9b7e
2 changed files with 87 additions and 65 deletions

View File

@ -1,7 +1,7 @@
#!/bin/bash
version=3.25.0
date="25/02/2018"
version=3.26.0
date="26/02/2018"
projet="simpledeb"
contact="IRC freenode.net ##sdeb ou https://framagit.org/kyodev/kyopages/issues/"
script="getInfo"
@ -90,8 +90,8 @@ f__dialog_oui_non(){ # 22/02/2018
# $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 (idem ls)
# -lc: liste en colonne des noms de fichiers seuls
# -l: liste inline des noms de fichiers seuls (sans chemin) (similaire ls)
# -lc: liste en colonne des noms de fichiers seuls (sans chemin) (similaire ls -1)
# 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"
@ -258,21 +258,14 @@ f__sudo(){ # 24/02/2018
fi
}
# $1=left|right|all si erreur option: all, $2 variable à trimer
f__trim(){
local tr="$1" display
if [[ ! "$tr" =~ left|right|all ]]; then
echo "${RED}apple trim incorrect$STD"
return 1
fi
while read -r ; do
REPLY=${REPLY// }
[[ "$tr" =~ left|all ]] && REPLY=${REPLY## }
[[ "$tr" =~ right|all ]] && REPLY=${REPLY%% }
display+="$REPLY"$'\n'
done <<< "$2"
echo "$display"
# $1=NOM de la variable à trimer (variable et non $variable), [$2=left|right|all], all si vide
# gain vitesse en test: 40 à 75% par rapport à '| xargs'
# var=$( function ) presque 2x lent que eval "var="
f__trim2(){ # 25/02/2018
local trim=${!1}
[[ "$2" == right || "$2" == all || -z "$2" ]] && trim="${trim%${trim##*[^[:space:]]}}" # fin right
[[ "$2" == left || "$2" == all || -z "$2" ]] && trim="${trim#${trim%%[^[:space:]]*}}" # début left
eval "$1=\"$trim\""
}
# $1=nombre à convertir en ko, affiche ko ou Mo ou Go
@ -543,7 +536,7 @@ f_grep_file(){ # 27/01/2018
echo -en "$display"
}
f_help(){ # 02/02/2018
f_help(){ # 26/02/2018
local ligne help=(
"-----------------------------------------------------------------------"
"$GREEN""./getInfo$STD : exécution script"
@ -562,6 +555,7 @@ f_help(){ # 02/02/2018
"$BLUE --serial$STD : affiche n° série disques, batterie et châssis, pas de rapport markdown"
"$BLUE --ssid$STD : affiche configurations ssid, pas de rapport markdown,$RED root & NetworkManager$STD requis"
"$BLUE -t$STD$GREEN""n$STD : durée de conservation du paste de$GREEN n$STD jour(s)"
"$BLUE --debug$STD : messages d'erreur (stderr) logués et exportés avec le rapport"
"-----------------------------------------------------------------------"
"$BLUE./$script -i$STD : installation du script dans le système $RED(root)$STD"
"$BLUE$script -h$STD, --help : affichage aide"
@ -906,15 +900,17 @@ fi_conf(){ # 21/02/2018
f_dspl cmd "$appArmor" "aa-status" "statut AppArmor"
}
fi_cpu(){ # 25/02/2018
fi_cpu(){ # 26/02/2018
local cpu_flags text iflag qte_flags text_flags="" pluriel
local alert_microcode
(( x_cpu == 1 )) || figet_cpu
(( x_cpu_flags == 1 )) || figet_cpu_flags # appel 'base' des tags, obtention $CPU_FLAGS
cpu_flags=$( sed -n 's/^flags.*: \(.*\)$/\1/p;' /proc/cpuinfo | sed -n '1p'| \
tr ' ' '\n' | sort | tr '\n' ' ' | xargs )
cpu_flags=$( awk -F ': ' '/^flags/ { print $2; exit }' /proc/cpuinfo | tr ' ' '\n' | sort | tr '\n' ' ' )
#~ cpu_flags=$( awk -F ': ' '/^flags/ { print $2; exit }' /proc/cpuinfo )
#~ cpu_flags=$( sort <<< ${cpu_flags// /$'\n'} )
#~ cpu_flags=${cpu_flags//$'\n'/ }
for iflag in $cpu_flags; do
text_flags+=$( awk -v motif="$iflag" -F '⟷' '
BEGIN { pattern = "^"toupper(motif) } # recherche sur majuscule
@ -924,7 +920,7 @@ fi_cpu(){ # 25/02/2018
}
' <<< "$CPU_FLAGS" )$'\n'
done
text_flags=${text_flags%[[:cntrl:]]} # suppression \n final
text_flags=${text_flags%[[:cntrl:]]} # suppression \n final
[ "$cpu_flags" ] && qte_flags=$( f__wcv -w "$cpu_flags" flags )
if ! figet_ucode ; then # retour fonction en erreur => pas d'installation mais possible
alert_microcode="$fg_ucode"
@ -1681,7 +1677,7 @@ fi_packagers(){ # 23/11/2017
fi
}
fi_pkg_apt(){ # 25/02/2018
fi_pkg_apt(){ # 26/02/2018
local dateMaj nb_packages ifile info_update text pluriel
local sources cmt_sources cmd_sources result
local apt_v apt_version apt_prefs cmt_apt_prefs cmd_apt_prefs alert_non_pref
@ -1694,7 +1690,7 @@ fi_pkg_apt(){ # 25/02/2018
local non_ii qte_non_ii cmt_non_ii cmd_non_ii etat ligne stck_etat
local deborphan qte_deborphan cmt_deborphan cmd_deborphan
local holded qte_holded cmt_holded cmd_holded
local pinned qte_pinned cmd_pinned cmt_pinned
local pinned tempo qte_pinned cmd_pinned cmt_pinned
local metaPkg cmd_metaPkg cmt_metaPkg kernel cmd_kernel cmt_kernel
local alert_https alert_httpsPossible alert_non_list alert_httpredir alert_upgrade alert_full_upgrade
local alert_apt alert_remove alert_autoclean alert_clean alert_non_ii alert_deborphan
@ -1805,9 +1801,9 @@ fi_pkg_apt(){ # 25/02/2018
# full-upgrade
if [ "${qte_upgradable[1]}" -gt 0 ]; then
notUpgraded=${stck_upgd%The following packages will be upgraded*} # suppression fin
notUpgraded=${notUpgraded#*The following packages have been kept back:} # suppression début
notUpgraded=${notUpgraded#*The following packages have been kept back:} # suppression début
notUpgraded=$( sed '/newly/d' <<< "$notUpgraded" | sort | tr '\n' ' ' )
notUpgraded=${notUpgraded// / } # suppression espace double
notUpgraded=${notUpgraded// / } # suppression espace double
[ $(( ${qte_upgradable[1]} )) -gt 1 ] && pluriel="s" || unset pluriel
cmt_notUpgraded="${qte_upgradable[1]} paquet"$pluriel" nécessitant une mise à jour profonde (dist-upgrade)"
alert_full_upgrade="ces paquets peuvent être mis à jour avec avec: **apt dist-upgrade**"
@ -1921,7 +1917,12 @@ fi_pkg_apt(){ # 25/02/2018
[ "$qte_holded" -eq 0 ] && cmt_holded=${cmt_holded/0 /aucun }
cmd_holded="apt-mark showhold"
# paquets épinglés (pinning)
pinned=$( f__trim all "$( apt-cache policy | grep '\->' )" )
pinned=$( apt-cache policy | grep '\->' )
while read -r ; do
f__trim2 "REPLY"
tempo+="$REPLY"$'\n'
done <<< "$pinned"
pinned="${tempo::-1}"
qte_pinned=$( f__wcv "-l" "$pinned" )
[ "$qte_pinned" -gt 1 ] && pluriel="s" || unset pluriel
cmd_pinned="apt-cache policy | grep '\->'"
@ -3285,30 +3286,38 @@ figet_de(){ # 25/02/2018 # 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(){ # 25/02/2018
figet_disk(){ # 26/02/2018
local size type list_id idisk lsblk vendor model rev serial
unset fg_disk_fixe fg_disk_amov
x_disk=1
fg_nb_disk=0
# 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 $(f__dir -l "/sys/block/" "loop" ); do
size=$( lsblk -no SIZE -d /dev/$idisk | xargs ) #149,1G
type=$( lsblk -no HOTPLUG /dev/$idisk | sed -n '2p' | xargs ) # 0 \n 0 \n ...
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 $( f__dir -l "/sys/block/" "loop" ); do
#~ for idisk in /sys/block/* ; do
size=$( lsblk -no SIZE -d /dev/$idisk )
f__trim2 "size"
type=$( lsblk -no HOTPLUG /dev/$idisk | sed -n '2p' )
f__trim2 "type"
[ "$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 )
f__trim2 "vendor"
model=$( lsblk -no MODEL /dev/$idisk )
f__trim2 "model"
serial=$( lsblk -no SERIAL /dev/$idisk )
f__trim2 "serial"
if [[ -z "$vendor" || -z "$model" ]]; then # tentative extraction valeur via /dev/disk/by-id/
vendor="n/a"
vendor=$( ls -l /dev/disk/by-id/ | awk ' !/-part/ && !/wwn-/ {print $9,$11}' | xargs )
vendor=$( ls -l /dev/disk/by-id/ | awk ' !/-part/ && !/wwn-/ {print $9,$11}' )
f__trim2 "vendor"
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 )
rev=$( lsblk -no REV /dev/$idisk )
f__trim2 "rev"
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
@ -3319,20 +3328,20 @@ figet_disk(){ # 25/02/2018
fg_disk_amov+="$idisk "
fi
done
[ "$fg_disk_table" ] && fg_disk_table=${fg_disk_table::-1} # suppression dernier $'\n'
[ "$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
# nb de disques (fixe+amovible)
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" | awk '/\// {print $1}' | tr '\n' ' ' )
fg_disk_part_fixe_nm=$( echo "$lsblk" | awk '!/\// && /[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=$( awk '/\// {printf "%s ",$1}' <<< "$lsblk" )
fg_disk_part_fixe_nm=$( awk '!/\// && /[0-9]+/ && !/\[SWAP\]/{printf "%s ",$1}' <<< "$lsblk" )
# 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" | awk '/\// {print $1}' | tr '\n' ' ' )
fg_disk_part_amov_nm=$( echo "$lsblk" | awk '!/\// && /[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=$( awk '/\// {printf "%s ",$1}' <<< "$lsblk" )
fg_disk_part_amov_nm=$( awk '!/\// && /[0-9]+/ && !/\[SWAP\]/{printf "%s ",$1}' <<< "$lsblk" )
# partitions swap
fg_disk_part_swap=$( echo "$(lsblk -no KNAME,MOUNTPOINT)" | awk '/\[SWAP\]/ {print $1}' | tr '\n' ' ' )
fg_disk_part_swap=$( echo "$( lsblk -no KNAME,MOUNTPOINT )" | awk '/\[SWAP\]/ {printf "%s ",$1}' )
[ "$fg_disk_fixe" ] || fg_disk_fixe="-"
[ "$fg_disk_amov" ] || fg_disk_amov="-"
[ "$fg_disk_part_fixe_m" ] || fg_disk_part_fixe_m="-"
@ -3342,20 +3351,26 @@ figet_disk(){ # 25/02/2018
[ "$fg_disk_part_amov_nm" ] || fg_disk_part_amov_nm="-"
# total espaces partitions fixes montées
fg_disk_part_fix_tot="partitions fixes montées (total, utilisé, dispo): "
fg_disk_part_fix_tot+=$( df -h --total --output=size,used,avail $( printf '/dev/%s ' $fg_disk_part_fixe_m ) 2>/dev/null | tail -n-1 | xargs )
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+=$( df -h --total --output=size,used,avail $( printf '/dev/%s ' $fg_disk_part_fixe_m ) 2>/dev/null | tail -n-1 )
f__trim2 "fg_disk_part_fix_tot"
fg_disk_part_fix_tot=${fg_disk_part_fix_tot//G/Go}
fg_disk_part_fix_tot=${fg_disk_part_fix_tot//M/Mo}
fg_disk_part_fix_tot=${fg_disk_part_fix_tot//K/ko}
[ "$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/ | awk '{print $9,$11}' )
fg_disk_ata=$( sed '/^ata/!d; /part/d' <<< "$list_id" | awk -F '/' '{print $NF}' | tr '\n' ' ' )
fg_disk_usb=$( sed -n '/part/d; /^usb/p' <<< "$list_id" | awk -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" | awk -F '/' '{print $NF}' | tr '\n' ' ' )
fg_disk_nvme=$( sed '/^nvme/!d; /part/d' <<< "$list_id" | awk -F '/' '{print $NF}' | tr '\n' ' ' )
[ "$fg_disk_ata" ] && fg_disk_ata=$( tr ' ' '\n' <<< "$fg_disk_ata" | sort | tr '\n' ' ' ) || fg_disk_ata="-"
[ "$fg_disk_usb" ] && fg_disk_usb=$( tr ' ' '\n' <<< "$fg_disk_usb" | sort | tr '\n' ' ' ) || fg_disk_usb="-"
[ "$fg_disk_mmc" ] && fg_disk_mmc=$( tr ' ' '\n' <<< "$fg_disk_mmc" | sort | tr '\n' ' ' ) || fg_disk_mmc="-"
[ "$fg_disk_nvme" ] && fg_disk_nvme=$( tr ' ' '\n' <<< "$fg_disk_nvme" | sort | tr '\n' ' ' ) || fg_disk_nvme="-"
fg_disk_ata=$( awk -F '/' '$0 ~ /^ata/ && $0 !~ /part/{printf "%s ",$NF}' <<< "$list_id" )
fg_disk_usb=$( awk -F '/' '$0 ~ /^usb/ && $0 !~ /-part/{printf "%s ",$NF}' <<< "$list_id" )
fg_disk_mmc=$( awk -F '/' '$0 ~ /^mmc/ && $0 !~ /-part/{printf "%s ",$NF}' <<< "$list_id" )
fg_disk_nvme=$( awk -F '/' '$0 ~ /^nvme/ && $0 !~ /-part/{printf "%s ",$NF}' <<< "$list_id" )
[ "$fg_disk_ata" ] || fg_disk_ata="-"
[ "$fg_disk_usb" ] || fg_disk_usb="-"
[ "$fg_disk_mmc" ] || fg_disk_mmc="-"
[ "$fg_disk_nvme" ] || fg_disk_nvme="-"
#~ [ "$fg_disk_ata" ] && fg_disk_ata=$( tr ' ' '\n' <<< "$fg_disk_ata" | sort | tr '\n' ' ' ) || fg_disk_ata="-"
#~ [ "$fg_disk_usb" ] && fg_disk_usb=$( tr ' ' '\n' <<< "$fg_disk_usb" | sort | tr '\n' ' ' ) || fg_disk_usb="-"
#~ [ "$fg_disk_mmc" ] && fg_disk_mmc=$( tr ' ' '\n' <<< "$fg_disk_mmc" | sort | tr '\n' ' ' ) || fg_disk_mmc="-"
#~ [ "$fg_disk_nvme" ] && fg_disk_nvme=$( tr ' ' '\n' <<< "$fg_disk_nvme" | sort | tr '\n' ' ' ) || fg_disk_nvme="-"
}
# assigne $fg_distrib
@ -3501,9 +3516,9 @@ figet_dmi(){ # 22/02/2018
done
if [ "$1" == "head" ]; then
[ "$product" ] && fg_dmi=$(printf "%-5s : %s " "prod." "$product")$'\n'
[[ "$board" && "$indic1" != "$indic2" ]] && fg_dmi+=$(printf "%-5s : %s " "board" "$board")$'\n'
[ "$bios" ] && fg_dmi+=$(printf "%-5s : %s " "bios" "$bios")
[ "$product" ] && fg_dmi=$( printf "%-5s : %s " "prod." "$product" )$'\n'
[[ "$board" && "$indic1" != "$indic2" ]] && fg_dmi+=$( printf "%-5s : %s " "board" "$board" )$'\n'
[ "$bios" ] && fg_dmi+=$( printf "%-5s : %s " "bios" "$bios" )
fi
[ "$product" ] && fg_dmi="$product "$'\n'
[[ "$board" && "$indic1" != "$indic2" ]] && fg_dmi+="$board "$'\n'
@ -3890,7 +3905,7 @@ figet_mem(){ # 22/02/2018
fg_mem+="$col$totalTotal$totalUsed$totalAvailable"$'\n'
fi
if [ "$2" == "debug" ]; then
local espace=$(printf '% 6s')
local espace=$( printf '% 6s' )
fg_mem="$espace""mém.: totale utilisée libre shared buffers cache disponible"$'\n'
fg_mem+="$espace""vive:$MemTotal$MemUsed$MemFree$Shmem$Buffers$Cached$MemAvailable"$'\n'
[ "$fg_mem" ] && fg_mem=${fg_mem::-1} # suppression dernier $'\n'
@ -4620,7 +4635,7 @@ for j in $options; do # deuxième passe options, actions
# fi_reseau fi_nm
# fi_system_analyse fi_log_xorg fi_journal
# fi_bluez # long
fi_hw
fi_cpu
echo
[ "$DISPLAY" ] && f_prnt_md "$file_output" || pager "$file_output"
;;

View File

@ -1,6 +1,13 @@
# changelog getInfo
## getInfo 3.26.0 26/02/2018
* révision f__trim (fi_pkg_apt, paquets épinglés)
* révision figet_disk
## getInfo 3.25.0 25/02/2018
* révision: suppression traces test mawk