Forth http://www.fforum.winglion.ru/ |
|
Задачка для nnCron http://www.fforum.winglion.ru/viewtopic.php?f=20&t=657 |
Страница 1 из 1 |
Автор: | WingLion [ Сб апр 14, 2007 12:37 ] |
Заголовок сообщения: | Задачка для nnCron |
В общем, ситуация такая: на компьютере с TiReX-ом стоит nnCron, и надо бы ему скриптик сделать для запуска копирования файлов лога IRC на сайт. Сейчас это просто запуск некоего bat- файла, который копирует на ftp кучку файлов вида forthYYYYMMDD.html в заданный каталог на фтп. из-за того, что кучка достаточно приличная (YYYYMM - редактирую вручную раз в месяц, а вместо DD - *), копирование идет довольно-таки медленно (и из-за этого обновление логов на сайте сейчас происходит один раз в три часа). Инет-канал хоть и унлимит, но ограничен по ширине, да и другими делами он более занят (ну, там всякие ослы с торрентами пасутся, некоторые Oслы даже по сайтам ходют и т.д. и т.п). Короче, нужен скрипт, который бы подставлял bat-файлу необходимые параметры, зависящие от текущей даты, а именно, запускать задачу такого вида: log.bat YYYYMMDDnew YYYYMMDDlast ftp-directory Где YYYY - год, MM - месяц, DD-день (new - текущий, last - вчерашний) Тогда логи будут копироваться быстрее и можно будет настроить крон на исполнение этого скрипта каждые 10-15 минут, например. (last нужен, чтобы избавиться от глюков в логах, возникающих в моменты, когда бот пишет конкретный файл, а ftp.exe пытается его на сайт перелить - файл блокируется, и на сайте оказывается либо обрывок, либо пустота) п.с. сам я с nnCron-ом разбираюсь плохо, поэтому и прошу помощи в этом деле, чтобы не накосячить чего-нибудь. |
Автор: | VoidVolker [ Сб апр 14, 2007 13:15 ] |
Заголовок сообщения: | |
Код: #( ОбновлениеЛогов
NoActive Action: S" log.bat %YYYY%%MM%%DD% " EVAL-SUBST Year@ Mon@ Day@ -1 DAY+ >R >R N>S S+ R> N>S S+ R> N>S S+ S" ftp-directory" S+ START-APP )# Для теста заменить START-APP на MsgBox. |
Автор: | WingLion [ Сб апр 14, 2007 15:22 ] |
Заголовок сообщения: | |
задача получилась такая: Код: #( log2ftp
NoActive Action: StartIn: "C:\WebServers\HOME\WINGLION.RU\WWW\IRC_LOGS" S" C:\WebServers\HOME\WINGLION.RU\WWW\IRC_LOGS\FTP3.BAT %YYYY%%MM%%DD% " EVAL-SUBST Year@ Mon@ Day@ -1 DAY+ >R >R N>S S+ R> N>S S+ R> N>S S+ S" frt_2007 forth" S+ MsgBox )# FTP3.BAT %1 %2 %3 %4 %1 - сегодня %2 - вчера %3 - ftp-dir %4 - log-name Возникла следующая проблема. Номер месяца - 4, а надо 04, То же самое и с днем. Подозреваю, что 1 мая превратится в 200751 вместо 20070501 Короче, надо дальше работать |
Автор: | WingLion [ Сб апр 14, 2007 17:04 ] |
Заголовок сообщения: | |
Последняя модификация: определено новое слово ZN>S -- создающее строку с лидирующим нулем, если число меньше 10 Код: #( Логи_форта->фтп
: ZN>S N>S DUP 1 = IF S" 0" 2SWAP S+ THEN ; NoActive Action: StartIn: "C:\WebServers\HOME\WINGLION.RU\WWW\IRC_LOGS" S" C:\WebServers\HOME\WINGLION.RU\WWW\IRC_LOGS\FTP3.BAT %YYYY%%MM%%DD% " EVAL-SUBST Year@ Mon@ Day@ -1 DAY+ >R >R ZN>S S+ R> ZN>S S+ R> ZN>S S+ S" ftp-directory" S+ START-APP )# |
Автор: | WingLion [ Сб апр 14, 2007 17:24 ] |
Заголовок сообщения: | |
И последняя модификация - время запуска, режим запуска (в свернутом окне, нормальный приоритет) появился %5 - с именем индекс-файла, который тоже надо периодически кидать на фтп. Код: #( Логи_форта->фтп
Time: */15 * * * * * : ZN>S N>S DUP 1 = IF S" 0" 2SWAP S+ THEN ; Action: StartIn: "C:\WebServers\HOME\WINGLION.RU\WWW\IRC_LOGS" ShowMinimized NormalPriority S" C:\WebServers\HOME\WINGLION.RU\WWW\IRC_LOGS\FTP3.BAT %YYYY%%MM%%DD% " EVAL-SUBST Year@ Mon@ Day@ -1 DAY+ >R >R ZN>S S+ R> ZN>S S+ R> ZN>S S+ S" frt_2007 forth index_fr" S+ START-APP )# |
Автор: | VoidVolker [ Сб апр 14, 2007 18:34 ] |
Заголовок сообщения: | |
Цитата: режим запуска в свернутом окне
Ну тогда лучше сразу спрятать - просто заменить ShowMinimized на SWHide да и StartIn: опция не обязательная. |
Автор: | WingLion [ Сб апр 14, 2007 18:40 ] |
Заголовок сообщения: | |
StartIn: надо, чтобы батник работал правильно, без него он зверски глючит... SWHide - поставил, но теперь не видно, что задача запускается... |
Автор: | VoidVolker [ Пн апр 16, 2007 21:15 ] |
Заголовок сообщения: | |
Цитата: SWHide - поставил, но теперь не видно, что задача запускается...
Ну так окно прячется, а если надо знать когда запускается, то лучше вывести подсказку при запуске: Код: #( Логи_форта->фтп
Time: */15 * * * * * : ZN>S N>S DUP 1 = IF S" 0" 2SWAP S+ THEN ; Action: S" " S" Логи_форта->фтп" BALLOON StartIn: "C:\WebServers\HOME\WINGLION.RU\WWW\IRC_LOGS" SWHide NormalPriority S" C:\WebServers\HOME\WINGLION.RU\WWW\IRC_LOGS\FTP3.BAT %YYYY%%MM%%DD% " EVAL-SUBST Year@ Mon@ Day@ -1 DAY+ >R >R ZN>S S+ R> ZN>S S+ R> ZN>S S+ S" frt_2007 forth index_fr" S+ START-APP 3000 PAUSE S" " S" " BALLOON \ Убирает подсказку )# |
Автор: | Nicholas_Nemtsev [ Вт апр 17, 2007 11:01 ] |
Заголовок сообщения: | |
1. ZN>S я бы написал так: Код: : ZN>S S>D <# # # #> ; 2. А вообще полезно написать словечко ymd2YYYYMMDD: Код: : ymd2YYYYMMDD ( y m d -- a u) <# S>D # # 2DROP S>D # # 2DROP S>D # # # # #> ; и уже его использовать. Для наглядности лучше. Код: #( Логи_форта->фтп Time: */15 * * * * * : ymd2YYYYMMDD ( y m d -- a u) <# S>D # # 2DROP S>D # # 2DROP S>D # # # # #> ; Action: S" " S" Логи_форта->фтп" BALLOON StartIn: "C:\WebServers\HOME\WINGLION.RU\WWW\IRC_LOGS" SWHide NormalPriority START-APP: C:\WebServers\HOME\WINGLION.RU\WWW\IRC_LOGS\FTP3.BAT %YYYY%%MM%%DD% %Year@ Mon@ Day@ -1 DAY+ ymd2YYYYMMDD% frt_2007 forth index_fr 3000 PAUSE S" " S" " BALLOON \ Убирает подсказку )# Для пущей наглядности можно ещё одно слово написать: Код: : YYYYMMDD+ ( n -- a u) >R Year@ Mon@ Day@ R> DAY+ ymd2YYYYMMDD ; и командная строка будет выглядеть так: Код: START-APP: C:\WebServers\HOME\WINGLION.RU\WWW\IRC_LOGS\FTP3.BAT %YYYY%%MM%%DD% %-1 YYYYMMDD+% frt_2007 forth index_fr
|
Автор: | WingLion [ Пт окт 19, 2007 01:41 ] |
Заголовок сообщения: | |
Возникла еще пара задачек, которые надо бы выполнять с помощью nnCron-а. 1. Мониторинг internet-соединения - Пробую раз в 5 минут, выполнять команду ping winglion.ru, в результате, каждые пять минут получаю попытку установить internet-соединение (у меня оно через гпрс сейчас), а надо так, чтобы проверка делалась без таких попыток, по факту того, есть соединение или нет. + к этому, надо факт появления/исчезновение интернет-соединения регистрировать в некий лог-файл. 2. При наличии соединения, периодически исполнять некий http-запрос Запуск для этого explorer.exe - неприемлем, т.к. захламляет экран и мешает нормальной работе на компьютере. |
Автор: | Kamikaze [ Пт окт 19, 2007 15:21 ] |
Заголовок сообщения: | |
Мож пригодится(?): у меня nncron рулит удаленный девайс телнетом: Код: 1. В nncron:
NoLog Time: */20 * * * * * Rule: HOST-EXIST: "172.22.0.20" NOT Action: StartIn: "TSE.BAT" 2. В tse.bat: @ECHO OFF tse.exe 172.22.0.10 ЛОГИН < rebooter.txt 3. В rebooter.txt: open 172.22.0.10 waitfor "D-Link Access Point login:" transmit "ЛОГИН^M" waitfor "Password:" transmit "^M" waitfor "D-Link Access Point wlan1 ->" transmit "reboot^M" close Т.е. каждые 20 мин в случае исчезновения пинга на удаленный Access Point(172.22.0.20) nncron запускает утилитку TSE (Telnet Script Executor) с соответствующими параметрами и перегружает центральный Access Point(172.22.0.10) |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |