Автор Тема: Задача 1 - 03.09 - 09.09 - torrent watch  (Прочетена 90162 пъти)

BULFON

  • Administrator
  • Напреднали
  • *****
  • Публикации: 478
  • Distribution: Fedora
  • Window Manager: Gnome
    • Профил
Задача 1 - 03.09 - 09.09 - torrent watch
« -: Sep 04, 2007, 01:49 »
Задачата е да се напише скрипт/програма (скриптове/програми), които вършат следното нещо:
В дадена директория (указва се в скрипта) могат да се запишат - по ftp, samba, http - торент (.torrent) файлове. Скрипта следи (на всеки 30 сек) за такива файлове, и ако намери, ги премества в друга директория (указва се в скрипта) и пуска ctorrent, за да свали съответния торент файл.
Параметри на скрипта:
start - започва да "наблюдава" директорията
stop - спира "наблюдението"
status - дава информация за броя изпълняващи се задачи (работещи ctorrent клиенти, пуснати от скрипта).
kill - спира "наблюдението" и спира всички ctorrent задачи, пуснати от скрипта.

Важно и съществено допълнение - наградата е бутилка хубаво, бяло вино.



Активен

фонокартен телефонен апарат

the_real_maniac

  • Напреднали
  • *****
  • Публикации: 1258
  • Kernel panic, me - no panic ;-) :-)
    • Профил
Задача 1 - 03.09 - 09.09 - torrent watch
« Отговор #1 -: Sep 04, 2007, 09:00 »
Не знам дали тук е мястото за обсъждане на самата тема или само за резултати, но един resume също е не възможен ми зад.

иначе преди изход трябва да ги върща
от поддиректорията, където са преместени обратно в първоначалната , че да ги види следващият път като се пуска, а ctorrent ще види , че продължава задача и няма нужда от доп. игра '<img'> '<img'>

Иначе resume функц/възможност ще следи поддиректорията, в която трябва да мести дали има нещо , което трябва да се изпълни/довърши '<img'> :-) :-P '<img'> просто идея '<img'>
Активен

Powered by Debian GNU / LINUX /// Intel inside ...

„Насилието е последното убежище на некомпетентността“ - Айзък Азимов (1920 — 1992)

BULFON

  • Administrator
  • Напреднали
  • *****
  • Публикации: 478
  • Distribution: Fedora
  • Window Manager: Gnome
    • Профил
Задача 1 - 03.09 - 09.09 - torrent watch
« Отговор #2 -: Sep 04, 2007, 09:37 »
Отлична идея, но нека остане в екстрите.
Да кажем, че при изпълнени основни условия, ако и това е имплементирано ще има предимство при оценката '<img'>
Активен

фонокартен телефонен апарат

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Задача 1 - 03.09 - 09.09 - torrent watch
« Отговор #3 -: Sep 04, 2007, 10:01 »
Ще пишете нов afd ? '<img'>
Активен

"Knowledge is power" - France is Bacon

BULFON

  • Administrator
  • Напреднали
  • *****
  • Публикации: 478
  • Distribution: Fedora
  • Window Manager: Gnome
    • Профил
Задача 1 - 03.09 - 09.09 - torrent watch
« Отговор #4 -: Sep 04, 2007, 10:25 »
Може би трябва да има условие да не е повече от 150 реда код.
А на въпроса - трябват 2 скрипта, а не цяла система за дистрибуция на файлове.
Активен

фонокартен телефонен апарат

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Задача 1 - 03.09 - 09.09 - torrent watch
« Отговор #5 -: Sep 04, 2007, 10:44 »
А какво става ако скриптът намери в директорията  един файл, който още не е качен целият по ftp например?

Какво ще се случи след като го премести?

Просто ми стана интересно '<img'>
Активен

"Knowledge is power" - France is Bacon

senser

  • Напреднали
  • *****
  • Публикации: 1328
    • Профил
Задача 1 - 03.09 - 09.09 - torrent watch
« Отговор #6 -: Sep 04, 2007, 12:09 »
не знам дали съм разбрал напълно идеята, но ми се струва че това, което искаш да постигнеш го има като функционалност в rtorrent

аз го ползвам на една машина без Х и съм много доволен

разгледай в нета за възможните параметри за конфигуриране във файла ".rtorrent.rc" дали ще ти върши работа
Активен

BULFON

  • Administrator
  • Напреднали
  • *****
  • Публикации: 478
  • Distribution: Fedora
  • Window Manager: Gnome
    • Профил
Задача 1 - 03.09 - 09.09 - torrent watch
« Отговор #7 -: Sep 04, 2007, 13:20 »
.rtorrent.rc върши работа. В случая в задачата се говори за торенти, но може примерно да са .sql файлове, които да се вкарват в някоя база, да са статии, които по този начин да се зареждат в опашката на някой CMS, и т.н.

Благодаря за .rtorrent.rc '<img'>



Активен

фонокартен телефонен апарат

zeridon

  • Killmode enabled
  • Administrator
  • Напреднали
  • *****
  • Публикации: 1398
  • Distribution: Debian/Ubuntu
  • Window Manager: console/Gnome
  • BOfH
    • Профил
    • WWW
Задача 1 - 03.09 - 09.09 - torrent watch
« Отговор #8 -: Sep 04, 2007, 14:12 »
Submission '<img'>

следват 2 скрипта и обяснения към тях. Самите скриптове не са нищо особенно като цяло са доста прости и имат супер проста защита от грешки но за сметка на това работят '<img'> а да и се генерализирани за различна употреба

watcher.sh
Примерен код
#!/bin/bash
#
# simple script for watching a dir for new files
# made for BASH Maistora contest
#
# author: vvitkov
# version: 0.1
# date: 04.09.2007
# contact: http://www.getoto.net/az/
# license: CC NC-BY-SA v3.0

## vars
WATCH_DIR="/tmp/watch"
SCAN_TIME="30"
DEST_DIR="/dl/spaceeaters"
PROG_EXEC="ctorrent"
## variable assignment trough command line left for te curious ones :)

while [ 1 ]; do
        # a bit of sanity
        if [ !-d $WATCH_DIR ]; then
                echo "Scan Dir does not exist. FIX THIS!!!"
                exit 1
        fi
        if [ !-d $DEST_DIR ]; then
                echo "Destination Dir does not exist. FIX THIS!!!"
                exit 2
        fi
        #lets go at home
        cd $WATCH_DIR
        # and see if there is something to do
        if [ `ls -1` ]; then
                TMP_VAR=`ls -1`
                # and do our stuff
                for FILE in $TMP_VAR; do
                        cd $WATCH_DIR
                        mv "$FILE" $DEST_DIR
                        cd $DEST_DIR
                        $PROG_EXEC $FILE &
                done
        fi
        sleep $SCAN_TIME
done


master.sh
Примерен код
#!/bin/bash
#
# simple script for controling our watcher
# made for BASH Maistora contest
#
# author: vvitkov
# version: 0.1
# date: 04.09.2007
# contact: http://www.getoto.net/az/
# license: CC NC-BY-SA v3.0

LOCATION="/tmp/bin/"
DAEMON="watcher.sh"
EXEC_PROG="ctorrent"

case "$1" in
        start)
                if [ `pidof $DAEMON` ]; then
                        echo "Already running ... what the hell do you think"
                        exit 1
                fi
                echo "Starting Watcher for new files ..."
                $LOCATION/$DAEMON &
                echo "It's now running in background scanning every 30 secs"
        ;;
        stop)
                echo "Stopping watcher (can take up to 30 secs) ..."
                kill `pidof $DAEMON`
                echo  "Done"
        ;;
        status)
                COUNT=`ps ax | grep $EXEC_PROG | grep -v "grep"`
                echo "You have $COUNT running $EXEC_PROG instances"
                echo "You good boy :)"
        ;;
        kill)
                echo "Stopping Watcher and tasks (you better be sure what you are doing)"
                echo "Stopping watcher (can take up to 30 secs) ..."
                kill `pidof $DAEMON`
                echo "Stopping tasks"
                kill `pidof $EXEC_PROG`
                echo "Done"
        ;;
        *)
                echo "Invalid option"
                echo "Valid: start | stop | status | kill"
        ;;
esac


Малко обяснения по скриптовете. Два файла са със различна задача. watcher.sh върши същинската работа, а master.sh го командва.

Очаква се файловете да нямат интервали в имената си. Това може да бъде избягнато но ... мързела е голямо нещо.
В променливата EXEC_PROG се описва програмата която трябва да се изпълни със всички необходими опции. Опциите могат да бъдат отделени в допълнителна променлива но май няма много смисъл. А и е тривиално за дописване.
Смята се че програмката ни не минава във фонов режим сама за това я слагаме насилствено.

В master.sh EXEC_PROG е само името на програмката ни без опции. Смятам че скриптовете са достатъчно прости за да бъдат разбрани от всеки, но ако има въпроси може да стреляте.

Edit: малко козметика



Активен

Внмимавай имам клещи за кабел
http://www.netsecad.com/
http://theregister.co.uk/odds/bofh/

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Задача 1 - 03.09 - 09.09 - torrent watch
« Отговор #9 -: Sep 04, 2007, 15:31 »
Моето предложение '<img'>
Малко тъпо става обаче, че 90% от кода на различните участници почти винаги ще е един и същ ...

... Писна ми да се опитвам да кача код ... все се реже нещо ...

tdprocess.sh

PS: Не ми се прави санитизация на входните данни '<img'>



Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Задача 1 - 03.09 - 09.09 - torrent watch
« Отговор #10 -: Sep 04, 2007, 19:18 »
Същото нещо, само че на С.

usf.c

Предимства:

* няма нужда от 2 отделни скрипта/програми
* "демонизира" се, ужким нямаме проблеми ако му се затвори controlling tty-то (логаутнем се да речем)
* предполагам е бързо
* kill няма да изпотрепе всички ctorrent процеси, само тези дето са извикани от програмата
* Този случай който описах - представете си, че някой е ъплоуднал файл до средата и тая бракма вземе че я премести както е така наполовина - в моя случай няма как да стане, защото проверявам дали някой не го "държи" (това е и недостатък от друга страна)


Недостатъци:

* Написано е набързо, възможни са гранични положения такива, дори секюрити рискове при положение, че някой друг юзър-идиот си поиграе и реши да пише лоши неща в разни файлове, докато това нещо работи

* Отново същият проблем - домързя ме да правя повече проверки, например кво става ако нямаме ctorrent или пък нямаме такива две директории

* Не е portable щото не е казано, че всички машини трябва да имат С компилатор, lsof и awk.

* Като цяло е мърляво написано, ма за толкоз време - това е.
Активен

"Knowledge is power" - France is Bacon

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Задача 1 - 03.09 - 09.09 - torrent watch
« Отговор #11 -: Sep 04, 2007, 19:38 »
Уф, шибана работа, не съм дочел условието и си мислех, че трябва всякакви файлове да се местят, а за торънт файловете специално да се вика ctorrent '<img'>

Ееее, нищо, значи местим файлове всекви '<img'>
Активен

"Knowledge is power" - France is Bacon

the_real_maniac

  • Напреднали
  • *****
  • Публикации: 1258
  • Kernel panic, me - no panic ;-) :-)
    • Профил
Задача 1 - 03.09 - 09.09 - torrent watch
« Отговор #12 -: Sep 04, 2007, 20:17 »
Хахахах и аз мислех да го пиша на С , обаче се спрях щото и аз щяхд а го напиша на бързо, н о като гледам ти не набързо, ами хх, сори , но честно ми е непрегледно ,аз по навик удрям доста ентъри като пиша код и дори и да има разместваня покрай ентърите успявам да правя разлика къде какво свърша '<img'> ;-)

'<img'> И все пак е хубаво и такива варианти да се видят :-P '<img'>

единственият минус мен , ако ме питаш е , че трябва компилатор и комилиране, докато script-овете на момента едит и щрак '<img'>

:-p '<img'>
Айде , успех на участниците :-D  ':p'  'B)'  '<img'>
Активен

Powered by Debian GNU / LINUX /// Intel inside ...

„Насилието е последното убежище на некомпетентността“ - Айзък Азимов (1920 — 1992)

edmon

  • Гост
Задача 1 - 03.09 - 09.09 - torrent watch
« Отговор #13 -: Sep 05, 2007, 18:13 »
за какво пишете нов "демон" като един цял демон вече върви и се казва cron.
от там нататак.
mv
torent {file}.torrent

или не съм рабрал целта?
аа да има старт и стоп. ми кофти ми се вижда задачата като задача.
дайте по издържани задачи. в смисъл да не се откриват недомислици.
или викате за какво да пък да не преоткрием топлата вода!
Активен

zeridon

  • Killmode enabled
  • Administrator
  • Напреднали
  • *****
  • Публикации: 1398
  • Distribution: Debian/Ubuntu
  • Window Manager: console/Gnome
  • BOfH
    • Профил
    • WWW
Задача 1 - 03.09 - 09.09 - torrent watch
« Отговор #14 -: Sep 09, 2007, 15:33 »
В спора се ражда истината ...

А и като цяло всички май се залепваме към думичката торент. А самото условие е да има възможност да се поразвие и за друг тип файлове операции.

Има го и момента с мойто гардже най-хубаво ма честно харесвам си боклука дет съм драснал '<img'>
Активен

Внмимавай имам клещи за кабел
http://www.netsecad.com/
http://theregister.co.uk/odds/bofh/

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
TVTuner Watch & grab ednovremenno
Настройка на програми
PAIN1 0 5154 Последна публикация Apr 11, 2004, 13:21
от PAIN1
torrent клиент
Идеи и мнения
gushtera 3 10125 Последна публикация Jan 20, 2005, 17:51
от WebCrusader
torrent под конзолен режим
Настройка на програми
wwwevecom 10 12611 Последна публикация Mar 21, 2005, 23:29
от wwwevecom
Torrent
Настройка на програми
Goust 7 11624 Последна публикация Apr 30, 2005, 13:59
от Goust
torrent
Настройка на програми
wolwerin1 3 10121 Последна публикация May 28, 2005, 09:40
от