Online video hd

Смотреть hd видео

Официальный сайт tali-sk 24/7/365

Смотреть видео бесплатно

WeLinux.ru

25.02.09 10:43spiff

0byteМониторинг FTP-сервера (новый взгляд)


FTP сервер на десктопе


Возникла необходимость на обычной рабочей машине поднять ftp-сервер. Наряду с этим появился и интерес, что именно качают пользователи с моего ftp. Конечно, Вы скажите unix-way tail -f /var/log/blablablaftplog. Но я пошел другим путем...



Напоминаю что данный метод оправдывает себя только на десктопной машине (с исками и гномом в часности), для серверной машины подойдет и unix-way.

Набор софта



Все это собиралось, тестировалось, и теперь прекрасно юзается используется на Ubuntu 8.10/Gnome.
Нам понадобится:
  1. pure-ftpd - для организации сервера FTP
  2. libnotify - по умолчанию должна быть в любом гноме
  3. python 2.5 и выше
  4. PyNotify - сборка libnotify для питона



Приступим



Ставим софт:

(у меня так)
sudo apt-get install pure-ftp libnotify pynotify



останавливаем фтп сервер

sudo /etc/init.d/pure-ftpd stop


открываем зупскающий скрипт

sudo vim /etc/init.d/pure-ftpd


(Нас интересует только анонимный ftp сервер)
все косим что в нем и пишем следующий код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

#! /bin/sh
NAME=/etc/init.d/pure-ftpd
PATH=/sbin:/bin:/usr/sbin:/usr/bin
RUN_STRING="pure-ftpd -4 -A -B -M -e -U 022:022 -O /var/log/pure-ftpd/transfer.log"
KILL_STRING=pure-ftpd
case "$1" in
  start)
        echo -n "Starting anonymous FTP server ... "
        eval $RUN_STRING
        echo [OK]
        ;;
  stop)
        echo -n "Stopping anonymous FTP server ... "
        killall $KILL_STRING
        echo [OK]
        ;;
  *)
        echo "Usage: $NAME {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

exit 0

 


добавляем в систему пользователя ftp

sudo useradd ftp

в качестве домашнего каталога указываем ему тот, который будет открыт анонимоусам при входе на сервер.

теперь стартуем сервер

sudo /etc/init.d/pure-ftpd start


теперь у нас полноценный анонимный ftp сервер

Пишем систему мониторинга



файл notify.py (выбрасывает уведомление в правом нижнем углу с теском котрый ему передали в качестве аргументов)
например "python notify.py WeLinux" вобщем понятно.. вот код файла.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

import pynotify
from sys import argv

arg_str = ""
for arg in argv[1:]:
        arg_str = arg_str + " " + arg

pynotify.init("PyNotify")
n = pynotify.Notification("PyNotify", "%s" % arg_str, "gtk.STOCK_INFO")

n.set_urgency(pynotify.URGENCY_NORMAL)
n.set_timeout(5000)
# n.set_timeout(pynotify.EXPIRES_NEVER)
n.show()
 


теперь напишем непосредственно следилку. (файл ftp-monitor.sh)
это шел скрипт, который каждые 10 сек, проверяет не обновился ли лог, и если обновился выбрасывает notification

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

#!/bin/sh

#
#       monitoring ftp server
#

DELAY=10
LOG=/var/log/pure-ftpd/transfer.log
row=`tail -1 $LOG`

while true
do
        sleep $DELAY
        new_row=`tail -1 $LOG`
        if [ "$row" != "$new_row" ]
                then
                        python notify.py $new_row; row=$new_row;               
        fi
done

 


осталось все запустить:
sudo ./ftp-monitor.sh > /dev/null &


и как только кто то что то качает я вижу такое сообщение:

+4
KerneL25.02.09 10:45# +0
Под кат...
l1feh4ck3r25.02.09 10:59# +0
1. Если сеть не большая, то нафиг оно нужно?
2. Если сеть большая и качают много, эти попапы не задалбывают?
spiff25.02.09 11:04# +0
сеть около около 200 машин, качают не так уж и часто, поэтому не задалбывают). Да и вобще в любой момент процесс можно кикнуть и все. Порой просто возникает не то необходимость (например для статистики о популярности фильмов) не то интерес (от делать нефиг) посмотреть что с тебя тянут, а лезть для это в логи лень.
nvbn25.02.09 11:03# +0
Зачёт =)
xcr25.02.09 11:07# +0
Я не очень много понимаю в шелл-скриптах, но разве ваш ftp-monitor.sh не будет просто раз в десять секунд кидать только последнюю строчку в логе? О_о
spiff25.02.09 11:14# +0
Вы от части правы... Он будет кидать не просто поледнюю, а именоо последнюю и новую строчку. Да есть проблема, например если за период в 10 сек, скачают более одного файла, то мне будет выдана инфа только о последнем.

Решается очень просто ... надо сократить время до скажем 1 сек, но тогда машинке будет тяжеловато.. Есть еще вариант с более подробным анализом файла лога и сравнением его с предудыщей версией файла, но это трудоемко, машине это не надо.

Поэтому если у Вас будут версии как более эффективно организовать проверку файла логово, и на озадачивать сильно машину, я буду оч. признателен.
xcr25.02.09 14:07# +0
Самое первое, что приходит в голову - запоминать число строк, которое было в логе последний раз, и потом просто выдавать нужное число строк.
Посложнее - курить в сторону tail -f, не знаю, выйдет ли или нет.
Еще сложнее - организовать из этого лога сокет =) (как делается - вообще не знаю, но это почти наверняка несложно).
xT26.02.09 00:53# +0
проще запоминать последнюю строку, и сравнивать с ней. имхо =)
spiff26.02.09 06:46# +0
я так и делал)
xcr26.02.09 10:24# +0
Нет, потому что это не работает. Если за 10 секунд у вас появилось несколько строк, то выведется последняя.
Проще считать, сколько строк появилось. имхо.
xT26.02.09 10:55# +0
И выводить все строки, что появились? А если там нечто мелкофайловое качают 5 человек?
assaron25.02.09 11:45# +0
имхо, не нужно
если нужно посмотреть что в текущий момент качается — ftptop (для proftpd)
что качали — /var/log/proftpd/xferlog, при этом можно по нему грепать
a1fred25.02.09 16:51# +0
Хм. Я и сам грепал логи чтобы посмотреть кто что с меня качал. Спасибо, интересное решение. :)
Правда такой путь сгодится только когда фтп стоит на клиентской машине.
spiff25.02.09 17:05# +0
вы наверно имеете ввиду десктопную машину (с монитором, иксами и т.д) или как понимать "клиентская"?
booley26.02.09 20:32# +0
Ну это и подразумевается :)
Плюсанул

Top блогов (все)
Топ пользователей Топ блогов
Топ пользователей Топ блогов
Top пользователей (все)
Топ пользователей Топ блогов
Новенькие: greatx, umren, Tordor, Tagire, nodzip
welinux.ru
Идея сайта exelens; Движок 0byte, разработчик nvbn; Дизайн - Astramak

В хорошем качестве hd видео

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн