Portál AbcLinuxu, 7. listopadu 2025 00:18
MAC="1 2 3 4 5"
IP="5 4 3 2 1"
for x in ${MAC};
do
iptables -A blokuj -m mac --mac-source ${x} -s ${IP} -i eth1 -j ACCEPT"
done
Takhle to samozrejme nefunguje. Zkousel sem uz toho hodne, ale nic nevedlo k cili. Porad se mi nedari zajistit, aby se v cyklu provadely obe promenne. Takhle to nepujde, to je mi jasne. Mohl by mi nekdo poradit? Dekuji
#!/bin/bash
while read MAC IP; do
iptables -A blokuj -m mac --mac-source ${MAC} -s ${IP} -i eth1 -j ACCEPT
done <<EOF
MAC1 IP1
MAC2 IP2
MAC3 IP3
.
.
.
EOF
a jinak - man bash, /<<[ENTER]
list=(MAC=IP MAC=IP MAC=IP ...)a parsovat položky mac=${prvek%=*}, ip=${prvek#*=}.
mac=(1 2 3 4 5)
ip=(5 4 3 2 1)
for ((i=0; i<${#mac[*]}; i++)); do echo ${ip[i]} ${mac[i]}; done
Detaily viz v bash(1), sekce Arrays, a v seriálu o bashi, který tu vyšel.
man bash. :o)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.