Files
tuend-work 0b28a76e20 ud
2025-11-12 23:24:15 +07:00

73 lines
1.8 KiB
Bash

#!/bin/bash
OS=`uname`
#remove the active ip from eth0:#
if [ "${OS}" = "FreeBSD" ]; then
ETH_DEV=dc0
else
ETH_DEV=eth0
fi
DACONF=/usr/local/directadmin/conf/directadmin.conf
if [ -s ${DACONF} ]; then
if grep -m1 -q '^ethernet_dev=' ${DACONF}; then
ETH_DEV=`grep -m1 '^ethernet_dev=' ${DACONF} | cut -d= -f2 | cut -d: -f1`
fi
fi
# we need the ip to delete
if [ $# -ne "1" ] && [ $# -ne "2" ]; then
echo "Usage: $0 <ip> (<condensed_ipv6>)";
exit 1;
fi
if [ "${OS}" = "FreeBSD" ]; then
if /sbin/ifconfig | grep -m1 -q " $1 "; then
/sbin/ifconfig $ETH_DEV inet $1 -alias
fi
else
if ip a | grep -m1 -q " $1/"; then
#"ip" accepts IPs without netmasks, but shows a warning that the feature might not be avail in the future, this we delete IP with its mask
IP_TO_REMOVE="`ip a | grep -m1 -o \" ${1}/[0-9]*\" | awk '{print $1}'`"
ip addr del ${IP_TO_REMOVE} dev ${ETH_DEV}
if [ "$?" -ne 0 ] && ip a | grep -m1 -q " $1/"; then
#old code, should not be needed anymore, but we fallback to it if IP is still there
IP=$1
IPv6=0
if [ $# -eq "2" ] && [ "$2" != "" ]; then
IP=$2
/sbin/ifconfig $ETH_DEV del $IP/64
IPv6=1
fi
#for each eth0:#, if ifconfig eth0:# has $1 (the ip) delete eth0:#
for i in `/sbin/ifconfig | grep $ETH_DEV: | cut -d\ -f1 | cut -d: -f1,2`; do
{
NUMIP=`/sbin/ifconfig $i | grep -c "${IP} "`;
if [ $NUMIP -gt "0" ];
then
{
#we found the interface with the ip
COLCOUNT=`echo $i | grep -c :`
if [ "${COLCOUNT}" -gt 0 ] && [ -e /etc/debian_version ] && [ "${IPv6}" -eq 0 ]; then
/sbin/ifconfig $i down
else
/sbin/ifconfig $i del $IP #remove from the interface
fi
#it appears as though the ip is automatically removed from `route`
exit 0
}
fi
};
done
fi
fi
fi
exit 0
#can't find it, it must be gone