PDA

Bekijk de volledige versie : как определить, подключены ли какие-либо компьютеры к роутеру?



eugenem
04-03-2007, 12:36
ДД,

такая проблема: при запущенном transmission жрет он практически весь
канал наружу, и wshaper не помогает. В сети у меня десктоп и бук по вайфаю, и использую voip. Решил я попробовать так - если ни тот, ни тот компьютер не подключены, то transmission может качать на всю, а если кто-то подключился к роутеру, то через cron с интервалом 5 минут буду проверять, все еще подключен ли компьютер и если да, то пробовать
стрелять все процессы transmission. А как только компьютер отключится, то закачка восстановится.

Так вот - а как красиво проверить, есть у меня кто на ethernet портах и на вайфае живой или нет?

Eugene

usmailer™
04-03-2007, 12:50
ДД,

такая проблема: при запущенном transmission жрет он практически весь
канал наружу, и wshaper не помогает. В сети у меня десктоп и бук по вайфаю, и использую voip. Решил я попробовать так - если ни тот, ни тот компьютер не подключены, то transmission может качать на всю, а если кто-то подключился к роутеру, то через cron с интервалом 5 минут буду проверять, все еще подключен ли компьютер и если да, то пробовать
стрелять все процессы transmission. А как только компьютер отключится, то закачка восстановится.

Так вот - а как красиво проверить, есть у меня кто на ethernet портах и на вайфае живой или нет?

Eugene

сумбурно описано...
лана.. попробуем...

как варик - посмотреть лог...
там указано.. кто и когда получил ИП от ДХЦП.. и кто когда отвалился....

eugenem
04-03-2007, 14:34
Попробую описать поподробнее:

Есть Wl500g Premium, desktop (подключается по шнурку) и бук (подключается по wifi).

На роутере стоит torrent-клиент. Если он качает файлО, то забивает канал напрочь.

wshaper не помогает.

Хочется отследить, что как только к роутеру подключится или десктоп, или бук - и после этого застрелить torrent-качалку. Периодически проверять, подключены ли десктоп и бук. Как только они отключатся - снова запустить качалку.

Логи анализировать - это конечно здорово, но хочется чего попроще ;)
Например, кроном раз в 5 минут пинговать все внутренние адреса - и если на каком-то адресе компьютер откликнулся - считать что клиент подключился и убивать качалку.

Но как проверить результат пинга из шелл-файла, я не знаю... :(

Eugene

usmailer™
04-03-2007, 15:46
Попробую описать поподробнее:

Есть Wl500g Premium, desktop (подключается по шнурку) и бук (подключается по wifi).

На роутере стоит torrent-клиент. Если он качает файлО, то забивает канал напрочь.

wshaper не помогает.

Хочется отследить, что как только к роутеру подключится или десктоп, или бук - и после этого застрелить torrent-качалку. Периодически проверять, подключены ли десктоп и бук. Как только они отключатся - снова запустить качалку.

Логи анализировать - это конечно здорово, но хочется чего попроще ;)
Например, кроном раз в 5 минут пинговать все внутренние адреса - и если на каком-то адресе компьютер откликнулся - считать что клиент подключился и убивать качалку.

Но как проверить результат пинга из шелл-файла, я не знаю... :(

Eugene


1 - как я понял, комп и бук могут подключаться к роутеру без Вашего ведома... ну например в Ваше отсутствие жена заходит в Тырнет... и у нее проблемы со скоростью.. Тогда можно ее обучить несложным командам на прекращение работы качалки...
2 - лично я пользуюсь вот этой качалкой - http://www.wl500g.info/showpost.php?p=48698&postcount=42
и счастье меня не покидает...
Графический фейс, простота и качество работы на высоком уровне...
Можно поставить его и повторить последнее предложение поста 1
3 - Написать скрипт, который будет постоянно висеть в памяти и мониторить подключения.. Как кто-то появится - прибивать процесс..

ЗЫ
я тоже имел подобный вопрос и предпочел п.2 и вполне доволен...

eugenem
04-03-2007, 17:35
Я решил попробовать так:

Запуск кроном каждые 5 минут:

#!/bin/sh
cat /proc/net/arp >> /tmp/var/log/check_ws.log
if cat /proc/net/arp|grep 192.168.1 > /dev/null
then
echo "WS Found..." >> /tmp/var/log/check_ws.log
killall transmissiond
exit
fi
echo "WS not found..." >> /tmp/var/log/check_ws.log

К сожалению, таким образом можно отловить ноутбук,
он, когда отключается, перестаем отображаться в /proc/net/arp,
а вот десктоп там и сидит - я так понимаю ATX мать полностью
не засыпает и сетевая карта видится с роутера..

Ну как мне понять - работает компьютер или нет?.. 8-(

Eugene

alexhemp
04-03-2007, 18:24
Элементарно - ping <ip-адрес>

AntiMelk
04-03-2007, 19:12
А бывает, что на пинги компьтер не отвечает, например в сети полно всяких придурков желающих зафлудить кого-нибудь. Поэтому стоят очень жёсткие правила фаервола.

кто-нибудь мне ответит здесь (http://www.wl500g.info/showthread.php?t=4574&page=3) ? Подавляющее большинство пользователей этого форума в состоянии ответить на мой вопрос...

eugenem
04-03-2007, 19:13
Eds? не элементарно, поскольку на том линухе, что прошит в роутере,
команда ping <address> будет исполняться долго-долго, в отличие от
виндового ping, где по дефолту 5 запросов. Могли бы как-то помочь ключики от ping, но на вопрос ping --h он отвечает

Usage: ping [OPTION]... host

А вот где взять эти опции я не знаю.. Кроме того, вообще говоря,
мне пинг в скрипт встраивать надо, а я в линухе не копенгаген :(

Eugene

GearST
04-03-2007, 22:19
может стоит попробвать директиву максимальной скорости скачки/отдачи в торренте?

Mam(O)n
05-03-2007, 00:00
Можно еще попробовать отследить по наличию маршрутизируемого трафика. Я и скриптик написал по этому поводу, где с помощью iptables отслеживается исходящий трафик, проходящий через роутер.



#!/bin/sh

# Команда на исполнение, когда перестанет идти маршрутизируемый трафик
start="echo 'трафика нет'"

# Команда на исполнение, когда будет обнаружен маршрутизируемый трафик
stop="echo 'трафик идет'"

# Пауза между проверками наличия трафика
period=10

# Период времени при отсутствии трафика, после которого будет считаться что трафик законился (idle*period)s
idle=60

# Интерфейс интернета
oint="ppp0"

# Интерфейс внутренней сети
iint="br0"


IPT="/usr/sbin/iptables"
AWK="/usr/bin/awk"
chain="ipIDLE"

$IPT -N $chain || exit 1

# Правило отслеживания трафика #
$IPT -A $chain -i $iint -o $oint -j RETURN || exit 1
# Также в цепочку $chain можно добавить дополнительные правила отслеживания трафика #

$IPT -I FORWARD -j $chain || exit 1

trap '
if $IPT -L $chain > /dev/null 2>&1; then
$IPT -D FORWARD -j $chain 2> /dev/null 2>&1
while :; do $IPT -D $chain 1 2> /dev/null || break; done
$IPT -X $chain || exit 1
fi
exit 0
' 1 2 15

idlecount=0
stopped=true

while :; do
sleep $period
newcounters=`$IPT -L $chain -n -v -x | $AWK '$2 ~ /[0-9]+/ {print $2}'`
[ ! "$counters" ] && counters=$newcounters
if [ "$newcounters" = "$counters" -a "$stopped" ]; then
idlecount=$(($idlecount + 1))
if [ "$idlecount" -ge "$idle" ]; then
idlecount=0
eval $start
stopped=""
fi
elif [ "$newcounters" != "$counters" -a ! "$stopped" ]; then
eval $stop
stopped=true
fi
echo $newcounters
counters=$newcounters
done


Скрипт следует запускать в фоне с помощью "&", например


./trafidle &

v12aml
05-03-2007, 17:29
поскольку на том линухе, что прошит в роутере,
команда ping <address> будет исполняться долго-долго, в отличие от
виндового ping

точнее безконечно

там не стандартный линуксовый ping , а как я понимаю, busybox'овый... у стандартоного есть ключик -c <число_пакетов>, так указав -c 2 будут отосланы всего два ICMP echo запроса... попробуйте (у меня сейчас нет такой возможности), работает ли в busybox'овом ping'е -c

dfayruzov
05-03-2007, 17:43
ping -c работает

aka179
15-03-2007, 09:57
если ping запрещен - можно воспользоваться arping - он проходит через все firewall'ы