getInfo 2.43.0

This commit is contained in:
kyodev 2017-11-22 20:33:37 +01:00
parent 52da9ff67e
commit fa21b1e200
2 changed files with 188 additions and 138 deletions

View File

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

View File

@ -3,9 +3,17 @@
* f__wcv, f_display_grep, f_dspl_md, f__wget_test, fscript_get_version, fscript_update * f__wcv, f_display_grep, f_dspl_md, f__wget_test, fscript_get_version, fscript_update
* ! f__requis, fscript_install, f__scandir * ! f__requis, fscript_install, f__scandir
## 2.43.0 22/11/2017
* nouveau: fi_serial, machine ID si présent
* révision: f_help, nouvelle manière afficher
* fix: fi_serial, fi_ssid, pas d'utilisation fichier MD
* fix: f_grep_file, protection espaces dans nom de fichier (NM!..)
* fix: fi_systeme, erreur sous fedora
## 2.42.3 21/11/2017 ## 2.42.3 21/11/2017
* révision: wayland, wayland/root, évolution wayland si plus de xprop, xrandr, xdpyinfo... * révision: wayland, wayland/root, évolution wayland si plus de xprop, xrandr, xdpyinfo... +70lignes pour ça, environ!
* révision: fi_system, figet_de, fi_graph, figet_screen, fi_system_analyse prise en compte wayland * révision: fi_system, figet_de, fi_graph, figet_screen, fi_system_analyse prise en compte wayland
* révision: figet_wm, + compositor si connu * révision: figet_wm, + compositor si connu
* révision: fi_log_xorg, + emplacement log sous gdm3 X11 (nouveau sous buster?), cmd et info adaptés * révision: fi_log_xorg, + emplacement log sous gdm3 X11 (nouveau sous buster?), cmd et info adaptés