added netGetIfaces()
[grml-shlib.git] / sh-lib
diff --git a/sh-lib b/sh-lib
index 640a5b6..4d858a9 100644 (file)
--- a/sh-lib
+++ b/sh-lib
@@ -25,6 +25,9 @@ SYSLOG__="YES"
 
 CMD_LINE__=""   # /proc/cmdline
 
+LANG__="$LANG"
+LC_ALL__="$LC_ALL"
+
 
 # CONFIG FUNCTIONS  {{{
 
@@ -34,6 +37,10 @@ function setExitFunction  { EXIT_FUNCTION__="$1"; }
 
 function disableSyslog  { SYSLOG__="NO";  }
 function enableSyslog   { SYSLOG__="YES"; }
+
+function saveLang { LANG__="$LANG"; LC_ALL__="$LC_ALL"; }
+function restoreLang { LANG="$LANG__"; LC_ALL="$LC_ALL__"; }
+function setCLang { saveLang; LANG="C"; LC_ALL="C"; }
 # }}}
 
 
@@ -421,19 +428,41 @@ function netValidIp
   return $ret_
 }
 
+function netGetIfaces
+{
+       local error_function_=${1:-"eprint"}    # function to call on error
+       local message_="$2"    # user supplied error message
+       local if_=''
+       local ret_=''
+
+       #ip a|grep 'inet ' |awk '$NF !~ /lo/{print $NF}'
+       if_="`ip a|grep 'inet ' |awk '{print $NF}'`"
+       ret_=$?
+       if [ -z "$if_" ]; then
+               if [ -z "$message_" ]; then
+                       "$error_function_" "no interfaces found" $ret_
+               else
+                       "$error_function_" "$message_" $ret_
+               fi
+               return 1
+       fi
+       dprint "interfaces found" $ret_
+       echo "$if_"
+}
+
 # FIXME
 function netGetDefaultGateway
 {
   local error_function_=${1:-"eprint"}    # function to call on error
   local message_="$2"    # user supplied error message
   
-  local LANG=C
-  local LC_ALL=C
   local ip_=''
   local ret_=''
   
+  setCLang
   ip_=`route -n | awk '/^0\.0\.0\.0/{print $2; exit}'`
   ret_=$?
+  restoreLang
   if [ -z "$ip_" ]; then
     if [ -z "$message_" ]; then
       "$error_function_" "no default gateway found" $ret_
@@ -454,13 +483,13 @@ function netGetNetmask
   local error_function_=${2:-"eprint"}    # function to call on error
   local message_="$3"    # user supplied error message
   
-  local LANG=C
-  local LC_ALL=C
   local nm_=''
   local ret_=''
   
+  setCLang
   nm_=`ifconfig "$iface_" | awk '/[Mm]ask/{FS="[:   ]*"; $0=$0; print $8; exit}'`
   ret_=$?
+  restoreLang
   if [ -z "$nm_" ]; then
     if [ -z "$message_" ]; then
       "$error_function_" "could not find a netmask for \"$iface_\"" $ret_
@@ -481,14 +510,14 @@ function netGetIp
   local error_function_=${2:-"eprint"}    # function to call on error
   local message_="$3"    # user supplied error message
 
-  local LANG=C
-  local LC_ALL=C
   local ip_=""
   local ret_=""
 
+  setCLang
   #ip_=`ip addr list eth0 |mawk '/inet/{split($2,A,"/"); print A[1]}'`
   ip_=`ifconfig "$iface_" | awk '/[Ii]net [Aa]ddr/{FS="[:  ]*"; $0=$0; print $4; exit}'`
   ret_=$?
+  restoreLang
   if [ -z "$ip_" ]; then
     if [ -z "$message_" ]; then
       "$error_function_" "no ip for \"$iface_\" found" $ret_
@@ -515,7 +544,9 @@ function netGetNameservers
     return 1
   fi
   
+  setCLang
   ns_=`awk '/^nameserver/{printf "%s ",$2}' $file_`
+  restoreLang
   if [ -z "$ns_" ]; then
     if [ -z "$message_" ]; then
       "$error_function_" "no nameservers found" $ret_