diff --git a/scripts/getInfo b/scripts/getInfo index 6d3e496..0e2a483 100755 --- a/scripts/getInfo +++ b/scripts/getInfo @@ -1,7 +1,7 @@ #!/bin/bash -version=2.64.0 -date="13/12/2017" +version=2.65.0 +date="14/12/2017" projet="simpledeb" contact="IRC freenode ##sdeb ou https://framagit.org/kyodev/kyopages/issues/" script="getInfo" @@ -14,7 +14,9 @@ script="getInfo" # détecte architecture système, assign $fu_archi: 32bits, i686 | 64bits, amd64 (x86_64) # return 1 on unknown architecture # remarque, debian: dpkg --print-architecture affiche i386 -f__architecture(){ # 2/12/2017 +f__architecture(){ # 14/12/2017 + + x_architecture=1 case "$(uname -m)" in amd64 | x86_64 ) fu_archi="64bits, amd64 (x86_64)";; @@ -336,16 +338,16 @@ f_affichage(){ # 2/12/2017 # 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_dspl "variable" "type" "titre" "commentaire" -f_dspl(){ # 2/12/2017 +f_dspl(){ # 14/12/2017 local display='' toDisplay [ "$text" ] && echo -en "$text" >> "$fileOutput" # flush, avant fonction, de $text parent unset text - toDisplay="$2" [[ "$2" || "$1" =~ :vide ]] || return 0 # test si contenu dans $2 - # traitement ligne de titre + toDisplay="$2" [ "$toDisplay" ] || toDisplay="vide" # cas si :vide + # traitement ligne de titre [[ "$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 @@ -360,14 +362,14 @@ f_dspl(){ # 2/12/2017 else display+='``` \n' display+="$toDisplay \n" - display+='``` \n' + display+='``` \n\n' fi - echo -en "$display\n" >> "$fileOutput" # flush fonction + echo -en "$display" >> "$fileOutput" } # $1 variable à afficher en alerte/info, [$2 alert|info] type de message, alert par défaut # un test si variable $1 est vide ou non est fait -f_dspl_alrt(){ # 21/11/2017 +f_dspl_alrt(){ # 14/12/2017 [ "$1" ] || return 0 # test si contenu dans $1 local display type # flush, avant fonction, de $text parent @@ -377,9 +379,9 @@ f_dspl_alrt(){ # 21/11/2017 [[ "$2" =~ info ]] && type="info" [[ "$2" =~ alert ]] && type="alert" [ "$2" ] || type="alert" # alert par défaut - [ "$type" == "alert" ] && display="> ↯ $1 \n\n" - [ "$type" == "info" ] && display=" ☛ $1 \n\n" - echo -en "$display\n" >> "$fileOutput" # flush fonction + [ "$type" == "alert" ] && display="> ↯ $1 \n" + [ "$type" == "info" ] && display=" ☛ $1 \n" + echo -en "$display" >> "$fileOutput" # flush fonction } # $1=liste fichier(s) à grepper, [$2]: N &| nofile &| novide &| ligneVide &| date &| commentXY &| sources @@ -489,8 +491,7 @@ toDisplay=( } # 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 + # $1: 1|2|3 indentation, liste à puce, une puce par ligne # l1|l2|l3 ligne, indentation, avec espaces # titre1|titre2|titre3 # quote|hl|flush @@ -503,9 +504,10 @@ toDisplay=( f_prnt(){ # 11/12/2017 local preline='' line='' endline=" \n" - [[ "$1" == 'titre1' ]] && preline="\n# " - [[ "$1" == 'titre2' ]] && preline="\n## " - [[ "$1" == 'titre3' ]] && preline="\n### " + [[ "$1" =~ titre ]] && preline="\n\n" + [[ "$1" == 'titre1' ]] && preline+="# " + [[ "$1" == 'titre2' ]] && preline+="## " + [[ "$1" == 'titre3' ]] && preline+="### " [[ "$1" =~ titre ]] && endline+="\n" [[ "$1" == '1' ]] && line="$( sed -E 's/(.*)/* \1 /' <<<$2 )" [[ "$1" == '2' ]] && line="$( sed -E 's/(.*)/ * \1 /' <<<$2 )" @@ -521,8 +523,8 @@ f_prnt(){ # 11/12/2017 fi if [[ "$1" == "hl" ]]; then # - text+="\n---\n\n" - elif [[ "$1" == "code" ]]; then # ``` + text+="\n---\n" + elif [[ "$1" == "code" ]]; then # ``` text+='```\n' elif [[ "$1" ]]; then text+="$preline$line$endline" # ligne formatée @@ -530,7 +532,7 @@ f_prnt(){ # 11/12/2017 text+="\n" # newline fi if [[ "$1" == "flush" ]]; then - echo -en "$text\n" >> "$fileOutput" + echo -en "$text" >> "$fileOutput" unset text fi } @@ -616,11 +618,12 @@ f_search_ko(){ # 13/12/2017 } # [$1=silent], assigne fe_nb_audio, fe_cards_audio -fi_audio(){ # 13/12/2017 +fi_audio(){ # 14/12/2017 local cardsAudio cmd_cards version_alsa card_alsa cmd_card_alsa cmt_card_alsa pluriel text local mod_alsa cmd_mod_alsa cmt_mod_alsa modAudio cmd_modAudio cmt_modAudio local alert_alsa + x_audio=1 # devices fe_cards_audio=$( figet_lspci "audio" "name" ) fe_nb_audio=$(f__wcv -l "$fe_cards_audio") @@ -672,10 +675,10 @@ fi_audio(){ # 13/12/2017 f_dspl cmd "$modAudio" "$cmd_modAudio" "$cmt_modAudio" } -fi_batt(){ # 9/12/2017 +fi_batt(){ # 14/12/2017 local pluriel - [ "$fg_batt" ] || figet_batt + (( x_batt == 1 )) || figet_batt [ "$fg_batt" ] || return 0 # pas de batterie [ "$fg_nb_batt" -gt 1 ] && pluriel="s" || unset pluriel ### @@ -683,10 +686,11 @@ fi_batt(){ # 9/12/2017 f_dspl sans "$fg_batt" } - # [$1=silent] (pas d'affichage), assigne $fe_nb_bluez, $fe_cards_bluez -fi_bluez(){ # 13/12/2017 + # [$1=silent], assigne $fe_nb_bluez, $fe_cards_bluez +fi_bluez(){ # 14/12/2017 local bluez cmd_bluez cmt_bluez mod cmd_mod cmt_mod pluriel text + x_bluez=1 if hcitool scan &>/dev/null && [[ $( f__which hciconfig ) ]]; then fe_nb_bluez=$( hciconfig name 2>/dev/null ) fe_cards_bluez=$( grep -Eo '^hci[0-9]+' <<< $fe_nb_bluez ) @@ -746,13 +750,14 @@ fi_conf(){ # 13/12/2017 f_dspl cmd "$confs" "grep -Ersv '^#|^$' " } -fi_cpu(){ # 11/12/2017 +fi_cpu(){ # 14/12/2017 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" ] || figet_cpu_flags # appel 'base' des tags, obtention $CPU_FLAGS for iflag in $cpu_flags; do text_flags+="$( gawk -v motif="$iflag" -F '⟷' ' @@ -765,7 +770,6 @@ fi_cpu(){ # 11/12/2017 done text_flags=${text_flags%[[:cntrl:]]} # suppression \n final [ "$cpu_flags" ] && qte_flags=$( f__wcv -w "$cpu_flags" flags ) - [ "$fg_cpu" ] || figet_cpu if ! figet_ucode ; then # retour fonction en erreur => pas d'installation mais possible alert_microcode="$fg_ucode" [ "$ENV_DEBIAN" ] && alert_microcode+="\n les installer: **apt install $ucode**" @@ -782,11 +786,11 @@ fi_cpu(){ # 11/12/2017 f_dspl sans "$text_flags" # flags cpu texte } -fi_disk(){ # 5/12/2017 +fi_disk(){ # 14/12/2017 local cmd_dd_temp="" dd_temp="" exclude_df liste_df disk_df disk_df_i cmd_dfi cmd_dfh disk_lsblk fstab local resume idResume idSwap idisk text pluriel local alert_dd_temp alert_file_resume alert_uuidResume - [ "$fg_nb_disk" ] || figet_disk + (( x_disk == 1 )) || figet_disk # hddtemp if [ $( f__which hddtemp ) ]; then for idisk in $fg_disk_fixe; do @@ -954,8 +958,8 @@ fi_efi(){ # 6/12/2017 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 -fi_gpu(){ # 11/12/2017 + # [$1=silent|xorgOnly], assigne $fe_gpu (liste des gpu), $fe_nb_gpu, fe_Xorg +fi_gpu(){ # 14/12/2017 local cards cmd_cards prefixCmd openGl pluriel text local stck_glxinfo glx_dvc cmd_glx_dvc stck_glxinfoOpt stck_glxinfoDri glx_dvc_temp local cmd_openGl resolutions cmd_resolutions cmt_resolutions providers cmd_providers @@ -963,11 +967,8 @@ fi_gpu(){ # 11/12/2017 local modGpu cmd_modGpu cmt_modGpu local alert_hybrid alert_3D alert_Wayland local toScrut confs ifile fileConfs cmd_confs cmt_confs -# cardsManuel="$(lspci -nnk | grep -EiA 3 'vga|display|3d')" # -nn: textual and numeric ID's, k kernel -# cardsManuel="$(lspci -nnv | grep -iEA10 'vga|display|3d)" # v=verbose -# cardsManuel="lspci -nnv -s $( lspci | grep -Ei 'vga|display|3d' | cut -d" " -f1 )" -# cardsManuel="lspci -nnv -s $(gawk '/VGA |Display |3D / {print $1}' <<< $( lspci ))" + x_gpu=1 # liste/description gpu et qte fe_gpu=$( figet_lspci "video" "name") fe_nb_gpu=$( f__wcv "-l" "$fe_gpu" ) @@ -1007,7 +1008,13 @@ fi_gpu(){ # 11/12/2017 return 0 fi ### + # lspci +# lspci -nnk | grep -EiA 3 'vga|display|3d' +# lspci -nnv | grep -iEA10 'vga|display|3d' +# lspci -nnv -s $( lspci | grep -Ei 'vga|display|3d' | cut -d" " -f1 ) +# lspci -nnv -s $(gawk '/VGA |Display |3D / {print $1}' <<< $( lspci ) ) + cmd_cards="lspci -nnv -s $(gawk '/VGA |Display |3D / {print $1}' <<< $( lspci ))" if [ "$fe_nb_gpu" -eq 1 ]; then # une seule carte cards=$( figet_lspci "video" "raw" ) @@ -1085,7 +1092,7 @@ fi_gpu(){ # 11/12/2017 [ "$( f__wcv -wv "$modGpu" "^[[:alnum:]]" )" -gt 1 ] && pluriel="s" || unset pluriel cmt_modGpu="**Gpu:** $( f__wcv -wv "$modGpu" "^[[:alnum:]]" ) module"$pluriel" utilisé"$pluriel # fonctions externes - [ "$fg_resolution" ] || figet_screen + (( x_screen )) || figet_screen ### f_prnt titre2 "vidéo" f_prnt l "$( sed -E 's/(.*)/**\1** /' <<< $fe_gpu )" # mise en gras @@ -1144,8 +1151,8 @@ fi_gpu_openGl(){ # 28/11/2017 openGl=${openGl::-1} } -fi_hw(){ # 6/12/2017 - [ "$fg_hw" ] || figet_hw +fi_hw(){ # 14/12/2017 + (( x_hw == 1 )) || figet_hw ### f_prnt titre2 "hardware monitor" f_dspl sans "$fg_hw" "sans" @@ -1153,6 +1160,21 @@ fi_hw(){ # 6/12/2017 f_prnt flush } + # $1=-4|-6|-46 protocole +fi_ip_pub(){ #v 14/12/2017 + local itest option="$1" + + option=${option//46/4 6} + for itest in $option; do + itest=-${itest//-} + if figet_ip_pub "$itest" ; then + echo "$BOLD$fg_ip_pub$STD" + else + echo "pas de connectivité ipv${itest#-}" + fi + done +} + fi_journal(){ # 10/12/2017 local jctl_boot jctl_alert_k jctl_crit_k jctl_err_k jctl_warn_k jctl_warn_nok jctl_last jctl_size file local info_ucode text nb_lignes=25 @@ -1374,10 +1396,11 @@ fi_mem(){ # 5/12/2017 } # [$1=silent], assigne fe_nb_reseau, fe_cards_reseau -fi_net(){ # 13/12/2017 ( matériel ) +fi_net(){ # 14/12/2017 ( matériel ) local cards cmd_cards modEth cmd_modEth cmt_modEth modWln cmd_modWln cmt_modWln pluriel text local alert_wlx + x_net=1 # devices fe_cards_reseau=$( figet_lspci "net" "name" ) # noms des cartes réseau détectées, mix ethernet/wifi fe_nb_reseau=$(f__wcv -l "$fe_cards_reseau") # nombre de cartes réseau détectées, mix ethernet/wifi @@ -1404,7 +1427,7 @@ fi_net(){ # 13/12/2017 ( matériel ) cmd_modWln="lsmod | grep -Ew '$fg_srch_mod_lp'" [ "$( f__wcv -wv "$modWln" "^[[:alnum:]]" )" -gt 1 ] && pluriel="s" || unset pluriel cmt_modWln="**Wifi:** $( f__wcv -wv "$modWln" "^[[:alnum:]]" ) module"$pluriel" utilisé"$pluriel - [ "$fg_ip" ] || figet_ip + (( x_ip == 1 )) || figet_ip if grep -iq 'wlx' <<< "$fg_ifn"; then alert_wlx="Une interface wifi est en erreur: $(grep -o 'wlx' <<< $fg_ifn) \n" alert_wlx+="l'interface n'est pas reconnue et est donc mal nommée, " @@ -1973,8 +1996,8 @@ fi_reseau(){ # 11/12/2017 ( configuration ) fi_serial(){ #v9 1/12/2017 local chassis_serial machineId text - [ "$fg_nb_disk" ] || figet_disk - [ "$fg_batt" ] || figet_batt + (( x_disk == 1 )) || figet_disk + (( x_bat == 1 )) || figet_batt chassis_serial=$( cat /sys/class/dmi/id/chassis_serial 2>/dev/null ) [ "$chassis_serial" ] || chassis_serial="n/a" machineId=$( cat /etc/machine-id 2>/dev/null ) @@ -2014,27 +2037,28 @@ fi_ssid(){ #v2 11/12/2017 rm "$fileOutput" } -fi_system(){ # 12/12/2017 +fi_system(){ # 14/12/2017 local mbr uname bootImage initDaemon date_install lastboot uptime uptimePure loadAverage pluriel text local enum_batt serverX local alimentation alim_total # appels fonctions externes - [ "$fg_batt" ] || figet_batt - [ "$fg_cpu" ] || figet_cpu - [ "$fg_de" ] || figet_de - [ "$fg_nb_disk" ] || figet_disk - [ "$fg_distrib" ] || figet_distrib - [ "$fg_dsp_mngr" ] || figet_dsp_mngr - [ "$fg_dmi" ] || figet_dmi - [ "$fg_resolution" ] || figet_screen - [ "$fg_shell" ] || figet_shell - [ "$fg_wm" ] || figet_wm - [ "$fe_cards_audio" ] || fi_audio "silent" - [ "$fe_cards_bluez" ] || fi_bluez "silent" - [ "$fe_gpu" ] || fi_gpu "silent" - [ "$fe_cards_reseau" ] || fi_net "silent" - [ "$fu_archi" ] || f__architecture + (( x_architecture == 1 )) || f__architecture + (( x_audio == 1 )) || fi_audio "silent" + (( x_batt == 1 )) || figet_batt + (( x_bluez == 1 )) || fi_bluez "silent" + (( x_cpu == 1 )) || figet_cpu + (( x_de == 1 )) || figet_de + (( x_disk == 1 )) || figet_disk + (( x_distrib == 1 )) || figet_distrib + (( x_dm == 1 )) || figet_dm + (( x_dmi == 1 )) || figet_dmi + (( x_gpu == 1 )) || fi_gpu "silent" + (( x_net == 1 )) || fi_net "silent" + (( x_screen )) || figet_screen + (( x_shell == 1 )) || figet_shell + (( x_touchpad == 1 )) || fi_touchpad "silent" + (( x_wm == 1 )) || figet_wm echo -n "ø" # divers système if [ -d /sys/firmware/efi ]; then @@ -2110,6 +2134,7 @@ fi_system(){ # 12/12/2017 enum_batt=$(grep -E '[A-Z][A-Z]' <<< $fg_batt) ### [ "$ORIGIN" ] && f_prnt titre2 "système" + f_prnt f_prnt l "$( sed -E 's/(.*)/**\1** /' <<<$fg_dmi )" # en gras f_prnt f_prnt 1 "CPU" @@ -2141,9 +2166,9 @@ fi_system(){ # 12/12/2017 f_prnt l2 "nombre d'écrans: $fg_nb_screen" [ "$(f__wcv "-wv" "$fg_resolution" "pixels")" -gt 1 ] && pluriel="s" || unset pluriel f_prnt l2 "résolution"$pluriel": $fg_resolution" - [ "$(wc -w <<< $fg_dsp_mngr)" -gt 1 ] && pluriel="s" || unset pluriel - 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" ]' + [ "$(wc -w <<< $fg_dm)" -gt 1 ] && pluriel="s" || unset pluriel + f_prnt l2 "display manager"$pluriel": $fg_dm" + f_prnt l2 "display manager actif: $fg_dm_actif" '[ "$fg_dm_actif" != "$fg_dm" ]' f_prnt l2 "desktop (DE): $fg_de" f_prnt l2 "panel: $fg_de_panel" '[ "$fg_de_panel" ]' f_prnt l2 "window manager: $fg_wm" @@ -2157,6 +2182,8 @@ fi_system(){ # 12/12/2017 [ "$fg_nb_batt" -gt "1" ] && pluriel="s" || unset pluriel f_prnt l2 "$fg_nb_batt batterie"$pluriel" présente"$pluriel":" '[ "$fg_batt" ]' f_prnt l3 "$enum_batt" '[ "$fg_batt" ]' + [ "$fe_nb_touchpad" -gt "1" ] && pluriel="s" || unset pluriel + f_prnt l2 "$fe_nb_touchpad pavé"$pluriel" tactile"$pluriel": $fe_touchpad" '[ "fe_touchpad" ]' f_prnt l '```' f_prnt f_prnt 1 "$( sed -E 's/^(.*: )(.*)/\1**\2**/' <<<$fg_disk_part_fix_tot )" '[ "$fg_disk_part_fix_tot" ]' @@ -2239,6 +2266,45 @@ fi_system_analyse(){ #v 2/12/2017 f_dspl cmd:text "$bootGraph" "$cmd_bootGraph" "$cmt_bootGraph" } + # [$1=silent], assigne $fe_touchpad, fe_nb_touchpad +fi_touchpad(){ # 14/12/2017 + local device cmd_device type type_pt pilote cmd_pilote cmt_pilote info_driver + + x_touchpad=1 + device=$( grep -Ei -B1 -A8 'synap|alps|etps|elan' /proc/bus/input/devices ) || return 0 + fe_touchpad=$( grep -i 'Name=' <<< $device ) + fe_touchpad=${fe_touchpad#*Name=\"} # suppression début + fe_touchpad=${fe_touchpad%\"} # suppression fin + cmd_device="grep -Ei -B1 -A8 'synap|alps|etps|elan' /proc/bus/input/devices" + type=$( grep -i 'touchpad: buttons:' /var/log/Xorg.0.log ) + grep -iq 'double' <<< $type && type_pt="2" + grep -iq 'triple' <<< $type && type_pt+="3" + if [ "$type_pt" ]; then + type_pt=" multitouch $type_pt points" + fi + type_pt=${type_pt/23/2\/3} + fe_touchpad+="$type_pt" + fe_nb_touchpad=$( grep -ci 'touchpad' <<< "$fe_touchpad" ) + [[ "$1" == "silent" ]] && return 0 + +### + + if [ "$ENV_DEBIAN" ]; then + pilote=$( gawk ' + /^ii/ { printf "%-30s", $2; $1=$2=$3=$4=""; print $0 } + ' <<< $( dpkg -l *synaptics *libinput ) ) + cmd_pilote="dpkg -l *synaptics *libinput" + cmt_pilote="drivers installé" + info_driver="consulter d'éventuels fichiers *synaptics *libinput dans /etc/X11/xorg.conf.d/ " + info_driver+="pour voir les configurations personnalisées" + fi +### + f_prnt titre2 "Touchpad" + f_dspl cmd "$device" "$cmd_device" + f_dspl cmd "$pilote" "$cmd_pilote" "$cmt_pilote" + f_dspl_alrt "$info_driver" "info" +} + fi_usb(){ # 1/12/2017 local lsusb lsusb_t text @@ -2278,10 +2344,12 @@ fi_vrms(){ # 1/12/2017 } # informations batterie(s), assigne $fg_nb_batt $fg_batt $fg_batt_serial -figet_batt(){ #v2 12/12/2017 +figet_batt(){ #v2 14/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 + + x_batt=1 fg_nb_batt=0 if [ ! -d /sys/class/power_supply ]; then # anciennes interfaces ou inconnu [ -d /proc/acpi/battery ] && fg_batt="ancienne interface ACPI non gérée (obsolète)" @@ -2379,8 +2447,10 @@ figet_batt(){ #v2 12/12/2017 } # assigne $fg_cpu (description cpu), fg_nb_threads, $fg_cpu_arch, $fg_uarch, $fg_vendor=AMD|Intel, $fg_nb_cpu -figet_cpu(){ #v 9/12/2017 +figet_cpu(){ #v 14/12/2017 local cpuinfo speedNom speedMax speedMin speedCpu descrCpu cpu1 cpu2 cpu3 + + x_cpu=1 cpuinfo="$(cat /proc/cpuinfo)" # speed speedNom=$( gawk -F ':' ' @@ -2454,14 +2524,14 @@ figet_cpu(){ #v 9/12/2017 fg_vendor=${fg_vendor//AuthenticAMD/AMD} # allègement fg_vendor=${fg_vendor//GenuineIntel/Intel} # allègement # traitement µarchitecture - [ "$fg_uarch" ] || figet_cpu_uarch - # protection numérique + (( x_cpu_uarch == 1 )) || figet_cpu_uarch } # stockage des flags cpu extraits du kernel, assigna $CPU_FLAGS figet_cpu_flags(){ # 24/11/2017 - -CPU_FLAGS=" + + x_cpu_flags=1 + CPU_FLAGS=" # https://github.com/torvalds/linux/blob/master/arch/x86/include/asm/cpufeatures.h # 11/2017 ## Intel-defined CPU features, CPUID level 0x00000001 (edx), word 0 @@ -2719,11 +2789,13 @@ SMCA ⟷ Scalable MCA } # assigne $fg_uarch -figet_cpu_uarch(){ # 24/11/2017 +figet_cpu_uarch(){ # 14/11/2017 local var_temp vendor family model local defaut_model="modèle non répertorié" defaut_family="famille non répertoriée" local defaut_vendor="fabricant non répertorié" - [ "$fg_cpu" ] || figet_cpu # obtention $fg_vendor + + x_cpu_uarch=1 + (( x_cpu == 1 )) || figet_cpu # obtention $fg_vendor var_temp=$(grep -m1 '^cpu family' /proc/cpuinfo) # family cpuinfo var_temp=${var_temp#*: } # extraction valeur family family=$(printf "%.2X" $var_temp) # conversion hexa family @@ -2846,8 +2918,10 @@ figet_cpu_uarch(){ # 24/11/2017 } # assigne $fg_de, $fg_de_panel -figet_de(){ #v 9/12/2017 # thanks neofetch +figet_de(){ #v 14/12/2017 # thanks neofetch local de="n/a" + + x_de=1 fg_de="n/a" [ "$ENV_DISPLAY" ] && fg_de+=":no Display" [ "$ENV_SSH" ] && fg_de+=":ssh" @@ -2893,9 +2967,11 @@ 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 12/12/2017 +figet_disk(){ #v2 14/12/2017 local size type list_id idisk lsblk vendor model rev serial unset fg_disk_fixe fg_disk_amov + + x_disk=1 # 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' @@ -2964,8 +3040,10 @@ figet_disk(){ #v2 12/12/2017 } # assigne $fg_distrib -figet_distrib(){ #v 12/12/2017 +figet_distrib(){ #v 14/12/2017 local prefix version + + x_distrib=1 # priorité /etc/os-release, version officielle systemd [ -e "/etc/os-release" ] && source "/etc/os-release" || source "/usr/lib/os-release" if [ "$PRETTY_NAME" ] && [ "${PRETTY_NAME,,}" != "Linux" ]; then @@ -3000,8 +3078,48 @@ figet_distrib(){ #v 12/12/2017 [ "$fg_distrib" ] || fg_distrib="${OS^} (indéterminé)" } + # display manager, assigne $fg_dm (liste) ou 'n/a', $fg_dm_actif +figet_dm(){ #v1 14/12/2017 + local dm_list="cdm entranced gdm3 gdm qingy kdm ldm lightdm lxdm mdm nodm orthos sddm slim wdm xdm" + local idm ps systemctl x11 + + x_dm=1 + fg_dm="" + ps=$(ps -ef) # plus joli pour cmde manuelle ps=$(ps -auxf) + ps=${ps,,} # tout en minuscules + for idm in $dm_list; do + if grep -iq "bin/$idm$" <<< "$ps"; then +# if [ "${ps/*"$idm"*/test}" == "test" ]; then # pb: doublon gdm/gdm3 fun & speed? grepless (remplacement $idm et alentours, si idm présent, valeur test) + fg_dm+="${idm^} " + fg_dm_actif="${idm^}" + elif [[ -e /var/run/$idm".pid" || -e /var/run/$idm".pid" || -e /run/$idm || -e /run/$idm || -d /run/$idm/ || -d /var/run/$idm/ ]]; then + fg_dm+="${idm^} " + fg_dm_actif="${idm^}" + fi + done + fg_dm=${fg_dm% } # supression espace final + if [[ -z "$fg_dm" && -e "/etc/X11/default-display-manager" ]]; then + x11=$(cat /etc/X11/default-display-manager) + fg_dm=${x11##*/} # conservation dernier champs ifs '/' + fi + if [[ -z "$fg_dm" && "${ps/*startx*/test}" == "test" ]]; then + fg_dm="(startx)" + fg_dm_actif="(startx)" + fi + fg_dm_actif=${fg_dm_actif^} + if [[ -z "$fg_dm_actif" && $( type -p systemctl 2>/dev/null ) ]]; then + fg_dm_actif=$(grep 'Main PID' <<< $(systemctl status display-manager)) + fg_dm_actif=${fg_dm_actif##* } # conservation dernier champs ifs ' ' + fg_dm_actif=${fg_dm_actif/\(/} # suppression ( + fg_dm_actif=${fg_dm_actif/\)/} # suppression ) + [ ${fg_dm// } ] || fg_dm="$fg_dm_actif" + fi + [ "$fg_dm" ] || fg_dm="n/a" + [ "$fg_dm_actif" ] || fg_dm_actif="n/a" +} + # informations DMI (firmware partie matériel), $1=[head], assigne $fg_dmi -figet_dmi(){ #v2 01/12/2017 +figet_dmi(){ #v2 14/12/2017 local product board bios tempo idmi indic1="" indic2="" local chassis_type=( # type de chassis selon smbios janvier 2017 # http://www.dmtf.org/sites/default/files/standards/documents/DSP0134_3.1.1.pdf @@ -3039,6 +3157,8 @@ figet_dmi(){ #v2 01/12/2017 'Convertible' #1Fh 'Detachable' #20h ) + + x_dmi=1 # ligne1 $product for idmi in sys_vendor product_name product_version chassis_type; do tempo=$( cat /sys/class/dmi/id/$idmi 2>/dev/null ) # extraction valeur @@ -3079,47 +3199,11 @@ figet_dmi(){ #v2 01/12/2017 fg_dmi=${fg_dmi//COMPUTER } } - # display manager, assigne $fg_dsp_mngr (liste) ou 'n/a', $fg_dsp_mngr_actif -figet_dsp_mngr(){ #v1 27/11/2017 - local dm_list="cdm entranced gdm3 gdm qingy kdm ldm lightdm lxdm mdm nodm orthos sddm slim wdm xdm" - local idm ps systemctl x11 - fg_dsp_mngr="" - ps=$(ps -ef) # plus joli pour cmde manuelle ps=$(ps -auxf) - ps=${ps,,} # tout en minuscules - for idm in $dm_list; do - if grep -iq "bin/$idm$" <<< "$ps"; then -# if [ "${ps/*"$idm"*/test}" == "test" ]; then # pb: doublon gdm/gdm3 fun & speed? grepless (remplacement $idm et alentours, si idm présent, valeur test) - fg_dsp_mngr+="${idm^} " - fg_dsp_mngr_actif="${idm^}" - elif [[ -e /var/run/$idm".pid" || -e /var/run/$idm".pid" || -e /run/$idm || -e /run/$idm || -d /run/$idm/ || -d /var/run/$idm/ ]]; then - fg_dsp_mngr+="${idm^} " - fg_dsp_mngr_actif="${idm^}" - fi - done - fg_dsp_mngr=${fg_dsp_mngr% } # supression espace final - if [[ -z "$fg_dsp_mngr" && -e "/etc/X11/default-display-manager" ]]; then - x11=$(cat /etc/X11/default-display-manager) - fg_dsp_mngr=${x11##*/} # conservation dernier champs ifs '/' - fi - if [[ -z "$fg_dsp_mngr" && "${ps/*startx*/test}" == "test" ]]; then - fg_dsp_mngr="(startx)" - fg_dsp_mngr_actif="(startx)" - fi - fg_dsp_mngr_actif=${fg_dsp_mngr_actif^} - if [[ -z "$fg_dsp_mngr_actif" && $( type -p systemctl 2>/dev/null ) ]]; then - fg_dsp_mngr_actif=$(grep 'Main PID' <<< $(systemctl status display-manager)) - fg_dsp_mngr_actif=${fg_dsp_mngr_actif##* } # conservation dernier champs ifs ' ' - fg_dsp_mngr_actif=${fg_dsp_mngr_actif/\(/} # suppression ( - fg_dsp_mngr_actif=${fg_dsp_mngr_actif/\)/} # suppression ) - [ ${fg_dsp_mngr// } ] || fg_dsp_mngr="$fg_dsp_mngr_actif" - fi - [ "$fg_dsp_mngr" ] || fg_dsp_mngr="n/a" - [ "$fg_dsp_mngr_actif" ] || fg_dsp_mngr_actif="n/a" -} - # infos température et fan via acpi, assigne $fg_hw -figet_hw(){ #v2 12/12/2017 +figet_hw(){ #v2 14/12/2017 local name labelF inputF labelT inputT critT hystT maxiT fan temp ihw + + x_hw=1 if [ ! -d /sys/class/hwmon/ ]; then fg_hw="gestion acpi hwmon non accessible" return 1 @@ -3170,7 +3254,7 @@ figet_hw(){ #v2 12/12/2017 [ "$inputF" ] && inputF=${inputF::-1} # formation affichage if [ "$inputF" ]; then - fan+="$(printf "%-8s %st/mn %s" "$name" "$inputF" "$labelF")"$'\n' + fan+="$(printf "%-8s %st/mn %s" "$name" "$inputF" "$labelF")"$'\n' fi fi done @@ -3178,10 +3262,11 @@ figet_hw(){ #v2 12/12/2017 [ "$fg_hw" ] && fg_hw=${fg_hw::-1} } - # assigne $fg_ip, $fg_gws6, $fg_ifn, $fg_mac -figet_ip(){ # 12/12/2017 + # $1=-4|-6, assigne $fg_ip, $fg_gws6, $fg_ifn, $fg_mac +figet_ip(){ # 14/12/2017 local target ifn + x_ip=1 [ $( f__which ip ) ] || return 1 [ "$1" ] && proto="$1" || proto="-4" # adresses ip @@ -3229,104 +3314,124 @@ figet_ip(){ # 12/12/2017 fg_mac=${fg_mac%[[:cntrl:]]} # suppression dernier $'\n' } - # $1=4|6, assigne $fg_public -figet_ip_pub(){ # 20/11/2017 + # $1=-4|-6, assigne $fg_ip_pub +figet_ip_pub(){ #v 14/12/2017 local dig_test ip_test iip - list_ip4(){ - ip_test+=" http://whatismyip.akamai.com" - ip_test+=" http://ipof.in/txt" - ip_test+=" http://eth0.me" - ip_test+=" http://ipecho.net/plain" - ip_test+=" http://alma.ch/myip.cgi" - ip_test+=" http://checkip.amazonaws.com" - ip_test+=" http://eth0.me" - ip_test+=" http://ipecho.net/plain" - ip_test+=" api.infoip.io/ip" # http & https - ip_test+=" api.ipify.org" # http & https - ip_test+=" ipinfo.io/ip" # http & https - } - list_ip6(){ - ip_test+=" http://ipv6.whatismyip.akamai.com" - ip_test+=" http://bot.whatismyipaddress.com" - ip_test+=" ip.tyk.nu" # http & https - ip_test+=" l2.io/ip" # http & https - ip_test+=" ident.me" # http & https - ip_test+=" icanhazip.com" # http & https - ip_test+=" wgetip.com" # http & https - ip_test+=" https://canhazip.com" - ip_test+=" https://tnx.nl/ip" - } - list_ip4_dig(){ - dig_test+=" whoami.akamai.net/@ns1-1.akamaitech.net" - dig_test+=" myip.opendns.com/@resolver1.opendns.com" - dig_test+=" myip.opendns.com/@resolver2.opendns.com" - dig_test+=" myip.opendns.com/@resolver3.opendns.com" - dig_test+=" myip.opendns.com/@resolver4.opendns.com" - } - list_ip6_dig(){ - dig_test+=" -6/myip.opendns.com/aaaa/@resolver1.ipv6-sandbox.opendns.com" - dig_test+=" -6/myip.opendns.com/aaaa/@resolver2.ipv6-sandbox.opendns.com" + + list_ip4(){ # testé 11/12/2017 + + ip_test=( # pas de https + http://whatismyip.akamai.com + http://eth0.me + ipinfo.io/ip # http & https + http://alma.ch/myip.cgi # peu fiable curl + http://checkip.amazonaws.com # peu fiable wget + api.infoip.io/ip # http & https fiable wget + api.ipify.org # http & https fiable wget + http://ipecho.net/plain # peu fiable wget / curl + # http://ipof.in/txt # fail wget + ) } - unset fg_public - if [ "$1" == "4" ]; then - ping -4 -c1 google.com &>/dev/null || ping -4 -c1 free.fr &>/dev/null || return 1 # test connectivité + list_ip4_dig(){ # testé 11/12/2017 + + dig_test=( + whoami.akamai.net/@ns1-1.akamaitech.net + myip.opendns.com/@resolver1.opendns.com + myip.opendns.com/@resolver2.opendns.com + myip.opendns.com/@resolver3.opendns.com + myip.opendns.com/@resolver4.opendns.com + ) + } + + list_ip6(){ # testé 11/12/2017 + + ip_test=( + http://ipv6.whatismyip.akamai.com + ip.tyk.nu # http & https + wgetip.com # http & https + l2.io/ip # http & https peu fiable wget + icanhazip.com # http & https peu fiable wget + http://bot.whatismyipaddress.com # peu fiable wget + https://canhazip.com # peu fiable wget + https://tnx.nl/ip # peu fiable wget + ident.me # http & https peu fiable curl + ) + } + + list_ip6_dig(){ # testé 11/12/2017 + + dig_test=( + -6/myip.opendns.com/aaaa/@resolver1.ipv6-sandbox.opendns.com + -6/myip.opendns.com/aaaa/@resolver2.ipv6-sandbox.opendns.com + ) + } + + x_ip_pub=1 + option="$1" + unset fg_ip_pub + # assignation variables + if [ "$1" == "-4" ]; then + ping -4 -c1 conncheck.opensuse.org &>/dev/null || ping -4 -c1 free.fr &>/dev/null || return 1 # test connectivité list_ip4_dig list_ip4 ip_telnet=4.ifcfg.me - elif [ "$1" == "6" ]; then - ping -6 -c1 google.com &>/dev/null || ping -6 -c1 free.fr &>/dev/null || return 1 # test connectivité + elif [ "$1" == "-6" ]; then + ping -6 -c1 conncheck.opensuse.org &>/dev/null || ping -6 -c1 free.fr &>/dev/null || return 1 # test connectivité list_ip6_dig list_ip6 ip_telnet=6.ifcfg.me fi - - if [ $( f__which dig ) ] && [ -z "$fg_public" ]; then - for iip in $dig_test ; do - fg_public="$(dig +short $(sed 's;/; ;g' <<< $iip))" - [ "$fg_public" ] && break + # DIG + if type -p dig &>/dev/null && [ -z "$fg_ip_pub" ]; then + for iip in ${dig_test[*]}; do + fg_ip_pub=$( dig +short ${iip//\// } ) + [ "$fg_ip_pub" ] && break done fi - - if [ $( f__which wget ) ] && [ -z "$fg_public" ]; then - cmd="wget --quiet --timeout=5 -O - " - for iip in $ip_test ; do - fg_public="$($cmd $iip)" - [ "$fg_public" ] && break + # WGET + if type -p wget &>/dev/null && [ -z "$fg_ip_pub" ]; then + cmd="wget --quiet --timeout=2 --tries=1 -O - " + for iip in ${ip_test[*]}; do + fg_ip_pub=$( $cmd $iip ) + [ "$fg_ip_pub" ] && break done fi - - if [ $( f__which curl ) ] && [ -z "$fg_public" ]; then - cmd="curl --silent --location --retry 0 --max-time 5" #--location pour aider redirections - for iip in $ip_test ; do - fg_public="$($cmd $iip)" - [ "$fg_public" ] && break + # CURL + if type -p curl &>/dev/null && [ -z "$fg_ip_pub" ]; then + cmd="curl --silent --location --retry 0 --max-time 5" + for iip in ${ip_test[*]}; do + fg_ip_pub=$( $cmd $iip ) + [ "$fg_ip_pub" ] && break done fi - - if [ $( f__which telnet ) ] && [ -z "$fg_public" ]; then - fg_public="$(telnet $ip_telnet 23 2>/dev/null | grep $1 | cut -d ' ' -f 4)" + # TELNET + if type -p telnet &>/dev/null && [ -z "$fg_ip_pub" ]; then + fg_ip_pub=$( telnet $ip_telnet 23 2>/dev/null | grep "Your IPv${option/-}" ) + fg_ip_pub=${fg_ip_pub##* } fi - if [ $( f__which nc ) ] && [ -z "$fg_public" ] && [ "$1" != "IPv6" ]; then - fg_public="$(nc $ip_telnet 23 2>/dev/null | grep $1 | cut -d ' ' -f 4)" + # NC + if type -p nc &>/dev/null && [ -z "$fg_ip_pub" ] && [ "$option" != "-6" ]; then + fg_ip_pub=$( nc $ip_telnet 23 2>/dev/null | grep "Your IPv${option/-}" ) + fg_ip_pub=${fg_ip_pub##* } fi - if [ -z "$fg_public" ]; then + if [ -z "$fg_ip_pub" ]; then f__error "il manque une des commandes suivantes:\n" \ "dig / wget / curl / telnet / nc \n" \ "ou les ip de test sont devenues défaillantes\n" \ - "réessayer après avoir installé dig (dnsutils) et wget\n" \ - "si l'erreur persiste, merci de prévenir $projet, $contact" + "réessayer après avoir installé dig (dnsutils) et wget" fi } # $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(){ # 13/12/2017 +figet_lspci(){ # 14/12/2017 local motif slots lspci display='' prefixCmd modLspci mod_file + x_lspci=1 if [ "$1" = "audio" ]; then motif="Audio device|Audio controller|Multimedia audio controller" elif [ "$1" = "video" ]; then @@ -3406,9 +3511,11 @@ figet_lspci(){ # 13/12/2017 # $1=mem|swap [total|notitle|nocoltitle], assigne $fg_mem ($2=debug all cols + free) # indépendant de procps, affichage plus clair que free, mais résultats identiques -figet_mem(){ # 9/12/2017 +figet_mem(){ # 14/12/2017 local freeDebug MemTotal MemFree MemAvailable Buffers Cached SReclaimable Shmem MemUsed local SwapTotal SwapFree SwapCached col a b c MemLibre + + x_mem=1 [ "$2" == "debug" ] && freeDebug="$(free -hw | sed '3d')" while read -r a b c; do [ "$a" == "MemTotal:" ] && MemTotal="$b" #echo "$a $((${b/kB}/1024))" ! partie entière ! @@ -3476,9 +3583,10 @@ figet_mem(){ # 9/12/2017 } # $1=bluetooth, assigne $fg_modules, $fg_mod_motif, fg_srch_mod -figet_modules(){ # 13/12/2017 +figet_modules(){ # 14/12/2017 local modules dir separator mod_ko + x_modules=1 if [ "$1" == "bluetooth" ]; then dir="/lib/modules/$(uname -r)/kernel/drivers/bluetooth" # répertoire à scruter # recherche modules/formation motif ou liste @@ -3510,7 +3618,9 @@ figet_modules(){ # 13/12/2017 } # assigne $fg_nb_screen, $fg_resolution. return fg_resolution=n/a[ (ssh)] & fg_nb_screen=n/a ou valeurs -figet_screen(){ #v2 25/11/2017 +figet_screen(){ #v2 14/12/2017 + + x_screen=1 fg_nb_screen="n/a" fg_resolution="n/a" [ "$ENV_DISPLAY" ] && fg_resolution+=":no Display" @@ -3529,8 +3639,10 @@ figet_screen(){ #v2 25/11/2017 } # assigne $fg_shell, $fg_shells -figet_shell(){ #v2 25/11/2017 # thanks neofetch +figet_shell(){ #v2 14/12/2017 # thanks neofetch local shell ish + + x_shell=1 # shell en cours altern: fg_shell="$( ps -p $PPID -o comm= 2>/dev/null )" fg_shell=${SHELL##*/} # suppression jusqu'au dernier /, pas de chemin fg_shell=${fg_shell,,} @@ -3567,12 +3679,14 @@ figet_shell(){ #v2 25/11/2017 # thanks neofetch } # debian indépendant, assigne $fg_ucode (commentaire), $ucode (paquet deb) & return O|1 (1 si pas d'installation) -figet_ucode(){ # 13/12/2017 +figet_ucode(){ # 14/12/2017 local flagRep xfile xfileTest="" + + x_ucode=1 + (( x_cpu == 1 )) || figet_cpu # recherche flags cpu rep_good (besoin réel?) [ "$( grep -cm1 'flags.*rep_good ' /proc/cpuinfo )" -ge 1 ] && flagRep="rep_good ⟷ rep microcode works well" # test possible installation - [ "$fg_cpu" ] || figet_cpu [ "${fg_vendor,,}" == "amd" ] && ucode="amd64-microcode" # si $ucode, µmicorcode possible (amd|intel) [ "${fg_vendor,,}" == "intel" ] && ucode="intel-microcode" # test emplacements possibles @@ -3610,9 +3724,10 @@ figet_ucode(){ # 13/12/2017 } # assigne $fg_wm (compositor, pas en variable publique, pas fiabilisé) -figet_wm(){ #v 9/12/2017 base départ neofetch +figet_wm(){ #v 14/12/2017 base départ neofetch local id wm_brut compositor + x_wm=1 fg_wm="n/a" [ $( f__which xprop ) ] || fg_wm+=":xprop absent" # ! pas de xprop, pas de wm?! [ "$ENV_DISPLAY" ] && fg_wm+=":no Display" @@ -3979,7 +4094,7 @@ prg_3(){ # fin de traitements f__dialog_oui_non "non" "\n exporter sur le pastebin par défaut?" && fipaste f__info "le rapport est disponible en local, fichier:$YELLOW $fileOutput" \ "vous pouvez le visualiser ultérieurement avec $GREEN$script -l" \ - "vous pourrez l'exporter ultérieurement avec $BLUE$script -p" + "vous pourrez aussi l'exporter avec $BLUE$script -p" } prg_menu(){ # 12/12/2017 @@ -4068,8 +4183,7 @@ for j in $options; do ORIGIN='test' prg_1 "$*" echo -n "•" - fi_bluez - fi_net + fi_system echo; f_prnt_md "$fileOutput" exit ;; # test -c* | all ) @@ -4103,20 +4217,12 @@ for j in $options; do f_help exit ;; # affichage help --ip ) - if figet_ip_pub "4" ; then - f__info "raw" " ipv4 publique: $GREEN$fg_public" - else - f__info "$BLUE pas de connectivité ipv4" - fi - if figet_ip_pub "6" ; then - f__info "raw" " ipv6 publique: $GREEN$fg_public" - else - f__info "$BLUE pas de connectivité ipv6" - fi + fi_ip_pub "-46" + echo exit ;; # affiche ip public --mac ) figet_ip - f__info "adresses MAC:\n$GREEN$fg_mac" + f__info "adresses MAC:\n$STD$BOLD$fg_mac" exit ;; # affiche adresses mac --serial ) fi_serial diff --git a/scripts/getInfo_changelog.md b/scripts/getInfo_changelog.md index 78086f3..a57bcc1 100644 --- a/scripts/getInfo_changelog.md +++ b/scripts/getInfo_changelog.md @@ -1,5 +1,12 @@ # changelog getInfo +f__architecture + +## getInfo 2.65.0 14/12/2017 + +* nouveau: fi_touchpad +* révision: figet_ip_pub +* révision: général, marqueur et appel fonction ## getInfo 2.64.0 13/12/2017