Portál AbcLinuxu, 14. května 2025 01:39
#!/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
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 fiKdyž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
...
#!/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?
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..
# 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.