mirror of https://framagit.org/kyodev/kyopages.git
getInfo 2.43.0
This commit is contained in:
parent
52da9ff67e
commit
fa21b1e200
304
scripts/getInfo
304
scripts/getInfo
|
@ -1,7 +1,7 @@
|
|||
#!/bin/bash
|
||||
|
||||
version=2.42.3
|
||||
date="21/11/2017"
|
||||
version=2.43.0
|
||||
date="22/11/2017"
|
||||
projet="simpledeb"
|
||||
contact="IRC freenode ##sdeb ou https://framagit.org/kyodev/kyopages/issues/"
|
||||
script="getInfo"
|
||||
|
@ -372,22 +372,23 @@ f_dspl_alert(){ # 21/11/2017
|
|||
echo -en "$display\n" >> "$fileOutput" # flush fonction
|
||||
}
|
||||
|
||||
# conversion markdown pour affichage en console, $1 file à parser
|
||||
# tout en bash pour regex par défaut non-greedy (non gourmand) comme sed ou gawk
|
||||
# conversion markdown pour affichage en console, $1 file à parser, [$2=marge] margin left 2 espaces
|
||||
# tout en bash regex par défaut non-greedy (non gourmand) comme sed ou gawk
|
||||
# contrainte markdown:
|
||||
# l'italique avec _ ou * n'est pas géré, trop d'interférences potentielles
|
||||
# liste niveau2: 3 ou 4 caractères, niveau3: 6 ou 8 caractères, puce * ou -
|
||||
f_dspl_md(){ # 20/11/2017
|
||||
local display display2 ifs_origin ligne
|
||||
f_dspl_md(){ # 22/11/2017
|
||||
local display display2 ifs_origin ligne margin
|
||||
if [ ! -f "$1" ]; then
|
||||
f__info "pas de rapport à afficher, vous devez lancer une analyse auparavant:" \
|
||||
"$GREEN$script -l$BLUE ou afficher l'aide $GREEN$script -h"
|
||||
return 0
|
||||
fi
|
||||
if [ "$(stat -c %s $1)" -gt "100000" ]; then # taille en octets, > 100ko
|
||||
if [ "$(stat -c %s $1)" -gt "100000" ]; then # si taille en octets > 100ko pager
|
||||
pager "$1" || less "$1" || more "$1"
|
||||
return
|
||||
fi
|
||||
[ "$2" == "marge" ] && margin=" "
|
||||
display=$(< $1)
|
||||
display=${display//\`\`\`/---} # transforme ``` en ---, plus visibles
|
||||
# traitement par lignes, à là sed, obligatoire pour les titres #
|
||||
|
@ -426,7 +427,7 @@ f_dspl_md(){ # 20/11/2017
|
|||
# puces niveau 3
|
||||
[[ "$ligne" =~ ^([[:space:]]{6,8})\*(.*)$ ]] && ligne=${BASH_REMATCH[1]}'◾ '${BASH_REMATCH[2]}
|
||||
[[ "$ligne" =~ ^([[:space:]]{6,8})-(.*)$ ]] && ligne=${BASH_REMATCH[1]}'◾ '${BASH_REMATCH[2]}
|
||||
display2+="$ligne\n"
|
||||
display2+="$margin""$ligne\n"
|
||||
done <<< "$display"
|
||||
IFS="$ifs_origin"
|
||||
echo -e "$display2"
|
||||
|
@ -450,64 +451,72 @@ f_dspl_scandir(){ # 21/10/2017
|
|||
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',
|
||||
# concatène les fichiers, induit novide
|
||||
# si novide pas d'indication vide, ex. cumul option: " 10 novide" bien que '10-novide-nofile' fonctionne
|
||||
f_grep_file(){ # 19/11/2017
|
||||
local file var_temp display
|
||||
## concatène les fichiers, induit novide
|
||||
# si novide pas d'indication vide,
|
||||
# ex. cumul option: " 10 novide" '10-novide-nofile' fonctionne
|
||||
# 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
|
||||
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
|
||||
var_temp=${var_temp//$file} # pour esthétique, suppression de $file dans les noms de fichiers
|
||||
[[ "$2" =~ nofile ]] || display+=" $file \n" # nom fichier greppé si $2 ne contient pas 'file'
|
||||
if [ "$var_temp" ]; then
|
||||
content=${content//$file} # joli, suppression de $file dans les noms de fichiers en tête de ligne
|
||||
if [[ "$2" =~ [0-9] ]]; then # si $2 contient des chiffres, largeur, gawk
|
||||
display+=$(gawk -v "larg=${2//[[:alpha:]]}" '
|
||||
content=$(gawk -v "larg=${2//[[:alpha:]]}" '
|
||||
{ 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'
|
||||
' <<< "$content")
|
||||
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
|
||||
[ "$display" ] || display="nofile" # display vide, inscription 'nofile'
|
||||
display=${display::-1}
|
||||
[ "$display" ] || display="nofile" # si display vide, inscription 'nofile'
|
||||
echo -en "$display"
|
||||
}
|
||||
|
||||
f_help(){ # 06/11/2017
|
||||
printf "$BLUE"
|
||||
cat << 'EOF'
|
||||
./getInfo : exécution normale, rapport markdown de la configuration
|
||||
getInfo : exécution normale si script installé dans le système
|
||||
|
||||
options:
|
||||
-c : (catégorie) menu sélection catégorie d'analyse
|
||||
-cs : catégorie système -cs : catégorie configuration
|
||||
-cr : catégorie réseau -ca : catégorie analyse
|
||||
-h : (help) affichage aide
|
||||
-j : (journaux) analyse démarrage système, log Xorg, kernel et système, catégorie -ca
|
||||
-l : (list) afficher le rapport markdown existant
|
||||
-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), infos confidentielles, pas de rapport markdown
|
||||
--mac : affiche les adresses Mac, infos confidentielles, pas de rapport markdown
|
||||
--serial : affiche n° série disques, batterie et châssis
|
||||
--ssid : affiche configurations ssid, infos confidentielles, pas de rapport markdown,
|
||||
root et NetworkManager requis
|
||||
|
||||
-i, --install : installation du script dans le système, root requis
|
||||
-r, --remove : suppression du script dans le système, root requis
|
||||
-u, --upgrade : upgrade script installé si maj possible
|
||||
-v, --version : version du script, en ligne et en cours d'exécution
|
||||
EOF
|
||||
echo -e "$STD\n plus d'infos: $GREEN$urlNotice\n$STD"
|
||||
f_help(){ # 22/11/2017
|
||||
local toDisplay ligne
|
||||
toDisplay=(
|
||||
"$GREEN ./getInfo$BLUE : exécution normale, rapport markdown de la configuration"
|
||||
"$GREEN getInfo$BLUE : script installé dans le système"
|
||||
""
|
||||
"$STD$BOLD options:$STD$BLUE"
|
||||
" -c : (catégorie) menu sélection catégorie d'analyse"
|
||||
" -cs : catégorie système -cs : catégorie configuration"
|
||||
" -cr : catégorie réseau -ca : catégorie analyse"
|
||||
" -h : (help) affichage aide"
|
||||
" -j : (journaux) analyse démarrage système, log Xorg, kernel et système, catégorie -ca"
|
||||
" -l : (list) afficher le rapport markdown existant"
|
||||
" -p : (paste) exporte le rapport markdown existant, durée standard du paste 7 jours"
|
||||
""
|
||||
" --ip : affiche ip publique (ipv4/ipv6), pas de rapport markdown"
|
||||
" --mac : affiche les adresses Mac, pas de rapport markdown"
|
||||
" pas de rapport markdown, $RED ROOT$BLUE requis:"
|
||||
" --serial : affiche n° série disques, batterie et châssis"
|
||||
" --ssid : affiche configurations ssid, infos confidentielles,$RED NetworkManager$BLUE 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"
|
||||
" -u, --upgrade : upgrade script installé si maj possible"
|
||||
" -v, --version : version du script, en ligne et en cours d'exécution"
|
||||
)
|
||||
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
|
||||
|
@ -522,6 +531,39 @@ fi_batt(){ # 10/11/2017
|
|||
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
|
||||
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'| \
|
||||
|
@ -1801,46 +1843,39 @@ fi_reseau(){ # 20/11/2017
|
|||
unset text
|
||||
}
|
||||
|
||||
fi_serial(){ # 16/11/2017
|
||||
local file="/tmp/$$-$RANDOM-fi_serial" chassis_serial text
|
||||
fi_serial(){ #v2 22/11/2017
|
||||
local chassis_serial machineId text
|
||||
[ "$fg_nb_disk" ] || figet_disk
|
||||
[ "$fg_nb_batt" ] || figet_batt
|
||||
f__sudo "cat /sys/class/dmi/id/chassis_serial 2>/dev/null > $file ; \
|
||||
chown $user_: $file"
|
||||
chassis_serial="$(cat $file 2>/dev/null)"
|
||||
rm "$file"
|
||||
chassis_serial=$( cat /sys/class/dmi/id/chassis_serial 2>/dev/null )
|
||||
machineId=$( cat /etc/machine-id 2>/dev/null )
|
||||
###
|
||||
text="$BOLD\n N° Série \n\n$STD"
|
||||
[ "$machineId" ] && text+="\n$BOLD ID MAchine: $BLUE$machineId \n\n$STD"
|
||||
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_batt_serial" ] && text+="$GREEN * Batteries \n"
|
||||
[ "$fg_batt_serial" ] && text+="$BLUE$fg_batt_serial \n\n$STD"
|
||||
[ "$chassis_serial" ] && text+="$GREEN * Chassis \n"
|
||||
[ "$chassis_serial" ] && text+="$BLUE$chassis_serial \n\n$STD"
|
||||
echo -en "$text\n" >> "$fileOutput"
|
||||
echo -en "$text"
|
||||
unset text
|
||||
}
|
||||
|
||||
fi_ssid(){ # 09/11/2017
|
||||
fi_ssid(){ #v2 22/11/2017
|
||||
local nm_ssid text
|
||||
local fileOutput="/tmp/$RANDOM-$RANDOM" # ré-assigne sortie pour f_display
|
||||
[ "$EUID" -eq 0 ] || f__error "Root requis"
|
||||
[ $( f__which nmcli ) ] || f__error "NetworkManager requis"
|
||||
local nm_ssid file="/tmp/$$-$RANDOM-fi_ssid" text
|
||||
# nm_ssid="$(grep -Ev '#|^$' /etc/NetworkManager/system-connections/*)"
|
||||
[ "$EUID" -eq 0 ] || echo
|
||||
f__sudo "grep -Ev '^[[:blank:]]*#|^[[:blank:]]*$' /etc/NetworkManager/system-connections/* > $file ; \
|
||||
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"
|
||||
nm_ssid=$( f_grep_file "/etc/NetworkManager/system-connections/*" "ligneVide" )
|
||||
###
|
||||
f__info "la$RED clé du réseau wifi étant visible$STD, aucun rapport n'a été créé"
|
||||
text="$BOLD configuration(s) ssid networkmanager \n\n"
|
||||
text+="$GREEN""grep -Ehv '#|^$' /etc/NetworkManager/system-connections/*$STD \n\n"
|
||||
text+="$nm_ssid \n\n"
|
||||
f__info "$RED""Attention:$BLUE la clé du réseau wifi est visible"
|
||||
text="## configuration(s) ssid networkmanager \n\n"
|
||||
f_display "nm_ssid" "cmd" "grep -Ersv '#|^$' /etc/NetworkManager/system-connections/*"
|
||||
echo -en "$text\n" >> "$fileOutput"
|
||||
unset text
|
||||
f_dspl_md "$fileOutput" "marge"
|
||||
rm "$fileOutput"
|
||||
}
|
||||
|
||||
fi_system_analyse(){ #v 21/11/2017
|
||||
|
@ -1915,7 +1950,7 @@ fi_system_analyse(){ #v 21/11/2017
|
|||
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 alimentation alim_total ish ifs_origin ligne date_install 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 '{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" == "systemd" ] && initDaemon=$( systemd --version )
|
||||
[ $( f__which systemd )] && initDaemon=$( systemd --version )
|
||||
initDaemon=${initDaemon%%[[:space:]]+*}
|
||||
initDaemon=${initDaemon/systemd/systemd version}
|
||||
[ "$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_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 07/11/2017
|
||||
figet_disk(){ #v2 22/11/2017
|
||||
local size type list_id idisk lsblk vendor model rev serial
|
||||
unset fg_disk_fixe fg_disk_amov
|
||||
# bug printf: caractères accentués diminuent 1 caractère sur arguments suivants, ajouter autant d'espaces
|
||||
|
@ -2427,6 +2462,7 @@ figet_disk(){ #v2 07/11/2017
|
|||
fi
|
||||
done
|
||||
[ "$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
|
||||
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)
|
||||
|
@ -3248,6 +3284,57 @@ fscript_update(){ # 06/11/2017
|
|||
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
|
||||
echo > "$fileOutput"
|
||||
chown $user_: "$fileOutput" &>/dev/null
|
||||
|
@ -3263,7 +3350,7 @@ prg_2(){ # traitements principaux 21/11/2017
|
|||
$i
|
||||
done
|
||||
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"
|
||||
for i in fi_locale fi_vrms fi_packagers ; do
|
||||
echo -n "•"
|
||||
|
@ -3324,49 +3411,6 @@ function display_menu {
|
|||
reply="$(sed 's/-call/all/' <<< $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
|
||||
|
||||
|
@ -3375,8 +3419,6 @@ f__affichage
|
|||
|
||||
# tests au démarrage
|
||||
prg_init
|
||||
# requis pour fonctionnement programme
|
||||
f__requis "gawk wget ip>iproute2 lspci>pciutils wc>coreutils" || exit 1
|
||||
|
||||
options=$@
|
||||
# traitement option paramètres
|
||||
|
@ -3425,8 +3467,8 @@ for j in $options; do
|
|||
case $j in
|
||||
-t | --test )
|
||||
prg_1 "$*"
|
||||
echo -n "."
|
||||
fi_graph
|
||||
echo -n "•"
|
||||
fi_conf
|
||||
exit ;; # test
|
||||
-c* | all )
|
||||
[ "$j" == "-c" ] && exec $0 "menu"
|
||||
|
|
|
@ -3,9 +3,17 @@
|
|||
* f__wcv, f_display_grep, f_dspl_md, f__wget_test, fscript_get_version, fscript_update
|
||||
* ! 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
|
||||
|
||||
* 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: figet_wm, + compositor si connu
|
||||
* révision: fi_log_xorg, + emplacement log sous gdm3 X11 (nouveau sous buster?), cmd et info adaptés
|
||||
|
|
Loading…
Reference in New Issue