skrypt sterujacy LED
|
mescator |
Dodano 17-02-2007 20:54
|
Super User
Posty: 430
Dołączył: 27/09/2006 18:10
|
witam,
chce napisac skrypt ktory zaleznie od aktualnego obciazenia wysteruje diode LED rutera. zgaszona/pomaranczowa/pomarancz+biala/biala. czynnikiem decydujacym ma tu byc chwilowa lub usrednia wartosc download w okresie iles-sekundowym.
zacialem sie na rzeczy podstawowej..... jak wyciagnac wartosc downloadu (obciazanie interfejsu WAN).
specow prosze o pomoc.
---
Asus RT-16N 1.28.0000 MIPSR2-101 K26 USB VPN
WRT54Gv3.1/ 1.28.0005 099V ND VPN
|
|
|
|
obsy |
Dodano 17-02-2007 21:53
|
VIP
Posty: 5775
Dołączył: 31/10/2006 20:06
|
http://www.openlinksys.info/readarticle.php?article_id=9 ?
|
|
|
|
reaper7 |
Dodano 17-02-2007 22:34
|
User
Posty: 148
Dołączył: 26/12/2006 15:41
|
lub tak:
#!/bin/sh
DELAY=1
HIGHLOAD="51200"
MEDLOAD="30720"
LOWLOAD="10240"
utest=0
#============================
while sleep $DELAY; do
load_old=$(cat /proc/net/dev | grep vlan1 | cut -b 8-15 | tr -d " ")
uload_old=$(cat /proc/net/dev | grep vlan1 | cut -b 68-75 | tr -d " ")
sleep 1
load_new=$(cat /proc/net/dev | grep vlan1 | cut -b 8-15 | tr -d " ")
uload_new=$(cat /proc/net/dev | grep vlan1 | cut -b 68-75 | tr -d " ")
load=$(expr '(' $load_new '-' $load_old ')' )
uload=$(expr '(' $uload_new '-' $uload_old ')' )
#============================
if [ "$uload" -gt "$load" ] then
if [ "$utest" -gt 59 ] then
utest=60
else
utest=$(expr '(' $utest '+' 1 ')' )
fi
else
if [ "$utest" -eq 0 ] then
utest=0
else
if [ "$utest" -gt 5 ] then
utest=$(expr '(' $utest '-' 5 ')' )
else
utest=$(expr '(' $utest '-' 1 ')' )
fi
fi
fi
#============================
if [ "$utest" -ge 0 -a "$utest" -le 30 ] then
led dmz off
led diag off
else
if [ "$utest" -gt 30 -a "$utest" -le 59 ] then
led dmz on
led diag off
else
led dmz on
led diag on
fi
fi
#============================
if [ "$load" -gt "$HIGHLOAD" ] then
led am off
led wh on
else
if [ "$load" -gt "$MEDLOAD" ] then
led am on
led wh on
elif [ "$load" -gt "$LOWLOAD" ] then
led wh off
led am on
else
led wh off
led am off
fi
fi
#============================
done
skrypt dodatkowo informuje o przewadze ruchu UP nad DOWNLOADEM
za pomocą diody DMZ jeśli taki stan utrzymuje się powyżej 30 sekund do 1 minuty a następnie (powyżej minuty) miga także dioda POWER
Ot taki mały kolorofonik :)
=====================
ASUS 500gP+Kamikaze
IPBOX9000HD+STLinux(sh4)
w razie co Compaq+FreeBSD 6.2
=====================
|
|
|
|
mescator |
Dodano 18-02-2007 12:06
|
Super User
Posty: 430
Dołączył: 27/09/2006 18:10
|
@reaper7, a gdzie ten skrypt umiesciles?
w osobnym pliku na partycji jffs czy wy-echo-wales go do jakiegos pliku w ram i odpaliles skryptem firewalla?
sprawdzilem ten skrypt i nie dziala.....
formatowanie pliku /proc/net/dev jest niedokladne i jak ruter dlugo zyje, to wartosci wychodza poza kolumny, Twoje cut -b 8-15 wtedy nie dziala, u mnie przycina wartosci o dwie cyfry z prawej.
Edytowany przez mescator dnia 18-02-2007 14:32
---
Asus RT-16N 1.28.0000 MIPSR2-101 K26 USB VPN
WRT54Gv3.1/ 1.28.0005 099V ND VPN
|
|
|
|
qwerty01 |
Dodano 18-02-2007 14:55
|
User
Posty: 190
Dołączył: 27/07/2006 20:03
|
HIGHLOAD="51200"
MEDLOAD="30720"
LOWLOAD="10240"
Te wartości pdane są w jakich jednostkach?
Chcę, żeby paliło się na pomarańczowo przy >1,5 Mbps
żółto-biało pomiędzy 1-1,5 Mbps
biało 0,5-1 Mbps. (oczywiście przy pobieraniu) Jakie wartości mam wpisać ? |
|
|
|
reaper7 |
Dodano 18-02-2007 16:17
|
User
Posty: 148
Dołączył: 26/12/2006 15:41
|
skrypt jest umieszczony jako sh w jffs a odpalany w skrypcie init
masz rację że może się wysypać przy długim działaniu, na razie nie miałem takiego problemu bo router nie chodzi cały czas a przy moim łączu 512 działa jak należy
wartości to bajty na sekundę.
=====================
ASUS 500gP+Kamikaze
IPBOX9000HD+STLinux(sh4)
w razie co Compaq+FreeBSD 6.2
=====================
|
|
|
|
qwerty01 |
Dodano 18-02-2007 16:47
|
User
Posty: 190
Dołączył: 27/07/2006 20:03
|
Cytat reaper7 napisał/a:
skrypt jest umieszczony jako sh w jffs a odpalany w skrypcie init
masz rację że może się wysypać przy długim działaniu, na razie nie miałem takiego problemu bo router nie chodzi cały czas a przy moim łączu 512 działa jak należy :)
wartości to bajty na sekundę.
To chyba powineneś dać wartości x10. :P Masz tam wpisane 51,200 bitów,a nie 512,000 bitów
ln -s /jffs/tomato_skin /var/wwwext
#!/bin/sh
DELAY=1
HIGHLOAD="150000"
MEDLOAD="100000"
LOWLOAD="51200"
utest=0
#============================
while sleep $DELAY; do
load_old=$(cat /proc/net/dev | grep vlan1 | cut -b 8-15 | tr -d " ")
uload_old=$(cat /proc/net/dev | grep vlan1 | cut -b 68-75 | tr -d " ")
sleep 1
load_new=$(cat /proc/net/dev | grep vlan1 | cut -b 8-15 | tr -d " ")
uload_new=$(cat /proc/net/dev | grep vlan1 | cut -b 68-75 | tr -d " ")
load=$(expr '(' $load_new '-' $load_old ')' )
uload=$(expr '(' $uload_new '-' $uload_old ')' )
#============================
if [ "$uload" -gt "$load" ] then
if [ "$utest" -gt 59 ] then
utest=60
else
utest=$(expr '(' $utest '+' 1 ')' )
fi
else
if [ "$utest" -eq 0 ] then
utest=0
else
if [ "$utest" -gt 5 ] then
utest=$(expr '(' $utest '-' 5 ')' )
else
utest=$(expr '(' $utest '-' 1 ')' )
fi
fi
fi
#============================
if [ "$utest" -ge 0 -a "$utest" -le 30 ] then
led dmz off
led diag off
else
if [ "$utest" -gt 30 -a "$utest" -le 59 ] then
led dmz on
led diag off
else
led dmz on
led diag on
fi
fi
#============================
if [ "$load" -gt "$HIGHLOAD" ] then
led am on
led wh of
else
if [ "$load" -gt "$MEDLOAD" ] then
led am on
led wh on
elif [ "$load" -gt "$LOWLOAD" ] then
led wh on
led am off
else
led wh off
led am off
fi
fi
#============================
done
U mnie pomarańczowy zapala się przy 80 KB/s a powinien przy 185 KB/s
Edytowany przez qwerty01 dnia 18-02-2007 16:54
|
|
|
|
mescator |
Dodano 18-02-2007 17:51
|
Super User
Posty: 430
Dołączył: 27/09/2006 18:10
|
no wartosci sa w bajtach na sekunde,
zrobilem taka przerobke (poczatek):
#!/bin/sh
# put bandwidth values expressed in bytes per second
DELAY=5
HIGHLOAD="100000"
MEDLOAD="50000"
LOWLOAD="20000"
utest=0
#============================
while : ; do
cat /proc/net/dev | grep vlan1 > /tmp/var/vlan1.old.1
sleep $DELAY
cat /proc/net/dev | grep vlan1 > /tmp/var/vlan1.new.1
rm /tmp/var/vlan1.old
rm /tmp/var/vlan1.new
for item in `sed 's/:/ /g' /tmp/var/vlan1.old.1`; do echo $item >> /tmp/var/vlan1.old; done
for item in `sed 's/:/ /g' /tmp/var/vlan1.new.1`; do echo $item >> /tmp/var/vlan1.new; done
load_old=$(sed -e '1d' -e '3,17d' /tmp/var/vlan1.old)
load_new=$(sed -e '1d' -e '3,17d' /tmp/var/vlan1.new)
uload_old=$(sed -e '1,9d' -e '11,17d' /tmp/var/vlan1.old)
uload_new=$(sed -e '1,9d' -e '11,17d' /tmp/var/vlan1.new)
echo $load_old - $load_new
load=$(expr '(' $load_new '-' $load_old ')' / $DELAY )
uload=$(expr '(' $uload_new '-' $uload_old ')' / $DELAY )
echo down:$load, up:$uload
usrednia to wartosci upload/download w czasie 5 sekund no i eliminuje problem rozjechanych kolumn w /proc/net/dev
nie do konca jeszcze rozumiem uzycie diody DMZ, musze sie przyjrzec co autor mial na mysli.
na razie to chyba niechcacy rozciagnalem os czasu testu tego upload..
Edytowany przez mescator dnia 18-02-2007 18:04
---
Asus RT-16N 1.28.0000 MIPSR2-101 K26 USB VPN
WRT54Gv3.1/ 1.28.0005 099V ND VPN
|
|
|
|
reaper7 |
Dodano 18-02-2007 19:18
|
User
Posty: 148
Dołączył: 26/12/2006 15:41
|
@mescator - dmz i power tak jak już pisałem informują (dwustopniowo) o tym że więcej wysyłam niż ssam mój isp bardzo tego nie lubi - tępi wszelkich emularzy więc jak coś zasysam na p2p i zaczyna się sytuacja że nic lub mało zasysam a wszyscy ode mnie ciągną to jeśli UP>DOWN przez 30 sekund = LED DMZ ON, następnie jeśli taki stan rzeczy utrzymuje się dalej i trwa > 1 minutę to dodatkowo miga dioda POWER
=====================
ASUS 500gP+Kamikaze
IPBOX9000HD+STLinux(sh4)
w razie co Compaq+FreeBSD 6.2
=====================
|
|
|
|
mescator |
Dodano 18-02-2007 19:21
|
Super User
Posty: 430
Dołączył: 27/09/2006 18:10
|
tak, dzieki, rozpracowalem juz te zawiłą logike ;-)
meczyla mnie ta histereza... -5 / -1
tak czy inaczej przerobilem na swoje, bo mam łącze niesymetryczne i raczej sprawdzanie czy upload > download srednio mnie interesuje, zrobilem tylko tyle, ze sie swieci jak upload przekracza jakas wartosc.
dzieki za natchnienie ;-)
---
Asus RT-16N 1.28.0000 MIPSR2-101 K26 USB VPN
WRT54Gv3.1/ 1.28.0005 099V ND VPN
|
|
|
|
maciuso |
Dodano 19-02-2007 10:01
|
User
Posty: 57
Dołączył: 09/07/2006 21:18
|
A u mnie sie jakis dziwy dzieją, wrzuciłem skrypcik, zrobiłem restart i skrypt zaczoł działac ale krótko, bo po ok 6-10h przestał działać. co moze byc powodem?? |
|
|
|
reaper7 |
Dodano 19-02-2007 10:27
|
User
Posty: 148
Dołączył: 26/12/2006 15:41
|
@maciuso - no przecie mescator pisał o tym że mój skrypt wywali się w końcu - zastosuj jego skrypt.
Poza tym-mój skrypt nie jest jakimś gotowcem-podałem go jako alternatywny sposób wyciągania danych o prędkości.
Proponuje pobawić się samodzielnie-zdobywać kolejne doświadczenia i nie bazować tylko na ctrl+c ctrl+v
=====================
ASUS 500gP+Kamikaze
IPBOX9000HD+STLinux(sh4)
w razie co Compaq+FreeBSD 6.2
=====================
|
|
|
|
mescator |
Dodano 24-02-2007 18:36
|
Super User
Posty: 430
Dołączył: 27/09/2006 18:10
|
jest jeszcze jeden drobiazg, jesli skrypt sie uruchamia jako skrypt "firewall", to trzeba dodac sprawdzanie, czy aby on juz nie jest uruchomiony. wiekszosc komend konfigurujacych tomato powoduje ponowne przejscie przez "firwall script", co w efekcie powoduje wielokrotne uruchamianie skryptu sterujacego led.....
---
Asus RT-16N 1.28.0000 MIPSR2-101 K26 USB VPN
WRT54Gv3.1/ 1.28.0005 099V ND VPN
|
|
|