Nefunguje. Zkuste si třeba jedno z těch rozhraní zastavit. Ve skutečnosti zastavíte všechno na eth0
To by mi asi nefungoval můj skriptík "samba harbík", který jsem napsal asi před 10 lety - část "server":
#!/bin/bash
#Tento spustitelny soubor se ma chovat jako daemon.
#Spousti se prikazem:
#nohup /cesta/cikl1server >&/dev/null&
#`nohup /cesta/cikl1server >/dev/null 2>&1&`
#Ukoncuje se prikazem:
#kill $(pgrep cikl1server) >/dev/null 2>&1
#Program na zalohovani dat potrebuje prava root pro programy
#ifconfig, /etc/rc.d/init.d/smb, ping a ip (balicek iproute)
#Upravi se soubor /etc/sudoers, aby vypadal takto:
#uzivatel jmenopc=bez_hesla: /prikaz
#karlik karlikp3=NOPASSWD: /usr/sbin/hibernate
#uzivatel vse=bez_hesla: /prikaz
#karlik1 ALL=NOPASSWD: /etc/rc.d/init.d/smb
#karlik1 ALL=NOPASSWD: /bin/ping
#karlik1 karlikp3=NOPASSWD: /sbin/ifconfig
#karlik1 karlikp3=NOPASSWD: /usr/bin/rsync
#karlik1 karlikp3=NOPASSWD: /sbin/ip
ipnet="192.168.5.0"
ipbcast="192.168.5.255"
ipgateway="192.168.5.254"
ipdnsserver="192.168.5.254"
ipserver="192.168.5.34"
ipsmbserver="192.168.5.33"
ethsmbserver="eth0:0"
mylog="/datalog_bin/kiss-heartbeat/logcikl"
#Pokud dojde k pokusu ukoncit skript pomoci kill, trap vola funkci skonci.
#Skript se tedy ukonci az po pruchodu cele smycky.
#Na konci smycky je umisteno:
#[ "$prerus" == "ano" ] && exit 1
# Number SIG Meaning
# 0 0 On exit from shell
# 1 SIGHUP Clean tidyup
# 2 SIGINT Interrupt
# 3 SIGQUIT Quit
# 6 SIGABRT Abort
# 9 SIGKILL Die Now (cannot be trap'ped)
# 14 SIGALRM Alarm Clock
# 15 SIGTERM Terminate
#Poznamka - signal kill -9 (kill -SIGKILL) je nezachytitelny a ukoncuje proces "natvrdo".
trap 'skonci' 1 2 3 6 15
prerus="ne"
function skonci {
prerus="ano"
}
#############################################################################
#Zacatek cyklu
#############################################################################
for ((;)
do
#Nedavat tento radek na jine misto. Zacykleni zaruceno, funguje poze SIGKILL (kill -9)
#Nedavat tento radek na jine misto. Zacykleni zaruceno, funguje poze SIGKILL (kill -9)
if [ "$prerus" = "ano" ]
then
caskonec=`date +"%Y%m%d%H%M"`
echo "$caskonec Program ukoncen. Ukoncuji Sambu na ipsmbserver. Odpojuji eth0:0 " >>"$mylog"
/etc/rc.d/init.d/smb stop >/dev/null 2>&1
#Clear ARP Cache
#Flush all arp enties on interface eth0:0
ip neigh flush dev "$ethsmbserver"
#Flush arp entry for all hosts in network 192.168.5.0/24
ip neigh flush "$ipnet" >/dev/null 2>&1
#Flush all arp entries:
#ip neigh flush all
ifconfig "$ethsmbserver" down >/dev/null 2>&1
exit 1
fi
sleep 60
cas2=`date +"%Y%m%d%H%M"`
#Pokud nejede ethernet, preskoc na konec skriptu (pred done)
#if ! ping "$ipserver" -c 2 -W3 >/dev/null 2>&1
# then
# echo "$cas2 Sit nejede." >>"$mylog"
# continue
#fi
#Pokud nejede ethernet, preskoc na konec skriptu (pred done)
if [ "$(cat /sys/class/net/eth0/carrier)" = "0" ]
then
echo "$cas2 Sit nejede." >>"$mylog"
continue
fi
pgrep smbd >/dev/null 2>&1
clientsmbd=$?
#clientsmb="$?"
#clientsmb=$(($?))
smbclient -N -L "$ipsmbserver" >/dev/null 2>&1
#smbclient -U% -L "$ipsmbserver" >/dev/null 2>&1
serversmbd=$?
#pokud smb na PC nejede a smb na ipsmbserver nejede a ethernet jede, spust smb na ipsmbserver
if [ "$clientsmbd" = "1" ] && [ "$serversmbd" = "1" ] && [ "$(cat /sys/class/net/eth0/carrier)" = "1" ]
then
echo "$cas2 Samba na PC nejede a ipsmbserver nejede. Spoustim Sambu na ipsmbserver." >>"$mylog"
/sbin/ifconfig "$ethsmbserver" "$ipsmbserver"
/sbin/ifconfig "$ethsmbserver" up
#Clear ARP Cache
#Flush all arp enties on interface eth0:0
ip neigh flush dev "$ethsmbserver"
#Flush arp entry for all hosts in network 192.168.5.0/24
ip neigh flush "$ipnet"
#Flush all arp entries:
#ip neigh flush all
#Ping the gateways and DNS to clear the ARP cache
ping -c 2 -w 3 -I "$ipsmbserver" "$ipdnsserver"
ping -c 2 -w 3 -I "$ipsmbserver" "$ipgateway"
#Ping the external broadcast addres to clear the ARP cache
ping -c 2 -b -w 3 -I "$ipsmbserver" "$ipbcast"
/etc/rc.d/init.d/smb start
fi
#pokud smbd na PC jede a smbd na ipsmbserver nejede, ukonci smb na PC
#(Spustena Samba, na chvili odpojen ethernetovy kabel)
if [ "$clientsmbd" = "0" ] && [ "$serversmbd" = "1" ]
then
echo "$cas2 Samba na PC jede a serversmbd nejede. Ukoncuji Sambu na ipsmbserver." >>"$mylog"
/etc/rc.d/init.d/smb stop >/dev/null
#Clear ARP Cache
#Flush all arp enties on interface eth0:0
ip neigh flush dev "$ethsmbserver"
#Flush arp entry for all hosts in network 192.168.5.0/24
ip neigh flush "$ipnet"
#Flush all arp entries:
#ip neigh flush all
/sbin/ifconfig "$ethsmbserver" down
fi
done
A ano, mělo by se používat
ip. Ovšem co se týče dokumentace
ip, je to tragické...