Odp: Czasowy limit korzystania z internetu.
"następnie wykonuję skrypty w cronie" też bez #
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
eko.one.pl → Oprogramowanie / Software → Czasowy limit korzystania z internetu.
Strony Poprzednia 1 2 3
Zaloguj się lub zarejestruj by napisać odpowiedź
"następnie wykonuję skrypty w cronie" też bez #
to już wiem ,ale muszę wywołać crona najpierw uruchomić czyli
# /etc/init.d/cron enable
# /etc/init.d/cron start
później wywołać znowu edytor crona
# crontab -e
dodać te skrypty
# echo "*/1 * * * * /usr/bin/timequotas.sh" >> /etc/crontabs/root
# /etc/init.d/cron restart
i
# echo "0 0 * * * echo 0 > /tmp/timequota-01:02:03:04:05:06; iptables -D FORWARD -m mac --mac-source 01:02:03:04:05:06 -j REJECT" >> /etc/crontabs/root
# /etc/init.d/cron restart
i Voilà -chyba teraz to rozumiem i jakoś przebrnąłem przez to wszystko zobaczymy co z tego wyjdzie.
Dzięki za pomoc Cezary że cię jeszcze jakaś agencja rządowa nie zatrudniła:)
A może ty już tam robisz.
Nie. Napisał bym że masz wykonać crontab -e gdyby była potrzeba, a nie napisałem tego. Masz wykonać tylko
echo "*/1 * * * * /usr/bin/timequotas.sh" >> /etc/crontabs/root
echo "0 0 * * * echo 0 > /tmp/timequota-01:02:03:04:05:06; iptables -D FORWARD -m mac --mac-source 01:02:03:04:05:06 -j REJECT" >> /etc/crontabs/root
/etc/init.d/cron restart
A nie przez crontab -e
Fajnie by było mieć to pod Gargoyle tak jak mamy Harmonogram WiFi
Witam
Napisałem skrypt tak jak jest na stronie zmieniając dane na swoje i nie chce działać. Dlaczego?
Mój skrypt wygląda tak:
#!/bin/sh
DEVICES="00:00:00:00:0:00"
LIMIT=2
F=/tmp/czas-$DEVICES
if [ -e $F ]; then
USEDTIME=$(cat $F)
else
USEDTIME=0
fi
T=$(iw dev wlan0 station dump | grep -A 1 $DEVICES | awk '/inactive time/{print $3}')
[ -z "$T" ] && exit 0
if [ $T -lt 6000 ]; then
USEDTIME=$((USEDTIME + 1))
echo $USEDTIME > $F
fi
if [ $USEDTIME > $LIMIT ]; then
iptables -C FORWARD -m mac --mac-source $DEVICES -j REJECT || \
iptables -I FORWARD -m mac --mac source $DEVICES -j REJECT
fi
exit 0
oczywiście później robię wpis w cronie według poradnika.
Czy może mieć znaczenie starsza wersja openwrt?
Gargoyle PL 1.6.2.2 (b70bfc1) |
| OpenWrt Attitude Adjustment 12.09.1 (r42647) |
| Build time: 2014-09-27 10:11 CEST
Tak, może mieć znaczenie. iw nie miało chyba w tamtych czasach inactive time, więc to zigoruj. Wykonal polecenia ręcznie i zobacz.
Ok skrypt działa.
Po ręcznym wpisaniu:
iw dev wlan0 station dump | grep -A 1 $DEVICES | awk '/inactive time/{print $3}'
wyświetla np: 23400
błąd był tu:
iptables -C FORWARD -m mac --mac-source $DEVICES -j REJECT || \
iptables -I FORWARD -m mac --mac source $DEVICES -j REJECT
po wywaleniu pierwszej linii i zostawieniu drugiej działa.
Jednak zauważyłem inny problem. Mimo odłożenia telefonu i pozostawienia nieużywanego i tak zostaje zablokowany.
To znaczy że telefon jest cały czas podłączony - ustaw w nim żeby się odłączał od wifi jak nie jest używany.
PS. Pozbywając się pierwszej linii spowodowałeś że w firewallu co minutę będzie tworzona nowa regułka i zawalisz cały system. Nie tak to ma działać.
Tylko po co odłączać telefon od wifi? To bez sensu.
Tylko jak zostawię pierwszą linię to wywala:
iptables v1.4.10: option `-C' requires an argument
Try `iptables -h' or 'iptables --help' for more information.
Wykonaj
iptables -C FORWARD -m mac --mac-source 01:02:03:04:05:06 -j REJECT
Działa?
Nie. Ten sam błąd
root@Gargoyle:~# iptables -C FORWARD -m mac --mac-source 00:00:00:00:00:00 -j REJECT
iptables v1.4.10: option `-C' requires an argument
Try `iptables -h' or 'iptables --help' for more information.
root@Gargoyle:~#
pokaż iptables -h
root@Gargoyle:~# iptables -h
iptables v1.4.10
Usage: iptables -[AD] chain rule-specification [options]
iptables -I chain [rulenum] rule-specification [options]
iptables -R chain rulenum rule-specification [options]
iptables -D chain rulenum [options]
iptables -[LS] [chain [rulenum]] [options]
iptables -[FZ] [chain] [options]
iptables -[NX] chain
iptables -E old-chain-name new-chain-name
iptables -P chain target [options]
iptables -h (print this help information)
Commands:
Either long or short options are allowed.
--append -A chain Append to chain
--delete -D chain Delete matching rule from chain
--delete -D chain rulenum
Delete rule rulenum (1 = first) from chain
--insert -I chain [rulenum]
Insert in chain as rulenum (default 1=first)
--replace -R chain rulenum
Replace rule rulenum (1 = first) in chain
--list -L [chain [rulenum]]
List the rules in a chain or all chains
--list-rules -S [chain [rulenum]]
Print the rules in a chain or all chains
--flush -F [chain] Delete all rules in chain or all chains
--zero -Z [chain [rulenum]]
Zero counters in chain or all chains
--new -N chain Create a new user-defined chain
--delete-chain
-X [chain] Delete a user-defined chain
--policy -P chain target
Change policy on chain to target
--rename-chain
-E old-chain new-chain
Change chain name, (moving any references)
Options:
[!] --proto -p proto protocol: by number or name, eg. `tcp'
[!] --source -s address[/mask][...]
source specification
[!] --destination -d address[/mask][...]
destination specification
[!] --in-interface -i input name[+]
network interface name ([+] for wildcard)
--jump -j target
target for rule (may load target extension)
--goto -g chain
jump to chain with no return
--match -m match
extended match (may load extension)
--numeric -n numeric output of addresses and ports
[!] --out-interface -o output name[+]
network interface name ([+] for wildcard)
--table -t table table to manipulate (default: `filter')
--verbose -v verbose mode
--line-numbers print line numbers when listing
--exact -x expand numbers (display exact values)
[!] --fragment -f match second or further fragments only
--modprobe=<command> try to insert modules using this command
--set-counters PKTS BYTES set the counter during insert/append
[!] --version -V print package version.
Ta wersja iptables po prostu nie ma tej opcji. Więc nie, nie w ten sposób tego nie zrobisz. Możesz na chama kasować regułę i ją tworzyć lub listować reguły i jak jej nie ma to dodawać. Pozostawienie bez mechanizmu tej pierwszej linii mija się z celem.
Co się trzyma przy tak starym gargoyle?
Ech kiedyś go uruchomiłem na routerku i działał dobrze więc dałem mu spokój ![]()
A teraz znalazłem ten skrypt i chciałem po testować.
Chyba jutro zrobię aktualizacje do jakiejś nowszej wersji.
Dzięki za pomoc.
Edit:
Ok aktualizacja zrobiona:
Gargoyle PL 1.11.0.3 (94099aa9) |
| OpenWrt 18.06-SNAPSHOT, r7790-2999c342aa
Wszystko działa tylko telefon cały czas podtrzymuje połączenie tzn inactive time dochodzi do 30000ms i zostaje wyzerowany przez telefon przez co i tak zostaje on zablokowany.
A jak by wyciągnąć jakąś średnią z rx bytes. Tzn gdy telefon jest nieużywany to pewnie pobiera niewielka ilość danych a gdy ktoś go używa to ilość danych wzrasta więc powyżej ustalonej średniej router rozróżniał by że telefon jest w użyciu i naliczał czas.
Strony Poprzednia 1 2 3
Zaloguj się lub zarejestruj by napisać odpowiedź
eko.one.pl → Oprogramowanie / Software → Czasowy limit korzystania z internetu.
Forum oparte o PunBB, wspierane przez Informer Technologies, Inc