diff --git a/scripts/getIp b/scripts/getIp index 3e9258e..858cbae 100755 --- a/scripts/getIp +++ b/scripts/getIp @@ -1,7 +1,7 @@ #!/bin/bash -version=1.12.0 -date="11/10/2017" +version=1.13.0 +date="16/10/2017" projet="simpledeb" contact="IRC freenode ##sdeb ou https://framagit.org/kyodev/kyopages/issues/" script="getIp" @@ -31,26 +31,24 @@ f__color(){ # 08/10/2017 } # affichage $1 en rouge, $1++ optionnels en bleu, sortie script sur erreur, log $1 si $opType=upgrade -f__error(){ # 08/10/2017 +f__error(){ # 15/10/2017 echo -e "\n$RED $script $version, erreur critique: $1 $STD" for (( i=2 ; i<=$# ; i++ )); do echo -e " $BLUE${!i}$STD" done - unset i echo if [ "$opType" == "upgrade" ]; then f__log "$script $version: $1"; fi exit 1 } # affichage des paramètres en bleu, si $1=raw pas de ligne vide à la fin, si $1=log alors uniquement $2 logué -f__info(){ # 08/10/2017 - local depart=1 +f__info(){ # 15/10/2017 + local depart=1 i if [ "$1" == "raw" ] || [ "$1" == "log" ]; then depart=2; fi [ "$1" == "log" ] && f__log "$(sed -E 's/\\t//;s/\\n// ' <<< $2 | xargs )" for (( i=$depart ; i<=$# ; i++ )); do echo -e " $BLUE${!i}$STD" done - unset i [ "$1" == raw ] || echo } @@ -73,8 +71,8 @@ f__log(){ # 08/09/2017 # si $2=debOnly et si paquets manquants: return 1 et $debOnlyPackages ( $1=liste paquets ) # si $2=debOnly et si paquets présent: return 0 et $debOnlyPresents ( $1=liste paquets ) # attention priorité $debOnlyPackages sur $debOnlyPresents -f__requis(){ # 22/09/2017 - local dependsMissing packagesMissing command package +f__requis(){ # 15/10/2017 + local dependsMissing packagesMissing command package i unset debOnlyPackages debOnlyPresents for i in $1; do command="$(cut -d '>' -f 1 <<< $i)" @@ -89,7 +87,6 @@ f__requis(){ # 22/09/2017 packagesMissing+="$package " fi done - unset i [ "$debOnlyPackages" ] && debOnlyPackages="$(xargs <<< $debOnlyPackages)" # trim début & fin [ "$debOnlyPresents" ] && debOnlyPresents="$(xargs <<< $debOnlyPresents)" # trim début & fin [ "$debOnlyPackages" ] && return 1 @@ -97,7 +94,8 @@ f__requis(){ # 22/09/2017 if [ "$dependsMissing" ]; then if [ -e /etc/debian_version ]; then f__error "paquet(s) manquant(s): " " $dependsMissing" \ " vous devriez exécuter:$GREEN apt install $packagesMissing" - else f__error "commandes(s) manquante(s): " "$dependsMissing"; fi + else f__error "commandes(s) manquante(s): " "$dependsMissing"; fi # -> exit + return 1 fi } @@ -163,7 +161,7 @@ f__user(){ # 06/10/2017 # si $2=print affiche url testée & entêtes http & location (si présente) et sortie normale fonction # si $2=loc affiche seulement location et sortie normale fonction # si $2=test return 0 si ok, return 1 si ko -f__wget_test(){ # 08/10/2017 +f__wget_test(){ # 15/10/2017 local file_test_wget retourWget retourHttp location file_test_wget="/tmp/testWget-$$-$RANDOM" wget -Sq --tries=1 --timeout=10 --user-agent="$user_agent" --spider --save-headers "$1" &>"$file_test_wget" @@ -195,8 +193,7 @@ f__wget_test(){ # 08/10/2017 fi if [ "$retourWget" ]; then rm "$file_test_wget" - f__error "erreur wget, $retourWget" "$1" "$YELLOW$retourHttp" \ - "si persistance, contacter $projet $contact en indiquant les messages précédents" + f__error "erreur wget, $retourWget" "$1" "$YELLOW$retourHttp" fi if [ "$(grep -c '200' <<< $retourHttp)" -ne 0 ]; then echo -e "$GREEN\ntout est ok, réessayer\n$STD" @@ -229,16 +226,19 @@ EOF echo -e "$STD plus d'infos: $GREEN$urlNotice\n" } - # assigne $ip_local, $gateway, $gateway_type, $gateway_one, $ip_local, $ip_local_type - # $ifnames, $ifnames_type, $mac_address, mac_address_type -figet_ip(){ # 02/10/2017 + # assigne $ip_local, $gateways, $gateways_type, $gateway, $gateway_type, $if_prioritaire + # $ip_local, $ip_local_type, $ifnames, $ifnames_type, $mac_address, mac_address_type +figet_ip(){ # 16/10/2017 local ifn [ -z "$(which ip)" ] && return 1 - ip_local="$(sed '/lo.*inet/d; /inet6.*scope global/d' <<< "$(ip -o a)" | awk '{print " ",$4,"(",$2,")"}')" + ip_local="$(sed '/[[:digit:]]:[[:blank:]]lo.*inet/d; /inet6.*scope/d' <<< $(ip -o a) | gawk '{print " ",$4,"(",$2,")"}')" ip_local_type="$(sed -E 's/(^.*wl.*)/\1 (wifi)/;s/(^.*en.*|^.*eth.*)/\1 (ethernet)/' <<< $ip_local)" - gateway="$(LC_ALL=C ip -4 route | awk '/default via/ {print " ",$3,"(",$5,")"}'; LC_ALL=C ip -6 route | awk '/default via/ {print " ",$3,"(",$5,")"}')" - gateway_type="$(sed -E 's/(^.*wl.*)/\1 (wifi)/;s/(^.*en.*|^.*eth.*)/\1 (ethernet)/' <<< $gateway)" - gateway_one="$(awk 'FNR==1 {print " ",$1}' <<< $gateway)" + gateways="$(LC_ALL=C ip -4 route | gawk '/default via/ {print " ",$3,"(",$5,")"}')" + gateways+="$(LC_ALL=C ip -6 route | gawk '/default via/ {print " ",$3,"(",$5,")"}')" + gateways_type="$(sed -E 's/(^.*wl.*)/\1 (wifi)/;s/(^.*en.*|^.*eth.*)/\1 (ethernet)/' <<< $gateways)" + gateway="$(gawk 'FNR==1 {print " ",$0}' <<< $gateways)" + gateway_type="$(gawk 'FNR==1 {print " ",$0}' <<< $gateways_type)" + if_prioritaire="$(ip route get 255.255.255.255 | sed -nr 's/.*src ([0-9.]+).*/\1/p')" for ifn in $(ls /sys/class/net/) ; do [ "$ifn" != "lo" ] && ifnames+=" $ifn"$'\n' [ "$ifn" != "lo" ] && mac_address+=" $ifn: $(< /sys/class/net/$ifn/address)"$'\n' @@ -247,6 +247,8 @@ figet_ip(){ # 02/10/2017 ifnames_type+="$(sed -E 's/(^.*wl.*)/\1 (wifi)/;s/(^.*en.*|^.*eth.*)/\1 (ethernet)/' <<< $ifnames)" mac_address="$(sed '/^$/d' <<< $mac_address)" # suppression \n final mac_address_type="$(sed -E 's/(^.*wl.*)/\1 (wifi)/;s/(^.*en.*|^.*eth.*)/\1 (ethernet)/' <<< $mac_address)" + ifnames=${ifnames::-1} # suppression dernier $'\n' + mac_address=${mac_address::-1} # suppression dernier $'\n' } # $1=4|6, assigne $ip_public diff --git a/scripts/getIp_changelog.md b/scripts/getIp_changelog.md index 7e9d7a4..49fb1c0 100644 --- a/scripts/getIp_changelog.md +++ b/scripts/getIp_changelog.md @@ -6,8 +6,16 @@ * placé ln dans /usr/local/bin au lieu de /usr/bin ? * IP si ethernet non connecté, détecter et ne pas afficher cat /sys/class/net/enp3s0/carrier 0|1 * adresses Mac +* revoir figet_ip, gateway + * éviter 169.254.10.12/16 ( enp3s0 ) (ethernet) si non branché + --- +## 1.13.0 16/10/2017 + +* fix: figet_ip, erreur possible entre lo/certain ifn +* mineur f__error f__info f__requis f__wget_test + ## 1.12.0 11/10/2017 * fix f__sudo : fonctionnement avec sudo