1

Тема: Як запустити скрипт по логіну ftp крористувача?

Як запустити скрипт по логіну (чи логауту) ftp користувача?
OS - Debian
FTP server - vsftpd

завдання стоїть після логауту   - перейменувати файл, який залив робот. (бо інакше він не зможе залити новий файл - імена будуть однакові)

робот завжди приносить файл з однаковим іменем. час появи робота - непрогнозований.
після того, як робот залиє файл є щонайменеш 10 хв що він точно не зайде ще раз.

ставити крон щохвилини дивитися чи появився ftpuser  якось не дуже хочеться.

2

Re: Як запустити скрипт по логіну ftp крористувача?

А cron раз на хвилину не впорається?

3

Re: Як запустити скрипт по логіну ftp крористувача?

koala написав:

А cron раз на хвилину не впорається?

звісно crontab від ftpuser  впорається. навіть не раз на хвилину, а раз на 10 хв вистачить.
я просто думав, що може упустив якийсь варіант , котрий би активував скрипт саме на логін чи логаут.
перерив ман - нічого такого, але на всяк випадок перепитую - адже задачка не унікална, напевне хтось уже подібні питання вирішував.

4

Re: Як запустити скрипт по логіну ftp крористувача?

Не має бажань написати свого демона FTP? У мене схоже завдання було, я так й зробив.
Достав Лазарус та вітяг руки із карманів )

5

Re: Як запустити скрипт по логіну ftp крористувача?

я не зрозумів ситуацію до кінця, а чи є можливість того робота дописати ?
зробіть як Кріс Касперскі який написав модуль ядра який  слідкує за папками які відкриються, а ви зробіть так що б слідкував за новими файлами в певній папці, дальше чи можна маленьку програму написати хоч на PHP де буде слідкувати чи файл є новий чи з тим іменем що робот кинув

6

Re: Як запустити скрипт по логіну ftp крористувача?

Vi написав:

Не має бажань написати свого демона FTP? У мене схоже завдання було, я так й зробив.
Достав Лазарус та вітяг руки із карманів )

сервер не мій, обслуговувати будуть інші люди.
тому бажано використовувати тільки те, що вже на ньому встановлено - менша ймовірність що потім будуть смикати.

7

Re: Як запустити скрипт по логіну ftp крористувача?

reverse2500 написав:

я не зрозумів ситуацію до кінця, а чи є можливість того робота дописати ?

ні, робот зовсім чужий і приймає тільки логін, пароль і ім’я файлу. його модифікувати не можна .

reverse2500 написав:

зробіть як Кріс Касперскі який написав модуль ядра який  слідкує за папками які відкриються, а ви зробіть так що б слідкував за новими файлами в певній папці, дальше чи можна маленьку програму написати хоч на PHP де буде слідкувати чи файл є новий чи з тим іменем що робот кинув

ну десь так і буде.
рішення бачу так :
крон кожні 5 хв буде запускати скрип на пітоні, а той уже займеться аналізом, перйменуваннями і, при потребі, архівуванням.

8

Re: Як запустити скрипт по логіну ftp крористувача?

ping написав:

крон кожні 5 хв буде запускати скрип на пітоні

Я не виникне така подія що кронушка запустить скрипт тоді, коли файл ще не догрузиться?
Колізії не лякають?

9 Востаннє редагувалося koala (09.04.2017 08:47:53)

Re: Як запустити скрипт по логіну ftp крористувача?

Vi написав:
ping написав:

крон кожні 5 хв буде запускати скрип на пітоні

Я не виникне така подія що кронушка запустить скрипт тоді, коли файл ще не догрузиться?
Колізії не лякають?

А у вас особлива релігія, що забороняє перевіряти, чи файл зайнятий?

10

Re: Як запустити скрипт по логіну ftp крористувача?

koala написав:

перевіряти, чи файл зайнятий?

Як?

11

Re: Як запустити скрипт по логіну ftp крористувача?

- або робот пiсля аплоаду головного файла хай пише ще допомiжний файл, а скрипт вiдслiдковує появу допомiжного > перейменувати головний файл, який залив робот > видалити допомiжний.
- або робот пише filename, пicля аплоаду перейменовує в filename.ext
- або якщо розмiр основного завжди однаковий, то по ньому cкрипт
- або https://www.ibm.com/developerworks/comm … lang=zh_cn

12

Re: Як запустити скрипт по логіну ftp крористувача?

raxp написав:

або робот

Неможна:

ping написав:

ні, робот зовсім чужий

13 Востаннє редагувалося ping (09.04.2017 22:29:46)

Re: Як запустити скрипт по логіну ftp крористувача?

Vi написав:
ping написав:

крон кожні 5 хв буде запускати скрип на пітоні

Я не виникне така подія що кронушка запустить скрипт тоді, коли файл ще не догрузиться?
Колізії не лякають?

тоді  - якщо наступила подія - появилися файли, які треба переіменовувати  - перед початком роботи по переіменуванню файла - пауза 120 сек.

або - перевірити , чи нема його у виводі lsof  (але не хочу запускати консольні команди зі скрипта)

або - дивитися, чи вже від’єднався ftpuser

14

Re: Як запустити скрипт по логіну ftp крористувача?

ping написав:

пауза 120 сек.

Ні. Залів може працювати з перервами. Наприклад канал просідає. Я постийно раніше стикався с саме просіданням інтернету.

ping написав:

дивитися, чи вже від’єднався ftpuser

Це вже годнота  :)
Але... якщо ти будешь перевіряти також по таймеру під'єднання\від'єднання то також можешь ухопити колючку коли робот зал'є файл малого розміру та відпрацює за час самого таймера. Якщо ті повісищь якійсь опрацювач події тоді гайда, інакще можливе так:  *WALL*

15 Востаннє редагувалося koala (10.04.2017 11:19:30)

Re: Як запустити скрипт по логіну ftp крористувача?

Я, власне, хотів запропонувати саме перевірку, чи файл відкритий, до того ж найтупішу:

def file_is_free(filename):
    try:
        open(filename)
        return True
    except:
        return False

Але якщо робот може дозаливати - тоді, схоже, кращий варіант із додатковим файлом.

16 Востаннє редагувалося HetmanNet (10.04.2017 09:57:28)

Re: Як запустити скрипт по логіну ftp крористувача?

ping написав:

Як запустити скрипт по логіну (чи логауту) ftp користувача?
OS - Debian
FTP server - vsftpd

завдання стоїть після логауту   - перейменувати файл, який залив робот. (бо інакше він не зможе залити новий файл - імена будуть однакові)

робот завжди приносить файл з однаковим іменем. час появи робота - непрогнозований.
після того, як робот залиє файл є щонайменеш 10 хв що він точно не зайде ще раз.

ставити крон щохвилини дивитися чи появився ftpuser  якось не дуже хочеться.

Юзайте proftpd замість vsftpd, бо там є mod_exec, а в ньому є параметри:
1. ExecOnExit запуск по відключенню..
2. ExecOnConnect при під'єднанні..
3. ExecOnCommand при виконанні певної ftp команди
4. І решта.
І тоді не треба ніфіга додатково писати окрім скрипта що бажаєте запускати..

Подякували: koala, raxp, NaharD, ping4

17 Востаннє редагувалося HetmanNet (10.04.2017 18:02:14)

Re: Як запустити скрипт по логіну ftp крористувача?

reverse2500 написав:

я не зрозумів ситуацію до кінця, а чи є можливість того робота дописати ?
зробіть як Кріс Касперскі який написав модуль ядра який  слідкує за папками які відкриються, а ви зробіть так що б слідкував за новими файлами в певній папці, дальше чи можна маленьку програму написати хоч на PHP де буде слідкувати чи файл є новий чи з тим іменем що робот кинув

Взагалі є готовий механізм в ядрі лінукс, треба лиш поставити утиліту для роботи з ним. INOTIFY це типу cron але запуск не по розкладу, а за взаємодією з файловою системою. Тож навіщо щось писати додатково? Може просто навчити користуватися інструментами, що є в linux?

Подякували: ping1

18

Re: Як запустити скрипт по логіну ftp крористувача?

ping написав:
Vi написав:

Не має бажань написати свого демона FTP? У мене схоже завдання було, я так й зробив.
Достав Лазарус та вітяг руки із карманів )

сервер не мій, обслуговувати будуть інші люди.
тому бажано використовувати тільки те, що вже на ньому встановлено - менша ймовірність що потім будуть смикати.

Ну тоді ніяк.. так чи інакше треба буде щось до встановити чи перевстановити хоча би з пакунків.