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

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

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

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

spiff 25.02.2009 10:43

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



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



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







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



Набор софта





Все это собиралось, тестировалось, и теперь прекрасно юзается используется на Ubuntu 8.10/Gnome.

Нам понадобится:

pure-ftpd - для организации сервера FTPlibnotify - по умолчанию должна быть в любом гноме python 2.5 и выше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 сервер)

все косим что в нем и пишем следующий код



#! /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

;;

stop)

echo -n "Stopping anonymous FTP server ... "

killall $KILL_STRING

echo

;;

*)

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" вобщем понятно.. вот код файла.



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





#!/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 -
Похожие Поделиться

l1feh4ck3r 25.02.2009 10:59 #
+ 0 -
1. Если сеть не большая, то нафиг оно нужно?
2. Если сеть большая и качают много, эти попапы не задалбывают?
spiff 25.02.2009 11:04 #
+ 0 -
сеть около около 200 машин, качают не так уж и часто, поэтому не задалбывают). Да и вобще в любой момент процесс можно кикнуть и все. Порой просто возникает не то необходимость (например для статистики о популярности фильмов) не то интерес (от делать нефиг) посмотреть что с тебя тянут, а лезть для это в логи лень.
nvbn 25.02.2009 11:03 #
+ -2 -
Я буду ответственно относиться к безопасности своих приложений.
xcr 25.02.2009 11:07 #
+ 0 -
Я не очень много понимаю в шелл-скриптах, но разве ваш ftp-monitor.sh не будет просто раз в десять секунд кидать только последнюю строчку в логе? О_о
spiff 25.02.2009 11:14 #
+ 0 -
Вы от части правы... Он будет кидать не просто поледнюю, а именоо последнюю и новую строчку. Да есть проблема, например если за период в 10 сек, скачают более одного файла, то мне будет выдана инфа только о последнем.

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

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

Смотреть онлайн бесплатно

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


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

Online video HD

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

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

Full HD video online

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

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

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