Portál AbcLinuxu, 1. listopadu 2025 12:56
#!/bin/sh if ! iwinfo wlan0 assoclist | grep -q A0:86; then echo "Wifi klient není připojen"; exit 0 fi if iwinfo wlan0 assoclist | grep -q A0:86; then echo "Wifi klient je připojen!"; exit 0 fia funguje to (jen pak nějak doladit to, co to má dělat. Asi změna iptables??). Ale musel bych to hodit do cronu a pouštět každých x minut. Byl bych ale radši, kdyby to fungovalo víc "online", tzn. ve chvíli, kdy se zařízení opravdu připojí. Šlo by to nějak?
iptables v1.4.21: Couldn't load match `iprange':No such file or directory
iptables -A INPUT -s 10.0.14.5 -d 10.0.11.0/24 -m comment --comment "DENY Access rule" -j DROP
iptables -D INPUT -s 10.0.14.5 -d 10.0.11.0/24 -m comment --comment "DENY Access rule" -j DROP
iptables -A INPUT -s 10.0.14.6 -d 10.0.11.0/24 -m comment --comment "DENY Access rule" -j DROP
iptables -D INPUT -s 10.0.14.6 -d 10.0.11.0/24 -m comment --comment "DENY Access rule" -j DROP
atd. i pro forward
Whenever a new DHCP lease is created, or an old one destroyed, or a TFTP file transfer completes, the executable specified by this option is run.a na zaklade MAC generoval pravidla pro firewall.
echo 'dhcp-script=/sbin/action.sh' > /etc/dnsmasq.conf chmod 755 /sbin/action.sh
 24.2.2016 11:20
pavlix             | skóre: 54
             | blog: pavlix
        24.2.2016 11:20
pavlix             | skóre: 54
             | blog: pavlix
            
        echo 'dhcp-script=/sbin/action.sh' > /etc/dnsmasq.confTo se mi nezdá jako dobré instrukce. Co když tam už nějakou konfiguraci má. Podle wiki se ten soubor používá společně s
/etc/config/dhcp, takže to rozhodně není vyloučené.
            iptables -I FORWARD -s 10.0.14.9 -d 10.0.10.0/24 -m comment --comment "DENY Access rule" -j DROPOdřízne i navázané spojení, což je perfektní výsledek:) Skript budu zatím pouštět cronem v 10ti minutových intervalech (než vymyslím něco lepšího - viz. např. návrh od NN).
#!/bin/sh if ! iwinfo wlan0 assoclist | grep -q A0:86; then iptables -I FORWARD -s 10.0.14.9 -d 10.0.10.0/24 -m comment --comment "DENY Access rule" -j DROP ; exit 0 fi if iwinfo wlan0 assoclist | grep -q A0:86; then iptables -D FORWARD -s 10.0.14.9 -d 10.0.10.0/24 -m comment --comment "DENY Access rule" -j DROP; exit 0 fiJenže teď si pro změnu nevím rady, jak nascriptovat, aby pravidlo přidával jen v případě, že už existuje, nebo ho neodebíral v případě, že neexistuje. To ale asi bude už jen prkotina,ne? Nebo je ještě něco, co bych měl upravit nebo ošetřit? Moc díky všem.
#!/bin/sh
# není připojeno
# if ! arp -a | grep -q A0:86 ; then
if ! iwinfo wlan0 assoclist | grep -q A0:86 ; then
# odebere pravidlo pokud existuje
   if iptables -L | grep -q k_vrata ; then
      iptables -D FORWARD -s 10.0.14.9 -d 10.0.10.0/24 -m comment --comment "DENY k_vrata" -j DROP ;
   fi
 exit 0
fi
# je připojeno
# if arp -a | grep -q A0:86 ; then
if iwinfo wlan0 assoclist | grep -q A0:86 ; then
# přidá pravidlo pokud neexistuje
  if ! iptables -L | grep -q k_vrata ; then
     iptables -I FORWARD -s 10.0.14.9 -d 10.0.10.0/24 -m comment --comment "DENY k_vrata" -j DROP ;
  fi
 exit 0
fi
Kdyžtak mi to případně zkoukněte, jestli by to nešlo nějak doladit. Díky.
            if výstup z arp -a obsahuje adresu v /tmp/wifimaclist ; then ... 
             25.2.2016 15:28
k3dAR             | skóre: 63
        25.2.2016 15:28
k3dAR             | skóre: 63
            
            
        #!/bin/sh
cokdyz(){
    ( ! iwinfo wlan0 assoclist | grep -q ${1} && iptables -L | grep -q k_vrata ) && nastav D
    ( iwinfo wlan0 assoclist | grep -q ${1} && ! iptables -L | grep -q k_vrata ) && nastav I
}
nastav(){
     iptables -${1} FORWARD -s 10.0.14.9 -d 10.0.10.0/24 -m comment --comment "DENY k_vrata" -j DROP ;
}
while read mac; do cokdyz $mac; done < soubor_s_mac.txt
            Použití: grep [PŘEPÍNAČ]… VZOREK [SOUBOR]… Více informací získáte příkazem „grep --help“. Použití: grep [PŘEPÍNAČ]… VZOREK [SOUBOR]… Více informací získáte příkazem „grep --help“.
( ! iwinfo wlan0 assoclist | grep -q $mac && iptables -L | grep -q k_vrata ) && nastav Dnebo tak nějak?
 25.2.2016 22:47
k3dAR             | skóre: 63
        25.2.2016 22:47
k3dAR             | skóre: 63
            
            
        while read mac; do [ $mac ] && cokdyz $mac; done < soubor_s_mac.txt
grep -qf soubor.txt a mac adresy jsou tam uvedeny v řádcích
            iptables-mod-iprange a pokud mě nevytrestá ta arp tabulka, mám SNAD hotovo:)
#!/bin/sh
# není připojeno
if ! arp -a | grep -qf mac_stop_list.txt ; then
#if ! iwinfo wlan0 assoclist | grep -qf mac_stop_list.txt ; then
# odebere pravidlo pokud existuje
   if iptables -L | grep -q kamery ; then
      iptables -D FORWARD -m iprange --src-range 10.0.14.5-10.0.14.10 -d 10.0.10.0/24 -m comment --comment "kamery" -j DROP ;
   fi
 exit 0
fi
# je připojeno
if arp -a | grep -qf mac_stop_list.txt ; then
#if iwinfo wlan0 assoclist | grep -qf mac_stop_list.txt ; then
# přidá pravidlo pokud neexistuje
  if ! iptables -L | grep -q kamery ; then
     iptables -I FORWARD -m iprange --src-range 10.0.14.5-10.0.14.10 -d 10.0.10.0/24 -m comment --comment "kamery" -j DROP ;
  fi
 exit 0
fi
            # ./wifi_cam_stop.sh ./wifi_cam_stop.sh: line 16: arp: not foundNa Debianu to funguje bez problému...
sh protože nezná příkaz arp
:~# arp
IP address       HW type     Flags       HW address            Mask     Device
10.0.14.102      0x1         0x2         b0:d5:9e:24:d9:3c     *        br-lan
10.0.11.1        0x1         0x2         5d:92:e2:6f:e6:a7     *        tap0
10.0.14.101      0x1         0x2         01:18:80:8e:32:d6     *        br-lan
:~# sh
BusyBox v1.23.2 (2015-07-25 15:09:46 CEST) built-in shell (ash)
:~# arp
sh: arp: not found
            cat /proc/net/arp | grep -qf mac_stop_list.txt a funguje to.. ale stejně bych byl rád, kdyby uměl sh všechny příkazy..
             28.2.2016 17:35
k3dAR             | skóre: 63
        28.2.2016 17:35
k3dAR             | skóre: 63
            
            
         
            # cat /tmp/dhcp.leases 1458015833 d8:50:e6:21:3d:6b 10.0.14.101 android-1dc942007bfac226 * 1458018603 00:18:60:8b:32:d6 10.0.14.128 android-55146582cc2331ef * 1458013503 78:52:1a:2c:19:f2 10.0.14.112 android-fa506e6f6b861c54 01:78:52:1a:2c:19:f2
ip neigh add 192.168.1.12 lladdr 00:26:18:f3:96:60 nud permanent dev br-lana potom zůstane v ARP tabulce ten záznam napořád do vypnutí. A do /etc/config/dhcp dodáš:
config host option name 'htpc' option mac '00:26:18:f3:96:60' option ip '192.168.1.12' config domain option name 'htpc' option ip '192.168.1.12'
#!/bin/sh while [ 1 ] do for i in `cat /tmp/dhcp.leases | cut -d ' ' -f 3` do ping -c 1 -W 1 $i done sleep 5 done
        Tiskni
            
                Sdílej:
                 
                 
                 
                 
                 
                 
            
    
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.