getInfo 3.7.0

This commit is contained in:
kyodev 2018-01-24 17:29:41 +01:00
parent bbf8050016
commit 4052eb6318
2 changed files with 114 additions and 120 deletions

View File

@ -1,7 +1,7 @@
#!/bin/bash
version=3.6.0
date="14/01/2018"
version=3.7.0
date="24/01/2018"
projet="simpledeb"
contact="IRC freenode ##sdeb ou https://framagit.org/kyodev/kyopages/issues/"
script="getInfo"
@ -268,7 +268,7 @@ f__wcv(){ # 09/11/2017
# si $2=print affiche url testée & entêtes http & location, return 0
# si $2=loc affiche seulement location, return 0
# si $2=test return 0 si ok, return 1 si KO
f__wget_test(){ # 24/12/2017
f__wget_test(){ # 16/01/2018
local file_test_wget="/tmp/testWget-$script" retourWget retourHttp location
wget -Sq --timeout=5 --tries=2 --user-agent="$user_agent" --spider --save-headers "$1" &>"$file_test_wget"
@ -291,15 +291,14 @@ f__wget_test(){ # 24/12/2017
fi
if [ "$2" == "print" ]; then
if [ "$retourWget" != "0" ]; then
echo "erreur wget: erreur $RED$retourWget"
echo -e "$BLUE $1$STD\t$RED $retourHttp"
echo " erreur wget: erreur $RED$retourWget"
echo -e "$BLUE $1$STD\t$RED $retourHttp$STD"
else
echo -e "$BLUE $1$STD\t$GREEN $retourHttp"
echo -e "$BLUE $1$STD\t$GREEN $retourHttp$STD"
fi
echo "$STD"
fi
if [ "$2" == "print" ] || [ "$2" == "loc" ]; then
[ "$location" ] && echo -n "$YELLOW$location" || echo -n "$YELLOW""no location"
[ "$location" ] && echo -n "$YELLOW $location" || echo -n "$YELLOW no location"
echo "$STD"
rm -f "$file_test_wget"
return 0
@ -328,16 +327,16 @@ f__which(){ # 27/11/2017
fi
}
f_affichage(){ # 2/12/2017
f_affichage(){ # 24/01/2018
local affichage_text=" _ ___ __
__ _ ___| |_|_ _|_ __ / _| ___
/ _' |/ _ \ __|| || '_ \| |_ / _ \
| (_| | __/ |_ | || | | | _| (_) |
\__, |\___|\__|___|_| |_|_| \___/
|___/"
local affichage_text=" _ ___ __
__ _ ___| |_|_ _|_ __ / _| ___
/ _' |/ _ \ __|| || '_ \| |_ / _ \
| (_| | __/ |_ | || | | | _| (_) |
\__, |\___|\__|___|_| |_|_| \___/
|___/ "
clear
echo -e "$BLUE$affichage_text\n$YELLOW version $version - $date$STD\n"
echo -e "$BLUE$affichage_text$YELLOW version $version - $date$STD\n"
}
# $1=type de titre var|cmd|sans|+:text|+:vide, $2 variable à afficher [$3 titre] [$4 commentaire]
@ -465,37 +464,36 @@ f_grep_file(){ # 12/12/2017
echo -en "$display"
}
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"
f_help(){ # 24/01/2018
local ligne help=(
"-----------------------------------------------------------------------"
"$GREEN""./getInfo$STD : exécution script"
"$GREEN""getInfo$STD : exécution script installé dans le système"
""
"$BOLD""options:$STD"
"$BLUE -c$STD : (catégorie) menu sélection catégorie d'analyse"
"$BLUE -cs$STD : catégorie système $BLUE-cs$STD : catégorie configuration"
"$BLUE -cr$STD : catégorie réseau $BLUE-ca$STD : catégorie analyse"
"$BLUE -j$STD : (journaux) analyse démarrage système, log Xorg, kernel et système, catégorie -ca"
"$BLUE -l$STD : (list) afficher le rapport markdown existant"
"$BLUE -p$STD : (paste) exporte le rapport markdown existant, durée standard du paste 7 jours"
"$BLUE -us$STD : upgrade spécial du script en place (sans être installé)"
"$BLUE --ip$STD : affiche ip publique (ipv4/ipv6), pas de rapport markdown"
"$BLUE --mac$STD : affiche adresses Mac, pas de rapport markdown"
"$BLUE --serial$STD : affiche n° série disques, batterie et châssis, pas de rapport markdown"
"$BLUE --ssid$STD : affiche configurations ssid, pas de rapport markdown,$RED root & NetworkManager$STD requis"
"$BLUE -t$STD$GREEN""n$STD : durée de conservation du paste de$GREEN n$STD jour(s)"
"-----------------------------------------------------------------------"
"$BLUE./$script -i$STD : installation du script dans le système $RED(root)$STD"
"$BLUE$script -h$STD, --help : affichage aide"
"$BLUE$script -r$STD, --remove : désinstallation du script $RED(root)$STD"
"$BLUE$script -u$STD, --upgrade : mise à jour script"
"$BLUE$script -v$STD, --version : version du script"
)
tput cuu1 # une ligne plus haut
for ligne in "${help[@]}"; do
echo -e " $ligne"
done
echo -e "$STD\n plus d'infos: $GREEN$url_notice\n$STD"
}
@ -4026,17 +4024,13 @@ fscript_cronAnacron(){ # 29/12/2017
esac
}
# version script en ligne, [$1=quiet], assigne $ver_script_install, $ver_script_online, $script_a_jour=ok|KO
fscript_get_version(){ # 27/12/2017
local wget_log="/tmp/wget_$RANDOM.log"
# version script, [$1=quiet], assigne $ver_script_install, $ver_script_online, $script_a_jour=ok|KO
fscript_get_version(){ # 24/01/2018
x_script_get_version=1
# version online
ver_script_online=$( wget -q --timeout=15 -o "$wget_log" -O - "$url_script" | grep -m1 '^version=' | cut -d'=' -f2 )
if [ "$?" -ne 0 ]; then
rm "$wget_log"
f__wget_test "$url_script"
fi
ver_script_online=$( wget -q --timeout=15 -o /dev/null -O - "$url_script" | grep -m1 '^version=' | cut -d'=' -f2 )
[ "$?" -ne 0 ] && f__wget_test "$url_script"
# version installée
if [ -e "$script_install" ]; then
ver_script_install=$( grep -m1 '^version=' $script_install | cut -d'=' -f2 )
@ -4047,7 +4041,6 @@ fscript_get_version(){ # 27/12/2017
fi
[ "$ver_script_online" ] || ver_script_online="$RED""n/a"
[ "$ver_script_install" ] || ver_script_install="Non installé"
rm "$wget_log"
[ "$1" == "quiet" ] && return 0
f__info "raw" "script en place: $GREEN$ver_script_install"
@ -4055,17 +4048,12 @@ fscript_get_version(){ # 27/12/2017
}
# installation du script dans le système
fscript_install(){ # 27/12/2017
fscript_install(){ # 15/01/2018
if grep -q 'bin' <<< "$( dirname $0 )" ; then
f__info "$RED""l'installation dans le système doit se faire depuis un script local $GREEN(./$script -i )"
return 1
fi
if [ "$EUID" -ne 0 ]; then
f__info "vous devez être$RED ROOT$BLUE pour installer ce script dans le système"
f__sudo "exec $0 -i"
return $?
fi
[ "$( type -t fscript_install_special )" ] && fscript_install_special # test, si fonction spécifique, appel
f__requis "wget anacron cron" || exit 1
@ -4086,7 +4074,7 @@ fscript_install(){ # 27/12/2017
}
# suppression du script dans le système
fscript_remove(){ # 27/12/2017
fscript_remove(){ # 15/01/2018
if ! grep -q 'bin' <<< "$( dirname $0 )" ; then
f__info "$RED""cette fonction doit être appelée depuis le script installé dans le système $GREEN($script -r)"
@ -4096,11 +4084,6 @@ fscript_remove(){ # 27/12/2017
f__info "$RED$script n'est pas installé"
return 1
fi
if [ "$EUID" -ne 0 ]; then
f__info "vous devez être$RED ROOT$BLUE pour supprimer ce script dans le système"
f__sudo "exec $0 -r"
return $?
fi
[ "$( type -t fscript_remove_special )" ] && fscript_remove_special # test, si fonction spécifique, appel
# suppression de /opt lien /usr/bin
@ -4113,8 +4096,8 @@ fscript_remove(){ # 27/12/2017
}
# mise à jour script, [$1 != "" si upgrade en place, $1 dans message info]
fscript_update(){ # 27/12/2017
local dirTemp="/tmp/$script-maj" wget_log="/tmp/wget_$RANDOM.log" upgradeEnPlace="$1"
fscript_update(){ # 24/01/2018
local dirTemp="/tmp/$script-maj" upgradeEnPlace="$1"
[ "$(type -t fscript_update_special)" ] && fscript_update_special # test, si fonction spécifique, appel
if [ -z "$upgradeEnPlace" ] && ! grep -q 'bin' <<< "$( dirname $0 )" ; then
@ -4129,10 +4112,9 @@ fscript_update(){ # 27/12/2017
f__info "mise à jour en cours"
fi
mkdir -p "$dirTemp"
wget -q --tries=2 --timeout=15 -o "$wget_log" -O "$dirTemp/$script" "$url_script"
wget -q --tries=2 --timeout=15 -o /dev/null -O "$dirTemp/$script" "$url_script"
if [ "$?" -ne 0 ]; then
rm -rf "$dirTemp/"
rm -f "$wget_log"
rm -rf "$dirTemp"
f__wget_test "$url_script"
fi
if grep -q '#!/bin/bash' "$dirTemp/$script" && grep -q '^### END CONTROL' "$dirTemp/$script"; then
@ -4145,7 +4127,6 @@ fscript_update(){ # 27/12/2017
f_info "log" "$script: échec update" "mauvais téléchargement, réessayer plus tard"
fi
rm -rf "$dirTemp/"
rm -f "$wget_log"
}
prg_init(){ # 4/12/2017
@ -4207,7 +4188,8 @@ prg_init(){ # 4/12/2017
fi
# requis pour fonctionnement programme
f__requis "gawk wget ip>iproute2 lspci>pciutils wc>coreutils uptime>procps" || exit 1
# f__requis "gawk wget ip>iproute2 lspci>pciutils wc>coreutils uptime>procps" || exit 1
f__requis "mawk wget ip>iproute2 lspci>pciutils wc>coreutils uptime>procps" || exit 1
# detect rapide systeme deb
[ $( f__which dpkg ) ] && ENV_DEBIAN="oui"
@ -4301,50 +4283,51 @@ prg_init
# logo et définition couleurs
f_affichage
# paramètres script
user_agent="Mozilla/5.0 Firefox"
fileDev="/opt/bin/fileDev"
file_output="getInfo_rapport.md"
script_install="/opt/bin/$script"
script_logs="/var/log/sdeb_$script.log"
url_script="https://framagit.org/kyodev/kyopages/raw/master/scripts/$script"
url_notice="https://kyodev.frama.io/kyopages/scripts/getInfo/"
pasteDuration=7 # durée de conservation standard du paste en jours
spc5=$'\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0'
ligneRapport="Rapport du $(date '+%d/%m/%Y %H:%M %z')$spc5◇$spc5$0 $*$spc5◇$spc5[$script $version]($url_notice)"
options=$@
# traitement option paramètres
for j in $options; do
for j in $options; do # première passe options
case $j in
--debug-paste )
optDebug="debugPaste"
;; # si debug, retour json de pastery.net
;; # si debug, retour json de pastery.net
-t* )
pasteDuration="$(sed -En 's/-t([0-9]+)/\1/p' <<< $j)"
;; # durée de conservation standard du paste en jours
;; # durée de conservation standard du paste en jours
-i | --install | -r | --remove )
if [ "$EUID" -ne 0 ]; then
f__info "vous devez être$RED ROOT$BLUE pour cette opération"
f__sudo "exec $0 $@"
exit
fi
;;&
esac
done
options="$(sed -E 's/--debug-paste//g; s/-t[0-9]+//g' <<< $options | xargs)" # nettoyage options
[ "$options" ] || options="all"
# paramètres généraux
[ "$pasteDuration" ] || pasteDuration=7 # durée de conservation standard du paste en jours
user_agent="Mozilla/5.0 Firefox"
fileDev="/opt/bin/fileDev"
file_output="getInfo_rapport.md"
script_install="/opt/bin/$script"
script_logs="/var/log/sdeb_$script.log"
url_script="https://frama.link/getInfo"
url_notice="https://frama.link/doc-getInfo"
# test si frama.link ok, sinon fallback sur framagit
if [[ "$options" =~ all|-d|-h|-c|-v ]]; then
if ! f__wget_test "$url_script" "test"; then
url_script="https://framagit.org/kyodev/kyopages/raw/master/scripts/$script"
url_notice="https://kyodev.frama.io/kyopages/scripts/getInfo/"
fi
fi
spc5=$'\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0'
ligneRapport="Rapport du $(date '+%d/%m/%Y %H:%M %z')$spc5◇$spc5$0 $*$spc5◇$spc5[$script $version]($url_notice)"
# traitement options menu catégories
for k in $options; do
for k in $options; do # traitement options menu catégories
categorie+="$(sed -En 's/-c([a-z]+)/\1/p' <<< $k)"
options="$(sed -E 's/-c[a-z]+//' <<< $k | xargs)"
done
[ "$categorie" ] && options+=" -c$categorie"
# actions
for j in $options; do
for j in $options; do # deuxième passe options, actions
case $j in
-t | --test )
ORIGIN='test'
@ -4352,14 +4335,14 @@ for j in $options; do
echo -n "•"
fi_log_xorg
echo; f_prnt_md "$file_output"
exit ;; # test
;; # test
-c* | all )
[ "$j" == "-c" ] && exec $0 "menu"
prg_1 "$*"
j=$(sed -E 's/-c//' <<< $j)
prg_2 "$j"
prg_3
exit ;; # rapport complet ou par catégorie
;; # rapport complet ou par catégorie
-dx )
prg_1 "$*"
fi_gpu "xorgOnly"
@ -4369,52 +4352,52 @@ for j in $options; do
prg_1 "$*"
fi_pkg_apt "confOnly"
f_prnt_md "$file_output"
exit ;; # essai util source/apt confOnly
;; # essai util source/apt confOnly
-j )
prg_1 "$*"
prg_2 "a"
exit ;; # exporte le rapport existant
;; # exporte le rapport existant
-l )
f_prnt_md "$file_output"
exit ;; # afficher le rapport existant
;; # afficher le rapport existant
-p )
fipaste
exit ;; # exporte le rapport existant
-h )
f_help
exit ;; # affichage help
;; # exporte le rapport existant
--ip )
fi_ip_pub "-46"
echo
exit ;; # affiche ip public
;; # affiche ip public
--mac )
figet_ip
f__info "adresses MAC:\n$STD$BOLD$fg_mac"
exit ;; # affiche adresses mac
;; # affiche adresses mac
--serial )
fi_serial
exit ;; # affiche n° série
;; # affiche n° série
--ssid )
fi_ssid
exit ;; # affiche configurations ssid, root requis
;; # affiche configurations ssid, root requis
-h )
f_help
;; # affichage help
-i | --install )
fscript_install
exit ;; # installation du script dans le système
;; # installation du script dans le système
-r | --remove )
fscript_remove
exit ;; # suppression du script dans le système
;; # suppression du script dans le système
-u | --upgrade )
opType="upgrade" # log si f__error
fscript_update
exit ;; # upgrade script si maj possible
-us )
-us | --us )
opType="upgrade" # log si f__error
script_install="$(dirname $0)/$script"
fscript_update "update en place" # redéfinition répertoire install avec celui du script
exit ;; # upgrade spécial
-v | --version )
fscript_get_version
exit ;; # version du script, en ligne et exécuté
;; # version du script, en ligne et exécuté
menu | * )
prg_1 "$*"
prg_menu
@ -4430,4 +4413,3 @@ wget -nv -O getInfo https://frama.link/getinfo
chmod +x getInfo && ./getInfo
wget -nv -O getInfo https://framagit.org/kyodev/kyopages/raw/master/scripts/getInfo

View File

@ -1,6 +1,18 @@
# changelog getInfo
traitements options dans les options :/
* révision: général, invocation f__sudo dans traitement options, plus confortable si su & _all_
* mawk à tester
## getInfo 3.7.0 24/01/2018
* nouveau: cumul options (opérations) possibles pour la plupart des opérations
* révision: invocation f__sudo dans traitement options, plus confortable si su & _all_
* révision; f__wget_test
* révision: f_sudo abandonné dans fscript_install et fscript_remove, au profit appel au traitement général des options
* révision: f_help, f_affichage
* révision: général wget_log: fscript_get_version, fscript_update
* suppression: liens et tests frama.link
## getInfo 3.6.0 14/01/2018