File: //usr/local/directadmin/scripts/startips
#!/bin/bash
# chkconfig: 2345 11 50
# description: Load ip's into the network device
### BEGIN INIT INFO
# Provides: startips
# Required-Start: $local_fs $network
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: startips
# Description: script to load in fresh IPs
### END INIT INFO
case "$1" in
stop)
exit 0
;;
esac
if command -v ip > /dev/null; then
if ! ip route show | grep -q "default"; then
echo "startips: default route not found - sleeping for 10s"
sleep 10
if ! ip route show | grep -q "default"; then
echo "startips: secondary attempt to find default route failed, no DirectAdmin additional IPs will be added"
exit 1
fi
fi
fi
DIRECTADMIN_HOME=/usr/local/directadmin
DIRECTADMIN_BIN="${DIRECTADMIN_HOME}/directadmin"
DIRECTADMIN_CONF="${DIRECTADMIN_HOME}/conf/directadmin.conf"
IPDIR="${DIRECTADMIN_HOME}/data/admin/ips"
IPLIST="${DIRECTADMIN_HOME}/data/admin/ip.list"
ADDIP=$("${DIRECTADMIN_BIN}" config | grep -m1 "^addip=" | cut -d= -f2)
if [ -z "${ADDIP}" ]; then
ADDIP="${DIRECTADMIN_HOME}/scripts/addip"
fi
if [ -s "${DIRECTADMIN_CONF}" ] && [ -x "${DIRECTADMIN_BIN}" ]; then
ETH_DEV=$(${DIRECTADMIN_BIN} config | grep "^ethernet_dev=" | cut -d= -f2)
if [ -z "${ETH_DEV}" ]; then
ETH_DEV=$(ip route show | awk '/^default/ && NR==1 {print $5}')
fi
fi
while read -r IP; do
NETMASK=$(grep -m1 "^netmask=" "${IPDIR}/${IP}" | cut -d= -f2);
if [ -z "${NETMASK}" ]; then
if echo "${IP}" | grep -q ':'; then
NETMASK=/64
else
NETMASK=255.255.255.0
fi
fi
"${ADDIP}" "${IP}" "${NETMASK}" "${ETH_DEV}" >/dev/null
done < "${IPLIST}"
echo "action=named&value=restart" >> "${DIRECTADMIN_HOME}/data/task.queue"
exit 0