Информация
Настройка
Новости
Контакты
Новинка
Распродажа
Оплата
Доставка
Загрузки
  • Прошивки
    • WinBox
    • RouterOS
    • Мобильные приложения MikroTik
    • Архив
  • Changelogs
  • RouterOS
  • Мобильные приложения MikroTik
  • Архив
Форум
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
    info@mikrotik.moscow
    +7 495 320-55-52
    Заказать звонок
    Mikrotik.moscow
    Каталог
    • Акции
      Акции
    • Маршрутизаторы
      Маршрутизаторы
    • Коммутаторы
      Коммутаторы
    • Радиомосты и уличные точки доступа
      Радиомосты и уличные точки доступа
    • Wi-Fi для дома и офиса
      Wi-Fi для дома и офиса
    • LTE/5G
      LTE/5G
    • Powerline адаптеры
      Powerline адаптеры
    • IoT устройства
      IoT устройства
    • Оборудование 60 ГГц
      Оборудование 60 ГГц
    • Материнские платы RouterBOARD
      Материнские платы RouterBOARD
    • Корпуса
      Корпуса
    • Интерфейсы
      Интерфейсы
    • SFP/QSFP трансиверы
      SFP/QSFP трансиверы
    • Аксессуары
      Аксессуары
    • Антенны
      Антенны
    • Архив
      Архив
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Скачать WinBox Скачать Прошивки Форум > RouterOS Форум > SwOS Форум > Железо
    Mikrotik.moscow
    Каталог
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Mikrotik.moscow
    Телефоны
    +7 495 320-55-52
    Заказать звонок
    0
    0
    0
    Mikrotik.moscow
    • +7 495 320-55-52
      • Назад
      • Телефоны
      • +7 495 320-55-52
      • Заказать звонок
    • info@mikrotik.moscow
    • г. Москва, ул. Бакунинская, 84
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной


    • Кабинет
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    RouterOS
    Можно ли отправлять почту, когда появляется новый файл?

    Можно ли отправлять почту, когда появляется новый файл?

    Форумы: RouterOS, Аппаратное обеспечение, SwOS, Обратная связь, Объявления, Сторонние инструменты
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Можно ли отправлять почту, когда появляется новый файл?, RouterOS
     
    David1234
    Guest
    #1
    0
    18.12.2013 15:51:00
    Привет! У меня подключено устройство, которое отправляет файл log.txt на RB по FTP. Как мне написать скрипт, чтобы он отправлял файл мне по почте каждый раз, когда он копируется? Как сделать так, чтобы скрипт "выбирал" самый последний созданный файл и потом переходил к следующему, и так далее? Я пытался получить имя файла с помощью этой команды: :put [/file get [find where creation-time=dec/18/2013 15:45:48] name] но не находит файл… (хотя он у меня есть). Что я делаю не так? Спасибо!
     
     
     
    skot
    Guest
    #2
    0
    18.12.2013 17:09:00
    Файл переименовывается? (И новый файл затирает старый?) Или ты проверяешь все файлы и присылаешь только самый последний? Если в строке есть пробелы, не забудь заключить их в кавычки: :put [/file get [find where creation-time=“dec/18/2013 15:45:48”] name ]
     
     
     
    David1234
    Guest
    #3
    0
    19.12.2013 12:57:00
    Имя файла меняется в зависимости от времени создания, например: FTP_2013-12-18-_14-41-55_142.log FTP_2013-12-18-_14-42-02_632.log. Если у меня 10 файлов с разными датами создания, как сделать так, чтобы он каждый раз отправлял мне самый старый файл, который он еще не отправил? Давай приведу пример: у меня 10 файлов с разными именами и датами создания. Мне нужно знать, когда он последний раз отправлял файл – тогда это сохраняется в переменной “old_time”, и дальше скрипт будет перебирать все файлы, пока не найдёт файл с более поздней датой создания, отправлять его и менять “old_time”. Скрипт будет запускаться каждый 1 минуту, один раз. Надеюсь, это понятно. Спасибо за помощь, то, что ты сказал про кавычки, помогло – так я могу вручную посмотреть, какой файл последний, и отправить его:

    global new
    [/file get [find where creation-time="dec/18/2013 17:39:45"] name];
    :log warning "New file";
    tool e-mail send to="MyEmail@gmail.com" subject="LOG file " tls=yes from=Unit1" body="lof file" file=$new;
    :log warning "E-mail send";
    :log warning "************";
     
     
     
    David1234
    Guest
    #4
    0
    22.12.2013 11:55:00
    Вот что я пока сделал: решил запускать по номеру файла и всегда смотреть содержимое файла номер 0 и сравнивать его с файлом с именем LastFile.txt.

    :global new [/file get number=0 name];
    :global old [/file get Last/LastFile.txt content];
    if ($old=$new ) do={:log warning message="No need to send" ;set old ($new ); file set [file find name=Last/LastFile.
    txt] contents=$new ;/file remove [find name=$new]} else={:log warning message="NEED To SEND MAIL!!!!!!";/system script run mail; file set [find name=Last/LastFile.txt] contents=$new ; /file remove [find name=$new]}

    Но это не всегда работает. У меня есть 10 файлов, и я всегда получаю сообщение “No need to send”. Почему так? Еще, когда я запускаю команду вручную, по одному файлу, всё работает…

    Thanks
     
     
     
    skot
    Guest
    #5
    0
    25.12.2013 00:38:00
    Вот как бы я это сделал. Этот скрипт сохраняет "временную метку" в поле комментария расписания (чтобы она сохранилась после перезагрузки, чего не сделает глобальная переменная). Он получает значения даты и времени из комментария, а затем проверяет все файлы "FTP…log" на предмет наличия более новых, и отправляет электронное письмо, если таковые найдены. Убедитесь, что вы изменили первую строку, чтобы она соответствовала расписанию, в котором вы хотите сохранить переменную. Я адаптировал этот скрипт из другого скрипта, найденного здесь: http://forum.mikrotik.com/t/compare-dates/53609/1 :local scheduleName “checkFTPlogs” :local months {“jan”;“feb”;“mar”;“apr”;“may”;“jun”;“jul”;“aug”;“sep”;“oct”;“nov”;“dec”} :local toggle false /file :foreach i in=[find name~“^FTP.+log”] do={ :local current [/system scheduler get [find name=“$scheduleName”] comment] :local cyr [:pick $current 7 11] :local cmo [:find $months [:pick $current 0 3]] :if ($cmo < 10) do={ :set cmo (“0” . $cmo); } :local cday [:pick $current 4 6] :local chr [:pick $current 12 14] :local cmin [:pick $current 15 17] :local csec [:pick $current 18 20] :local currentDate ($cyr.$cmo.$cday.$chr.$cmin.$csec) :local new [get $i creation-time] :local nyr [:pick $new 7 11] :local nmo [:find $months [:pick $new 0 3]] :if ($nmo < 10) do={ :set nmo (“0” . $nmo); } :local nday [:pick $new 4 6] :local nhr [:pick $new 12 14] :local nmin [:pick $new 15 17] :local nsec [:pick $new 18 20] :local newDate ($nyr.$nmo.$nday.$nhr.$nmin.$nsec) :if ($newDate > $currentDate) do={ :set toggle true /system scheduler set [find name=“$scheduleName”] comment=“$new” } } :if ($toggle = true) do={ :log warning message=“NEED To SEND MAIL!!!” /system script run mail }
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры