getInfo 2.50.0

This commit is contained in:
kyodev 2017-11-30 20:27:02 +01:00
parent a55415e8d8
commit df0ac3ab34
2 changed files with 331 additions and 174 deletions

View File

@ -1,7 +1,7 @@
#!/bin/bash
version=2.49.3
date="29/11/2017"
version=2.50.0
date="30/11/2017"
projet="simpledeb"
contact="IRC freenode ##sdeb ou https://framagit.org/kyodev/kyopages/issues/"
script="getInfo"
@ -532,54 +532,51 @@ toDisplay=(
echo -e "$STD\n plus d'infos: $GREEN$urlNotice\n$STD"
}
fi_audio(){ # 29/11/2017
local audio nb_audio cardsAudio cmd_cards version_alsa card_alsa mod modules motif imod text
# [$1=silent], assigne fe_nb_audio, fe_cards_audio
fi_audio(){ # 30/11/2017
local cardsAudio cmd_cards version_alsa card_alsa mod modules motif imod pluriel text
local alert_alsa
# liste des devices
audio=$( fi_lspci "Audio device|Audio controller|Multimedia audio controller" "name" )
# qte de devices
nb_audio=$(f__wcv -l "$audio")
# devices
fe_cards_audio=$( figet_lspci "audio" "name" )
fe_nb_audio=$(f__wcv -l "$fe_cards_audio")
[ "$1" == "silent" ] && return 0 # pas d"affichage
[ "$fe_nb_audio" -eq 0 ] && return 0
# lspci
cardsAudio=$( fi_lspci "Audio device|Audio controller|Multimedia audio controller" "raw" )
cardsAudio=$( figet_lspci "audio" "raw" )
cmd_cards="lspci -nnv | grep -EiA6 'Audio device|Audio controller'"
# version ALSA
version_alsa=$( gawk '{
sub(/Advanced Linux Sound Architecture Driver /,"")
sub(/Version /,"")
sub(/.$/,"")
print $0
}' /proc/asound/version )
# cartes gérées par alsa
card_alsa=$( gawk ' { print " "$0 }' /proc/asound/cards )
if [ ! -d /proc/asound ] ; then
alert_alsa="/proc/asound : répertoire inexistant"
alert_alsa="ALSA n'est pas installé correctement"
else
# ALSA
version_alsa=$( gawk '{
sub(/Advanced Linux Sound Architecture Driver /,"")
sub(/Version /,"")
sub(/.$/,"")
print $0
}' /proc/asound/version )
card_alsa=$( gawk ' { print " "$0 }' /proc/asound/cards )
# modules alsa
mod=$( gawk '{ print $2 }' /proc/asound/modules )
mod=$( sort <<< $mod )
# modules kernel
for imod in $( sort -u <<< $mod ); do
modules+=$( gawk '
/'$imod'/ { printf "%-25s %s %2s %s\n",$1, $2, $3, $4 }
' <<< $( lsmod ) )$'\n'"------"$'\n'
motif+="$imod|"
done
modules=${modules%[[:cntrl:]]------[[:cntrl:]]} # suppression espacement
motif=${motif%|} # suppression | final
cmd_modules="lsmod | grep '$motif'"
[ "$( f__wcv -l "$modules" )" -gt 1 ] && pluriel="s" || unset pluriel
cmt_modules="$( f__wcv -l "$modules" ) module"$pluriel" utilisé"$pluriel" *"
fi
# modules alsa
mod=$( gawk '{ print $2 }' /proc/asound/modules )
mod=$( sort <<< $mod )
# modules kernel
for imod in $( sort -u <<< $mod ); do
modules+=$( gawk '
/'$imod'/ { printf "%-25s %s %2s %s\n",$1, $2, $3, $4 }
' <<< $( lsmod ) )$'\n'"------"$'\n'
motif+="$imod|"
done
modules=${modules%[[:cntrl:]]------[[:cntrl:]]} # suppression espacement
motif=${motif%|} # suppression | final
cmd_modules="lsmod | grep '$motif'"
cmt_modules="modules kernel"
###
text="## son \n\n"
[ "$audio" ] && text+="$(sed -E 's/(.*)/> \* \*\*\1\*\*/' <<< $audio) \n\n" # mise en puces + quote
text="## audio \n\n"
[ "$fe_cards_audio" ] && text+="$(sed -E 's/(.*)/> \* \*\*\1\*\*/' <<< $fe_cards_audio) \n\n" # mise en puces + quote
# lspci -nnv
f_display "cardsAudio" "cmd" "$cmd_cards"
f_dspl_alert "alert_alsa" "alert"
@ -587,6 +584,7 @@ fi_audio(){ # 29/11/2017
f_display "card_alsa" "cmd" "cat /proc/asound/cards" "cartes enregistées"
f_display "mod" "cmd" "cat /proc/asound/modules" "modules alsa"
f_display "modules" "cmd" "$cmd_modules" "$cmt_modules"
echo -en "$text\n" >> "$fileOutput"
unset text
}
@ -603,6 +601,38 @@ fi_batt(){ # 10/11/2017
unset text
}
# $1=silent (pas d'affichage), assigne $fe_nb_bluez, $fe_cards_bluez
fi_bluez(){ # 30/11/2017
local bluez cmd_bluez cmt_bluez mod cmd_mod cmt_mod srch_mod text
[ "$( f__which hciconfig )" ] || return 0
fe_nb_bluez=$( hciconfig name | grep -c '^hci[0-9].*$' )
fe_cards_bluez=$( hciconfig name | grep -Eo '^hci[0-9]+' )
fe_cards_bluez=${fe_cards_bluez//[[:cntrl:]]/ }
[ "$1" == "silent" ] && return 0 # pas d"affichage
[ "$fe_nb_bluez" -eq 0 ] && return 0
# état
bluez=$( hciconfig -a )
cmd_bluez="hciconfig -a"
cmt_bluez="état des périphériques"
# modules
figet_modules "bluetooth"
mod="$fg_modules" # modules chargés
cmd_mod="lsmod | grep -Ew '$fg_modKernel'" # module driver
[ "$( f__wcv -l "$mod" )" -gt 1 ] && pluriel="s" || unset pluriel
cmt_mod="$( f__wcv -l "$mod" ) module"$pluriel" utilisé"$pluriel" *"
srch_mod=${fg_modMotif//|/ } # fg_modMotif motif de recherche, avec |
###
text="## Bluetooth \n\n"
f_display "bluez" "cmd" "$cmd_bluez" "$cmt_bluez"
f_display "mod" "cmd" "$cmd_mod" "$cmt_mod"
f_display "srch_mod" "var" "" "* recherche parmi:"
echo -en "$text\n" >> "$fileOutput"
unset text
}
fi_conf(){ # 27/11/2017
local confs file grepP toScrut=(
/etc/sysctl.conf
@ -822,23 +852,30 @@ fi_efi(){ # 20/11/2017
unset text
}
fi_graph(){ # 29/11/2017
local cards cmd_cards
local stck_glxinfo stck_glxinfoOpt stck_glxinfoDri glx_dvc cmd_glx_dvc glx_dvc_temp openGl cmd_openGl
local providers resolutions pluriel modules cmt_modules text
# assigne $fg_gpu (liste des gpu), $fg_nb_gpu
fi_gpu(){ # 30/11/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
local current_preferred cmd_current_preferred cmt_current_preferred
local modGpu cmd_modGpu cmt_modGpu srch_modGpu modVid cmd_modVid cmt_modVid srch_modVid
local alert_hybrid alert_3D alert_Wayland
# 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 ))"
[ "$fg_nb_gpu" ] || figet_gpu
fg_gpu=$( figet_lspci "video" "name")
fg_nb_gpu=$( f__wcv "-l" "$fg_gpu" )
[ "$1" == "silent" ] && return
[ "$fg_nb_gpu" -eq 0 ] && return 0 # pas de gpu, rien à voir
# lspci
cmd_cards="lspci -nnv -s $(gawk '/VGA |Display |3D / {print $1}' <<< $( lspci ))"
if [ "$fg_nb_gpu" -eq 1 ]; then # une seule carte
cards=$( fi_lspci "VGA .* controller|Display controller|3D controller|Graphic|multimedia" "raw" )
cards=$( figet_lspci "video" "raw" )
else # plusieurs cartes, essai optirun ou prime
cards=$( fi_lspci "VGA .* controller|Display controller|3D controller|Graphic|multimedia" "raw" "graph")
cards=$( figet_lspci "video" "raw" "graph")
prefixCmd=$(basename $(which toto) 2>/dev/null) || prefixCmd="DRI_PRIME=1"
cmd_cards="$prefixCmd $cmd_cards"
fi
@ -905,12 +942,22 @@ fi_graph(){ # 29/11/2017
fi
fi
# modules
modules=$( lsmod | grep -Ei 'amdgpu|ati|i915|nouveau|nvidia|radeon|video|gma' )
cmt_modules="modules recherchés: amdgpu, ati, i915, nouveau, nvidia, radeon, video, gma"
figet_modules "gpu"
modGpu="$fg_modules" # modules chargés
cmd_modGpu="lsmod | grep -Ew '$fg_modKernel'" # module driver
[ "$( f__wcv -l "$modGpu" )" -gt 1 ] && pluriel="s" || unset pluriel
cmt_modGpu="**Gpu:** $( f__wcv -l "$modGpu" ) module"$pluriel" utilisé"$pluriel" *"
srch_modGpu=${fg_modMotif//|/ } # fg_modMotif motif de recherche, avec |
figet_modules "video"
modVid="$fg_modules" # modules chargés
cmd_modVid="lsmod | grep -Ew '$fg_modKernel'" # module driver
[ "$( f__wcv -l "$modVid" )" -gt 1 ] && pluriel="s" || unset pluriel
cmt_modVid="**Video:** $( f__wcv -l "$modVid" ) module"$pluriel" utilisé"$pluriel" *"
srch_modVid=${fg_modMotif//|/ } # fg_modMotif motif de recherche, avec |
# fonctions externes
[ "$fg_resolution" ] || figet_screen
###
text="## graphisme \n\n"
text="## graphisme \n\n"
[ "$fg_gpu" ] && text+="$(sed -E 's/(.*)/> \* \*\*\1\*\*/' <<< $fg_gpu) \n\n" # mise en puces + quote
# nb écran & résolution(s) active(s)
text+="nombre d'écrans: **$fg_nb_screen** \n"
@ -931,7 +978,11 @@ fi_graph(){ # 29/11/2017
# résolutions possibles, pas d'affichage si mode (ssh) ou xrandr pas accessible
f_display "resolutions" "cmd" "$cmd_resolutions" "$cmt_resolutions"
# modules vidéo
f_display "modules" "var" "modules vidéo" "$cmt_modules"
f_display "modGpu" "cmd" "$cmd_modGpu" "$cmt_modGpu"
f_display "srch_modGpu" "var" "" "* recherche parmi:"
f_display "modVid" "cmd" "$cmd_modVid" "$cmt_modVid"
f_display "srch_modVid" "var" "" "* recherche parmi:"
echo -en "$text\n" >> "$fileOutput"
unset text
}
@ -1175,52 +1226,6 @@ fi_log_xorg(){ # 27/11/2017
unset text
}
# $1 chaines à extraire (sur un grep -Ei), $2 objet raw|name, $3=[graph] (optirun, DRI)
fi_lspci(){ # 29/11/2017
local slots lspci display='' prefixCmd
# uniquement les devices
if [ "$2" == "name" ]; then
while read 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 '
lspci=${lspci/Advanced Micro Devices, Inc. } # suppression 'Advanced Micro Devices, Inc. '
lspci=${lspci/Semiconductor Co., Ltd. } # suppression 'Semiconductor Co., Ltd. '
lspci=${lspci/Corporation } # suppression 'Corporation '
lspci=${lspci/Limited } # suppression 'Limited '
lspci=${lspci/Inc. } # suppression 'Inc. '
lspci=${lspci/Co. } # suppression 'Co. '
lspci=${lspci/Ltd. } # suppression 'Ltd. '
lspci=${lspci// } # suppression ' '
display+="$lspci"$'\n'
done <<< $( lspci | grep -Ei "$1" )
# lspci détaillé
elif [ "$2" == "raw" ]; then
slots=$( lspci | grep -Ei "$1" | cut -d" " -f1 )
if ! lspci -nnv &>/dev/null ; then # commande/option indisponible
display="lspci -nnv -s <device> non disponible"
else
for lspci in $slots; do
if [[ "$3" == "graph" && "$( f__which optirun )" ]]; then
lspci=$( optirun lspci -nnv -s $lspci )
elif [ "$3" == "graph" ]; then
lspci=$( DRI_PRIME=1 lspci -nnv -s $lspci )
else
lspci=$( lspci -nnv -s $lspci ) # normalement inutile, le contexte DRI_PRIME pourrait marcher partout
fi
lspci=${lspci/(prog-if*])} # suppression (prog-if...])
lspci=${lspci/Capabilities: <access denied>[[:cntrl:]][[:blank:]]} # suppression Capabilities: <access denied> (user)
display+="$lspci"$'\n\n' # double \n pour espace entre card
done
fi
fi
display=${display%[[:cntrl:]]} # suppression \nl final
echo -en "$display\n"
}
fi_mem(){ # 20/11/2017
local memoire swappiness text
figet_mem "mem" #options possibles mem swap total notitle nocoltitle
@ -1236,6 +1241,62 @@ fi_mem(){ # 20/11/2017
unset text
}
# [$1=silent], assigne fe_nb_reseau, fe_cards_reseau
fi_net(){ # 30/11/2017
local cards cmd_cards modEth cmd_modEth cmt_modEth srch_modEth pluriel text
local modWln cmd_modWln cmt_modWln srch_modWln
local alert_wlx
# devices
fe_cards_reseau=$( figet_lspci "net" "name" )
fe_nb_reseau=$(f__wcv -l "$fe_cards_reseau")
[ "$1" == "silent" ] && return 0
[ "$fe_nb_reseau" -eq 0 ] && return 0
# lspci
cards=$( figet_lspci "net" "raw" )
cmd_cards="lspci -nnv | grep -EiA 15 'network|ethernet'"
# cardsManuel="$(lspci -nnk | grep -EiA 5 'network|ethernet')"
# cardsManuel="$(lspci -nnv | grep -EiA 15 'network|ethernet')"
# cardsManuel="lspci -nnv -s $( lspci | grep -Ei 'network|ethernet' | cut -d" " -f1 )" si devices plusieurs slots???
# modules
#modules
figet_modules "ethernet"
modEth="$fg_modules" # modules chargés
cmd_modEth="lsmod | grep -Ew '$fg_modKernel'" # module driver
[ "$( f__wcv -l "$modEth" )" -gt 1 ] && pluriel="s" || unset pluriel
cmt_modEth="**Ethernet:** $( f__wcv -l "$modEth" -gt 1 ) module"$pluriel" utilisé"$pluriel" *"
srch_modEth=${fg_modMotif//|/ } # fg_modMotif motif de recherche, avec |
figet_modules "wireless"
modWln="$fg_modules" # modules chargés
cmd_modWln="lsmod | grep -Ew '$fg_modKernel'" # module driver
[ "$( f__wcv -l "$modWln" )" -gt 1 ] && pluriel="s" || unset pluriel
cmt_modWln="**Wifi:** $( f__wcv -l "$modWln" -gt 1 ) module"$pluriel" utilisé"$pluriel" *"
srch_modWln=${fg_modMotif//|/ } # fg_modMotif motif de recherche, avec |
[ "$fg_ip" ] || 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, "
alert_wlx+="éventuellement, changer le renommage: \n"
alert_wlx+="https://kyodev.frama.io/kyopages/trucs/interfaces-nommage-classique/"
fi
###
text="## réseau \n\n"
[ "$fe_nb_reseau" ] && text+="$(sed -E 's/(.*)/> \* \*\*\1\*\*/' <<< $fe_cards_reseau) \n\n" # mise en puces + quote
# lspci -nnv
f_display "cards" "cmd" "$cmd_cards"
# modules réseau
f_display "modWln" "cmd" "$cmd_modWln" "$cmt_modWln"
f_display "srch_modWln" "var" "" "* recherche parmi:"
f_display "modEth" "cmd" "$cmd_modEth" "$cmt_modEth"
f_display "srch_modEth" "var" "" "* recherche parmi:"
f_dspl_alert "alert_wlx" "alert"
echo -en "$text\n" >> "$fileOutput"
unset text
}
fi_nm(){ # 23/11/2017
[ $( f__which nmcli ) ] || return 0
local nm_etat cmd_nm_etat cmt_nm_etat nm_conf cmd_nm_conf cmt_nm_conf nm_wifis cmd_nm_wifis cmt_nm_wifis
@ -1256,6 +1317,7 @@ fi_nm(){ # 23/11/2017
f_display "nm_etat" "cmd" "$cmd_nm_etat" "$cmt_nm_etat"
f_display "nm_conf" "cmd" "$cmd_nm_conf" "$cmt_nm_conf"
f_display "nm_wifis" "cmd" "$cmd_nm_wifis" "$cmt_nm_wifis"
echo -en "$text\n" >> "$fileOutput"
unset text
}
@ -1533,6 +1595,7 @@ fi_pkg_apt(){ #v3 20/11/2017
[ $( f__which deborphan ) ] && f_display "deborphan" "cmd:vide" "$cmd_deborphan" "$cmt_deborphan"
[ $( f__which deborphan ) ] && f_dspl_alert "alert_deborphan" "info"
f_display "holded" "cmd:vide" "$cmd_holded" "$cmt_holded"
echo -en "$text\n" >> "$fileOutput"
unset text
}
@ -1621,21 +1684,10 @@ fi_pkg_x(){ #v2 23/11/2017
f_display "alert_pkg_todo" "var" "aide souhaitée"
}
fi_reseau(){ # 28/11/2017
local reseau nb_reseau cards cmd_cards ip_a iwconfig interfaces route resolv canal_wifi ifx text pluriel
local slots
local alert_wlx alert_ifconfig
# cardsManuel="$(lspci -nnk | grep -EiA 5 'network|ethernet')"
# cardsManuel="$(lspci -nnv | grep -EiA 15 'network|ethernet')"
# cardsManuel="lspci -nnv -s $( lspci | grep -Ei 'network|ethernet' | cut -d" " -f1 )" si devices plusieurs slots???
#lspci
# liste des devices
reseau=$( fi_lspci "Ethernet controller|Network controller" "name" )
# nombre de devices
nb_reseau=$(f__wcv -l "$reseau")
# lspci
cards=$( fi_lspci "Ethernet controller|Network controller" "raw" )
cmd_cards="lspci -nnv | grep -EiA 15 'network|ethernet'"
fi_reseau(){ # 30/11/2017
local ip_a iwconfig interfaces route resolv canal_wifi ifx text pluriel
local alert_ifconfig
# ip a & route
ip_a=$( ip a | sed '/link\/ether/d; /valid_lft/d' ) # filtre sur adr MAC & bail
# ip_a=$( sed '/inet6.*scope global/d; /inet6.*scope link/d' <<< $ip_a ) # filtre sur inet6 scope global & scope link (fe80::)
@ -1662,28 +1714,16 @@ fi_reseau(){ # 28/11/2017
netmgrrun+="$(ps -ef | grep -o "${netmgrpaths[$ifx]}.*$" | head -n 1)"
fi
done
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, "
alert_wlx+="éventuellement, changer le renommage: \n"
alert_wlx+="https://kyodev.frama.io/kyopages/trucs/interfaces-nommage-classique/"
fi
if [ $( f__which ifconfig ) ] ; then
alert_ifconfig="ifconfig [net-tools](https://github.com/giftnuss/net-tools) est un projet abandonné "
alert_ifconfig+="depuis des années. iproute2 (linuxfoundation) le remplace."
fi
[ "$fg_mod_net" ] || figet_mod_net
[ "$fg_ip" ] || figet_ip
###
# text="## réseau \n\n"
#echo -"$reseau"-
[ "$reseau" ] && text+="$(sed -E 's/(.*)/> \* \*\*\1\*\*/' <<< $reseau) \n\n" # mise en puces + quote
# lspci -nnv
f_display "cards" "cmd" "$cmd_cards"
text="## configuration \n\n"
# ip locales avec type
[ $(f__wcv "-l" "$fg_ip_tp") -gt 1 ] && pluriel="s" || unset pluriel
f_display "fg_ip_tp" "sans" "" "IP locale"$plurielD
f_dspl_alert "alert_wlx" "alert"
text+="* les adresses Mac peuvent être affichées avec \`$DIRNAME""getInfo --mac\` \n"
text+="* l'IP publique peut être connue avec: \`$DIRNAME""getInfo --ip\` \n\n"
# gateways
@ -1715,10 +1755,8 @@ fi_reseau(){ # 28/11/2017
else
text+=" * non trouvé parmi: ${netmgrnames[@]} \n"
fi
# modules réseau
f_display "fg_mod_net" "var" "modules réseau" "liste non garantie complète"
[ "$fg_mod_net" ] || text+="**Modules chargés non reconnus**"
f_dspl_alert "alert_ifconfig" "info"
echo -en "$text\n" >> "$fileOutput"
unset text
}
@ -1832,7 +1870,7 @@ fi_system_analyse(){ #v 25/11/2017
unset text
}
fi_systeme(){ # 27/11/2017
fi_systeme(){ # 30/11/2017
local mbr uname bootImage initDaemon serverX shells lastboot uptime charge pluriel text
local alimentation alim_total ligne date_install
local alert_SLiM alert_microcode
@ -1880,17 +1918,23 @@ fi_systeme(){ # 27/11/2017
uptime=${uptime//hour/h} # remplacement global
uptime=${uptime//minutes/mn} # remplacement global
uptime=${uptime//minute/mn} # remplacement global
[ "$fg_nb_batt" ] || figet_batt
[ "$fg_cpu" ] || figet_cpu
[ "$fg_de" ] || figet_de
[ "$fg_nb_disk" ] || figet_disk
[ "$fg_distrib" ] || figet_distrib
[ "$fg_dsp_mngr" ] || figet_dm
[ "$fg_dmi" ] || figet_dmi
[ "$fg_nb_gpu" ] || figet_gpu
[ "$fg_resolution" ] || figet_screen
[ "$fg_shell" ] || figet_shell
[ "$fg_wm" ] || figet_wm
# appels fonctions externes
[ "$fg_nb_batt" ] || figet_batt
[ "$fg_cpu" ] || figet_cpu
[ "$fg_de" ] || figet_de
[ "$fg_nb_disk" ] || figet_disk
[ "$fg_distrib" ] || figet_distrib
[ "$fg_dsp_mngr" ] || figet_dm
[ "$fg_dmi" ] || figet_dmi
[ "$fg_resolution" ] || figet_screen
[ "$fg_shell" ] || figet_shell
[ "$fg_wm" ] || figet_wm
[ "$fg_gpu" ] || fi_gpu "silent"
[ "$fe_cards_bluez" ] || fi_bluez "silent"
[ "$fe_cards_audio" ] || fi_audio "silent"
[ "$fe_cards_reseau" ] || fi_net "silent"
if [[ "$fg_dsp_mngr" =~ "slim" || "$fg_dsp_mngr_actif" =~ "slim" ]]; then
alert_SLiM="SLiM est un projet abandonné et peu compatible avec systemd"
fi
@ -1898,15 +1942,21 @@ fi_systeme(){ # 27/11/2017
alert_microcode="$fg_ucode"
[ "$ENV_DEB" ] && alert_microcode+="\n les installer: **apt install $ucode**"
fi
###
f__architecture || f__info "Architecture non supportée"
###
# text="## système \n\n"
text+="> **$fg_dmi** \n\n"
text+="$( sed -E 's/(.*)/> **\1**/' <<<$fg_dmi ) \n\n"
text+="* CPU \n"
text+=" * **$(sed -n '1p' <<< $fg_cpu)** \n"
text+="* GPU \n"
[ "$fg_nb_gpu" -eq 0 ] && text+=" * **pas de carte graphique détectée** \n" # pas de gpu
[ "$fg_gpu" ] && text+="$(sed -E 's/(.*)/ * **\1**/' <<<$fg_gpu) \n" || text+=" * n/a \n"
text+=" * **$( sed -n '1p' <<< $fg_cpu )** \n"
text+="* Vidéo \n"
[ "$fg_nb_gpu" -eq 0 ] && text+=" * **pas de carte graphique détectée** \n"
[ "$fg_gpu" ] && text+="$( sed -E 's/(.*)/ * **\1**/' <<<$fg_gpu ) \n"
text+="* Réseau \n"
[ "$fe_nb_reseau" -eq 0 ] && text+=" * **pas de carte réseau détectée** \n"
[ "$fe_cards_reseau" ] && text+="$( sed -E 's/(.*)/ * **\1**/' <<<$fe_cards_reseau ) \n"
text+="* Audio \n"
[ "$fe_nb_audio" -eq 0 ] && text+=" * **pas de carte audio détectée** \n"
[ "$fe_cards_audio" ] && text+="$( sed -E 's/(.*)/ * **\1**/' <<<$fe_cards_audio ) \n"
text+="* boot **$mbr** \n"
text+="* distribution **$fg_distrib** \n\n"
text+='``` \n'
@ -1924,6 +1974,7 @@ fi_systeme(){ # 27/11/2017
text+="display manager"$pluriel": $fg_dsp_mngr \n"
[ "$fg_dsp_mngr_actif" != "$fg_dsp_mngr" ] && text+="display manager actif: $fg_dsp_mngr_actif \n"
text+="desktop (DE): $fg_de \n"
text+="panel: $fg_de_panel \n"
text+="window manager: $fg_wm \n"
text+="shell actif: $fg_shell \n"
text+="shells installés: $fg_shells \n"
@ -1934,24 +1985,30 @@ fi_systeme(){ # 27/11/2017
text+="$fg_nb_batt batterie"$pluriel" présente$pluriel: \n"
text+="$(sed -En 's/^BAT(.*)$/ BAT\1/p' <<< $fg_batt) \n"
fi
[ "$fe_nb_bluez" -gt 1 ] && pluriel="s" || unset pluriel
[ "$fe_nb_bluez" -gt 0 ] && text+="$fe_nb_bluez carte"$pluriel" bluetooth ($fe_cards_bluez) \n"
text+="dernier boot: $lastboot, uptime: $uptime \n"
text+="charge système depuis les 1, 5 et 15 dernières minutes: $charge ($fg_nb_threads threads) \n"
text+='``` \n\n'
[[ -z "$alert_microcode" && "$fg_ucode" ]] && text+="* $fg_ucode \n\n"
f_dspl_alert "alert_SLiM" "info"
f_dspl_alert "alert_microcode" "info"
echo -en "$text\n" >> "$fileOutput"
unset text
}
fi_usb(){ # 25/10/2017
fi_usb(){ # 30/10/2017
local lsusb lsusb_t text
lsusb=$( lsusb )
lsusb_t=$( lsusb -t )
[ "$lsusb" ] || return 0
###
text="## USB \n\n"
f_display "lsusb" "cmd" "lsusb"
f_display "lsusb_t" "cmd" "lsusb -t"
echo -en "$text\n" >> "$fileOutput"
unset text
}
@ -1983,6 +2040,7 @@ fi_vrms(){ # 20/11/2017
else
text+="* les paquets non-free ou contrib ne peuvent être détectés sans l'installation de vrms \n"
fi
echo -en "$text\n" >> "$fileOutput"
unset text
}
@ -2543,8 +2601,8 @@ figet_cpu_uarch(){ # 24/11/2017
[ "$fg_uarch" ] && fg_uarch+=" {0x$family|0x$model}"
}
# assigne $fg_de
figet_de(){ #v 25/11/2017 # thanks neofetch
# assigne $fg_de, $fg_de_panel
figet_de(){ #v 30/11/2017 # thanks neofetch
local de="n/a"
fg_de="n/a"
[ "$ENV_DISPLAY" ] && fg_de+=":no Display"
@ -2576,6 +2634,13 @@ figet_de(){ #v 25/11/2017 # thanks neofetch
fi
fg_de=${de,,} # minuscule
fg_de=${fg_de^} # caractère 1 en majuscule
###
# panel
fg_de_panel=$( gawk ' BEGIN { IGNORECASE=1 }
#inclus lxpanel, mate-panel, gnome-panel, xfceX-panel
/(gnome-shell|kicker|plasma-desktop|plasma-netbook|lxpanel|panel)$/ { print $NF }
' <<< $( ps -A ) )
}
# $fg_nb_disk : nb disk fixe & amovible, $fg_disk_table : tableau sommaire, fg_disk_serial
@ -2729,7 +2794,7 @@ figet_dm(){ #v1 27/11/2017
}
# informations DMI, (firmware partie matériel), assigne $fg_dmi
figet_dmi(){ #v2 29/11/2017
figet_dmi(){ #v2 30/11/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
@ -2792,26 +2857,15 @@ figet_dmi(){ #v2 29/11/2017
tempo=$( sed 's/x.xx*//; s/To be filled by O\.E\.M\.//g' <<< $tempo | xargs )
bios+="$tempo "
done
[ "$product" ] && fg_dmi=$(printf "%s: %s " "prod." "$product")$'\n'
[[ "$board" && "$indic1" != "$indic2" ]] && fg_dmi+=$(printf "%s: %s " "board" "$board")$'\n'
[ "$bios" ] && fg_dmi+=$(printf "%s : %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")
fg_dmi=${fg_dmi//Inc. }
fg_dmi=${fg_dmi//INC. }
fg_dmi=${fg_dmi//Computer }
fg_dmi=${fg_dmi//COMPUTER }
}
# assigne $fg_gpu (liste des gpu), $fg_nb_gpu, requiert fi_lspci()
figet_gpu(){ #v4 29/11/2017
# laissé en fonction car utilisé par fi_system & fi_graph
# tout se passe dans fi_lspci
fg_gpu=$( fi_lspci "VGA .* controller|Display controller|3D controller|Graphic|multimedia" "name")
fg_gpu=${fg_gpu/Series Family /Series }
fg_gpu=${fg_gpu/Series Chipset Family /Series }
fg_gpu=${fg_gpu/High Definition /HD }
fg_nb_gpu=$( f__wcv "-l" "$fg_gpu" )
}
# infos température et fan via acpi, assigne $fg_hw
figet_hw(){ #v2 31/10/2017
local name labelF inputF labelT inputT critT hystT maxiT fan temp ihw
@ -2988,6 +3042,62 @@ figet_ip_pub(){ # 20/11/2017
fi
}
# $1=audio|video|net, $2 objet raw|name, $3=[graph] (optirun, DRI)
figet_lspci(){ # 30/11/2017
local motif slots lspci display='' prefixCmd
if [ "$1" = "audio" ]; then
motif="Audio device|Audio controller|Multimedia audio controller"
elif [ "$1" = "video" ]; then
motif="VGA .* controller|Display controller|3D controller|Graphic|multimedia"
elif [ "$1" = "net" ]; then
motif="Ethernet controller|Network controller"
fi
# uniquement les devices
if [ "$2" == "name" ]; then
while read 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 '
lspci=${lspci/Advanced Micro Devices, Inc. } # suppression 'Advanced Micro Devices, Inc. '
lspci=${lspci/Semiconductor Co., Ltd. } # suppression 'Semiconductor Co., Ltd. '
lspci=${lspci/Corporation } # suppression 'Corporation '
lspci=${lspci/Limited } # suppression 'Limited '
lspci=${lspci/Inc. } # suppression 'Inc. '
lspci=${lspci/Co. } # suppression 'Co. '
lspci=${lspci/Ltd. } # suppression 'Ltd. '
lspci=${lspci// } # suppression ' '
lspci=${lspci/Series Family /Series }
lspci=${lspci/Series Chipset Family /Series }
lspci=${lspci/High Definition /HD }
display+="$lspci"$'\n'
done <<< $( lspci | grep -Ei "$motif" )
# lspci détaillé
elif [ "$2" == "raw" ]; then
slots=$( lspci | grep -Ei "$motif" | cut -d" " -f1 )
if ! lspci -nnv &>/dev/null ; then # commande/option indisponible
display="lspci -nnv -s <device> non disponible"
else
for lspci in $slots; do
if [[ "$3" == "graph" && "$( f__which optirun )" ]]; then
lspci=$( optirun lspci -nnv -s $lspci )
elif [ "$3" == "graph" ]; then
lspci=$( DRI_PRIME=1 lspci -nnv -s $lspci )
else
lspci=$( lspci -nnv -s $lspci ) # normalement inutile, le contexte DRI_PRIME pourrait marcher partout
fi
lspci=${lspci/(prog-if*])} # suppression (prog-if...])
lspci=${lspci/Capabilities: <access denied>[[:cntrl:]][[:blank:]]} # suppression Capabilities: <access denied> (user)
display+="$lspci"$'\n\n' # double \n pour espace entre card
done
fi
fi
display=${display%[[:cntrl:]]} # suppression \n final
echo -en "$display\n"
}
# $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(){ # 27/11/2017
@ -3056,12 +3166,41 @@ figet_mem(){ # 27/11/2017
[ "$fg_mem" ] && fg_mem=${fg_mem::-1} # suppression dernier $'\n'
}
# assigne $fg_mod_net # 30/10/2017
figet_mod_net(){ # thanks wireless-info
local MODMATCHES LSMODMATCHES
MODMATCHES="(air|ar5|at7|ath[^3]?|b43|bcma|brcm|carl|ipw|iwl|ndis|r(818|8192[eu]|871|92su)|8(188|189|192|723|812)[acde][esu]|rt[23567]|rtl|ssb|wl|(cfg|mac)80211)"
LSMODMATCHES="(wmi|(dell|ideapad)[-_]laptop)"
fg_mod_net="$(lsmod | grep -E "(^|[[:punct:] ])($MODMATCHES|$LSMODMATCHES)[^[:punct:] ]*([[:punct:] ]|$)")"
# $1=gpu|video|ethernet|wireless|bluetooth [$2=list] séparateur espace si list
# assigne $fg_modules, $fg_modMotif, fg_modKernel
# affiche les modules chargés par type
figet_modules(){ # 30/11/2017
local modules dir separator
[ "$1" ] || return 1
# répertoire à scruter
dir="/lib/modules/$(uname -r)/kernel/drivers"
if [ "$1" == "gpu" ]; then
dir="$dir/gpu/drm"
elif [ "$1" == "ethernet" ]; then
dir="$dir/net/ethernet"
elif [ "$1" == "wireless" ]; then
dir="$dir/net/wireless"
else
dir="$dir/$1"
fi
# recherche modules/formation motif ou liste
[ "$2" == list ] && separator=" " || 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=${modules%$separator} # suppression dernier séparateur
modules=$( echo $modules | tr "$separator" '\n' | sort | tr '\n' "$separator" )
modules=${modules%$separator} # suppression dernier séparateur
# affichage si list éventuel
[ "$2" == list ] && echo -n $modules
[ "$2" == list ] && return 0
# recherche modules chargés
fg_modules="$( lsmod | grep -Ew "$modules" )"
[ "$fg_modules" ] && fg_modMotif="$modules" || unset fg_modMotif
fg_modKernel=$( gawk '{ print $1; exit }' <<< $fg_modules )
}
# assigne $fg_nb_screen, $fg_resolution. return fg_resolution=n/a[ (ssh)] & fg_nb_screen=n/a ou valeurs
@ -3177,7 +3316,7 @@ figet_test_gpu(){ # 30/10/2017
figet_dmi
f_display "fg_dmi" "var" "gpu test"
f_display "lspci" "cmd" "lspci -mm"
figet_gpu
[ "$fg_gpu" ] || fi_gpu "silent"
f_display "fg_gpu" "var" "fg_gpu"
}
@ -3566,7 +3705,7 @@ prg_1(){ # début
prg_2(){ # traitements principaux 21/11/2017
if [[ "$1" == all || "$1" =~ s ]]; then #systeme, matériel -cs
echo -e "# ▷ Système \n\n" >> "$fileOutput"
for i in fi_systeme fi_cpu fi_mem fi_hw fi_batt fi_graph fi_disk fi_audio fi_usb ; do
for i in fi_systeme fi_cpu fi_mem fi_hw fi_batt fi_gpu fi_net fi_audio fi_bluez fi_usb fi_disk ; do
echo -n "•"
$i
done
@ -3689,7 +3828,8 @@ for j in $options; do
-t | --test )
prg_1 "$*"
echo -n "•"
fi_audio
# fi_systeme
fi_net
exit ;; # test
-c* | all )
[ "$j" == "-c" ] && exec $0 "menu"

View File

@ -5,6 +5,23 @@
## 2.50.0 30/11/2017
* nouveau: fi_system, panel
* nouveau: figet_modules, maj dynamiques des modules sur le kernel actif
* nouveau: fi_bluez
* nouveau: fi_net, réseau scindé, partie matérielle, figet_modules
* nouveau:
* révision: fi_audio, variables publiques, insertion dans fi_system
* révision: figet_lspci, renommage, motifs extraction à l'intérieur
* révision: fi_audio, fi_graph, fi_net (figet_lspci)
* révision: fi_reseau, expurgée du matériel
* révision: fi_gpu, renommage fi_graph, utilisation figet_modules
* révision:
* suppression : figet_mod_net, adieu wireless-info
* suppression : figet_gpu, suppression, fusion avec fi_gpu
## 2.49.3 29/11/2017
* révision: fi-graph, figet_gpu, utilisation f_lspci