diff --git a/scripts/getInfo b/scripts/getInfo index 5371f9b..374d875 100755 --- a/scripts/getInfo +++ b/scripts/getInfo @@ -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 - diff --git a/scripts/getInfo_changelog.md b/scripts/getInfo_changelog.md index 0a1c2c8..a8571ce 100644 --- a/scripts/getInfo_changelog.md +++ b/scripts/getInfo_changelog.md @@ -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