X-Git-Url: http://ftp.carnet.hr/carnet-debian/scm?p=carnet-tools-cn.git;a=blobdiff_plain;f=functions.sh;h=ed67fb04871d66bfcad810e49db4a22436845797;hp=96d132f2f685aab8044f4f64d70f0942a0101472;hb=HEAD;hpb=5a800b1f6c62a25cc219cf11942ebcc9bbd07e3d diff --git a/functions.sh b/functions.sh index 96d132f..ed67fb0 100644 --- a/functions.sh +++ b/functions.sh @@ -5,6 +5,7 @@ if [ -z "$_CP_INIT_ECHO_RETURN" ]; then fi # by ddzeko & ico, Fri, 18 Mar 2005 14:44:08 +0100 +# modified by irako, Mon, 02 Jul 2018 21:46:29 +0200 cp_get_ifaddr() { [ "$CP_SCRIPT_DEBUG" ] && set -vx @@ -21,13 +22,16 @@ cp_get_ifaddr() { [ -z "$interface" ] && interface=lo fi - if ! ifconfig $interface 2> /dev/null >> /dev/null; then + #if ! ifconfig $interface 2> /dev/null >> /dev/null; then + if ! ip addr show $interface 2> /dev/null >> /dev/null; then echo "cp_get_ifaddr: $interface: No such interface" 1>&2 CP_ECHO_RETURN="$echo_return" return 2 fi - ifaddr="`/sbin/ifconfig $interface | awk '/inet/{ printf("%s\n",substr($2,index($2,":")+1)) }'`" + #ifaddr="`/sbin/ifconfig $interface | awk '/inet /{ printf("%s\n",substr($2,index($2,":")+1)) }'`" + #ifaddr="`/sbin/ifconfig $interface | awk '/inet /{ printf($2) }'`" + ifaddr="`ip -o -4 addr show $interface scope global | awk '{print $4;}' | cut -d/ -f 1 | head -1`" if [ -z $ifaddr ]; then echo "cp_get_ifaddr: $interface: No ip address found" 1>&2 @@ -41,10 +45,11 @@ cp_get_ifaddr() { } # by ddzeko & ico, Fri, 18 Mar 2005 14:44:08 +0100 +# modified by irako, Mon, 02 Jul 2018 21:46:29 +0200 cp_get_ifmask() { [ "$CP_SCRIPT_DEBUG" ] && set -vx - local ifmask interface echo_return + local ifmask interface echo_return cidr echo_return="$CP_ECHO_RETURN" # since we're making our own calls # in our own way we need to set CP_ECHO_RETURN the way we want it # but preserving initial state so it could be used afterwards @@ -57,13 +62,17 @@ cp_get_ifmask() { [ -z "$interface" ] && interface=lo fi - if ! ifconfig $interface 2> /dev/null >> /dev/null; then + #if ! ifconfig $interface 2> /dev/null >> /dev/null; then + if ! ip addr show $interface 2> /dev/null >> /dev/null; then echo "cp_get_ifmask: $interface: No such interface" 1>&2 CP_ECHO_RETURN="$echo_return" return 1 fi - ifmask="`/sbin/ifconfig $interface | awk '/Mask/{if($3~/Mask/)a=$3;else if ($4~/Mask/)a=$4;printf ("%s\n", substr(a,index(a,":")+1))}'`" + #ifmask="`/sbin/ifconfig $interface | awk '/Mask/{if($3~/Mask/)a=$3;else if ($4~/Mask/)a=$4;printf ("%s\n", substr(a,index(a,":")+1))}'`" + #ifmask="`/sbin/ifconfig $interface | awk '/netmask /{ printf($4) }'`" + cidr="`ip -o -4 addr show $interface scope global | awk '{print $4;}'`" + ifmask="`ipcalc -nb $cidr | awk '/^Netmask:/{print $2}'`" if [ -z "$ifmask" ]; then echo "cp_get_ifmask: $interface: No netmask found" 1>&2 @@ -77,6 +86,7 @@ cp_get_ifmask() { } # by ddzeko, Mon, 21 Mar 2005 07:00:22 +0100 +# modified by irako, Mon, 02 Jul 2018 21:46:29 +0200 cp_get_ifdefault() { [ "$CP_SCRIPT_DEBUG" ] && set -vx @@ -89,14 +99,16 @@ cp_get_ifdefault() { RET="" case $1 in dev) - RET=`route -n | awk 'BEGIN {m = 2^32} - /^0\.0\.0\.0[ \t]/ {if ($5 < m) {r = $8; m = $5}} - END {print r}'` + #RET=`route -n | awk 'BEGIN {m = 2^32} + # /^0\.0\.0\.0[ \t]/ {if ($5 < m) {r = $8; m = $5}} + # END {print r}'` + RET=`ip route | grep ^default | awk '{print $5}'` ;; addr) - RET=`route -n | awk 'BEGIN {m = 2^32} - /^0\.0\.0\.0[ \t]/ {if ($5 < m) {r = $2; m = $5}} - END {print r}'` + #RET=`route -n | awk 'BEGIN {m = 2^32} + # /^0\.0\.0\.0[ \t]/ {if ($5 < m) {r = $2; m = $5}} + # END {print r}'` + RET=`ip route | grep ^default | awk '{print $3}'` ;; *) echo "cp_get_ifdefault: Argument required (dev or addr)" >&2 @@ -111,6 +123,7 @@ cp_get_ifdefault() { } # by ico, Tue, 15 Mar 2005 14:04:21 +0100 +# modified by irako, Mon, 02 Jul 2018 21:46:29 +0200 cp_get_netaddr() { [ "$CP_SCRIPT_DEBUG" ] && set -vx @@ -127,7 +140,8 @@ cp_get_netaddr() { [ -z "$interface" ] && interface=lo fi - if ! ifconfig $interface 2> /dev/null >> /dev/null; then + #if ! ifconfig $interface 2> /dev/null >> /dev/null; then + if ! ip addr show $interface 2> /dev/null >> /dev/null; then echo "cp_get_netaddr: $interface: No such interface" 1>&2 CP_ECHO_RETURN="$echo_return" return 1 @@ -448,25 +462,27 @@ cp_get_ldap_suffix() { # but preserving initial state so it could be used afterwards CP_ECHO_RETURN="" - if [ ! -d /etc/ldap/slapd.d/ ]; then - echo "cp_get_ldap_suffix: /etc/ldap/slapd.d/: No such directory" >&2 + RET="" + + if [ -d /etc/ldap/slapd.d/ ]; then + RET="`grep -r olcSuffix: /etc/ldap/slapd.d/ | awk '{print $2}' | head -1`" + elif [ -f /etc/ldap/slapd.conf ]; then + RET="`awk '/^suffix/ { exit } + END { gsub(/"/, "", $2); print $2 }' \ + < /etc/ldap/slapd.conf`" + else + RET="" + echo "cp_get_ldap_suffix: /etc/ldap/slapd.{d/,conf}: No such file or directory" >&2 return 2 fi - - #RET="`awk '/^suffix/ { exit } - # END { gsub(/"/, "", $2); print $2 }' \ - # < /etc/ldap/slapd.conf`" - - RET="`grep -r olcSuffix /etc/ldap/slapd.d/|awk '{print $2}'`" if [ "`echo $RET | sed 's/,/ /g' | wc -w`" -gt 2 ]; then RET="" echo "cp_get_ldap_suffix: Invalid LDAP suffix in /etc/ldap/slapd.d/" >&2 return 2 fi - - [ -z "$RET" ] && echo "cp_get_ldap_suffix: No LDAP suffix in /etc/ldap/slapd.d/" >&2 + [ -z "$RET" ] && echo "cp_get_ldap_suffix: No LDAP suffix in /etc/ldap/slapd.{d/,conf}" >&2 [ -z "$echo_return" ] || echo $RET CP_ECHO_RETURN="$echo_return" } @@ -481,15 +497,17 @@ cp_get_ldap_realm() { # but preserving initial state so it could be used afterwards CP_ECHO_RETURN="" - if [ ! -f /etc/ldap/slapd.d/ ]; then - echo "cp_get_ldap_realm: /etc/ldap/slapd.d/: No such directory" >&2 + RET="" + + if [ ! -d /etc/ldap/slapd.d/ -a ! -f /etc/ldap/slapd.conf ]; then + echo "cp_get_ldap_realm: /etc/ldap/slapd.{d/,conf}: No such file or directory" >&2 return 2 fi - + cp_get_ldap_suffix || true RET="`echo $RET | awk -F, '{print $1}' | awk -F= '{print $2}'`" - [ -z "$RET" ] && echo "cp_get_ldap_realm: No LDAP REALM in /etc/ldap/slapd.d/" >&2 + [ -z "$RET" ] && echo "cp_get_ldap_realm: No LDAP REALM in /etc/ldap/slapd.{d/,conf}" >&2 [ -z "$echo_return" ] || echo $RET CP_ECHO_RETURN="$echo_return" }