getIp 1.13.0

This commit is contained in:
kyodev 2017-10-16 23:44:34 +02:00
parent 94bb742978
commit 33eb002016
2 changed files with 31 additions and 21 deletions

View File

@ -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

View File

@ -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