Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Новинка
Распродажа
Новости
Доставка
Оплата
Загрузки
  • Прошивки
    • 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
     
    dana1975
    Guest
    #1
    0
    05.02.2018 08:55:00
    Я хочу записать скрипт в файл. Я задал переменную $contents и хочу сохранить её в текстовый файл:

    local updown  
    local up  
    local down  
    local totaldown  
    local name  
    local contents  

    foreach counter in=[/queue simple find] do={
       set $updown [/queue simple get $counter bytes]
       set $up [:pick $updown 0 ([:find $updown "/"])]
       set $down [:pick $updown ([:find $updown "/"]+1) 255]
       set $totaldown ($up + $down)  
       set $name [/queue simple get $counter name]
       # put ("Name", $name, "Upload/Download", $updown, " Upload:", $up, " Download:", $down, " Total Download:", $totaldown)  
       set $contents ("Name", $name, "Upload/Download", $updown, " Upload:", $up, " Download:", $down, " Total Download:", $totaldown)  
    }  

    То есть я создаю переменную $contents с нужными данными, а теперь нужно как-то вывести её в текстовый файл.
     
     
     
    dana1975
    Guest
    #2
    0
    01.03.2018 06:37:00
    хоть какой-нибудь ответ!!
     
     
     
    sebastia
    Guest
    #3
    0
    01.03.2018 20:08:00
    Привет (это для всего скрипта: execute script=“…” file=) print … file= https://wiki.mikrotik.com/wiki/Manual:Scripting#print_parameters
     
     
     
    dana1975
    Guest
    #4
    0
    02.03.2018 06:51:00
    Я использовал команду /file set filename contents=$contents, но она не сработала. Пожалуйста, исправь мой скрипт, если можешь.
     
     
     
    sebastia
    Guest
    #5
    0
    02.03.2018 21:23:00
    Это вызов? Кстати, ты уже пробовал это предложение?
     
     
     
    dana1975
    Guest
    #6
    0
    03.03.2018 04:30:00
    команда print file=filename у меня не работает
     
     
     
    dana1975
    Guest
    #7
    0
    04.03.2018 07:28:00
    print file=filename → экспортирует только содержимое скрипта, мне нужно вывести результат выполнения скрипта /system script run scriptname → нельзя экспортировать результат в файл, это решается командой {:local a [/system script get script1 source]; execute script=$a file=$fname1}
     
     
     
    bluecrow76
    Guest
    #8
    0
    12.04.2020 07:51:00
    Отличное решение!!! Сегодня вечером оно меня выручило. Я написал скрипт, который выводит статус netwatch в формате CSV, но хотел сохранить результат в файл для удобной загрузки или отправки по почте. Для этого нужно два скрипта, как показано ниже. Первый — скрипт, который выполняет основную работу. Второй запускает первый скрипт и сохраняет его вывод. Проверено и работает на версии v6.46.4.

    Скрипт: netwatches-to-csv  
    # MSHARP 20200412  
    # Выводит статусы netwatch в формате CSV. Позволяет быстро импортировать в Excel  
    {  
    # выводим заголовок  
    :local message "\"host\",\"status\",\"since\",\"disabled\",\"comment\""  
    :put $message  
    # выводим каждый netwatch  
    :foreach n in=[/tool netwatch find] do={
    :local comment [/tool netwatch get $n comment]
    :local host [/tool netwatch get $n host]
    :local status [/tool netwatch get $n status]
    :local since [/tool netwatch get $n since]
    :local disabled [/tool netwatch get $n disabled]
    :local message "\"$host\",\"$status\",\"$since\",\"$disabled\",\"$comment\""  
    :put $message  
    }  
    }  

    Скрипт: netwatches-to-csv_save-output-to-txt-file  
    # MSHARP 20200412  
    # Сохраняет вывод скрипта netwatches-to-csv в текстовый файл  
    # Решение найдено по ссылке:  
    # http://forum.mikrotik.com/t/send-script-output-to-a-file/116250/1  
    {  
    :local a [/system script get netwatches-to-csv source]
    :local outFile "netwatches-to-csv.csv"  
    execute script=$a file=$outFile  
    }
     
     
     
    brg3466
    Guest
    #9
    0
    22.09.2020 23:19:00
    @bluecrow76 Могу узнать, какая у вас версия RouterOS? Похоже, что "execute script=$a file=$filename" работает только в ранних версиях, таких как 6.45.9, а на 6.47.3 уже не работает.
     
     
     
    bluecrow76
    Guest
    #10
    0
    24.09.2020 01:13:00
    Я точно не помню, какую версию я тогда использовал, когда опубликовал это в апреле, но, скорее всего, это была стабильная версия на тот момент. Чтобы проверить, я просто запустил код ровно так, как писал в предыдущем посте, на CHR версии 6.47.4 — всё работает как надо. Единственный совет — следите, чтобы в названиях файлов не было пробелов, если вы явно не берёте переменные в кавычки. Ниже приведён экспорт скрипта (команда «/system scripts export») именно с CHR, на которой я его запускал.

    # sep/24/2020 01:07:15 by RouterOS 6.47.4  
    # software id =  

    /system script  
    add dont-require-permissions=no name=netwatches-to-csv policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#_MSHARP 20200412  
    # Выводим статусы netwatch в формате CSV. Позволяет быстро импортировать данные в Excel  
    {  
    # вывод заголовка  
    :local message \"host\",\"status\",\"since\",\"disabled\",\"comment\"  
    :put $message  
    # выводим каждый netwatch  
    :foreach n in=[/tool netwatch find] do={
       :local comment [/tool netwatch get $n comment]
       :local host [/tool netwatch get $n host]
       :local status [/tool netwatch get $n status]
       :local since [/tool netwatch get $n since]
       :local disabled [/tool netwatch get $n disabled]
       :local message \"$host\",\"$status\",\"$since\",\"$disabled\",\"$comment\"  
       :put $message  
    }  
    }"

    add dont-require-permissions=no name=netwatches-to-csv_save-output-to-txt-file policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#_MSHARP 20200412  
    # Сохраняем вывод скрипта netwatches-to-csv в txt-файл  
    # Решение найдено по ссылке ниже:  
    # https://forum.mikrotik.com/viewtopic.php?t=130448#p645867  
    {  
    :local a [/system script get netwatches-to-csv source]
    :local outFile "netwatches-to-csv.csv"  
    execute script=$a file=$outFile  
    }"
     
     
     
    SiB
    Guest
    #11
    0
    24.09.2020 18:27:00
    RouterOS 7.1beta2 выполняет команду "/interface lte cell-monitor lte1 max-age=1m duration=1m" с сохранением результата в файл "stdout.txt"
     
     
     
    brg3466
    Guest
    #12
    0
    25.09.2020 16:14:00
    @bluecrow76 @sib, спасибо за ответ! Наконец-то понял, почему раньше не сработало. В "execute script=$a …" $a должен быть выражением, а не именем скрипта.
     
     
     
    SiB
    Guest
    #13
    0
    25.09.2020 16:42:00
    Я провожу тестирование глобальной переменной, чтобы увидеть результаты в WinBox и точно понять, что именно будет выполнено с $a.

    global a [/interface lte cell-monitor lte1 max-age=1m duration=10s] > ← выполнить команду сейчас в CLI, $a сохраняется как пустая
    global a {/interface lte cell-monitor lte1 max-age=1m duration=10s} > ← это создаёт $a = false  
    global a [ execute {/interface lte cell-monitor lte1 max-age=1m duration=10s } ] > ← это создаёт $a со значением в шестнадцатеричном ID
    global a do={/interface lte cell-monitor lte1 max-age=1m duration=10s } > ← это создаёт функцию с неправильным синтаксисом, сообщение в final.txt, работает только в CLI как:  
    $a  
    global a "/interface lte cell-monitor lte1 max-age=1m duration=10s" > ← так сохраняется сырой вариант в переменной, который работает в фоне при выполнении окончательного теста через execute $a file="stdout.txt"  

    Проверка проводилась в System > Script > Environment.
     
     
     
    msatter
    Guest
    #14
    0
    25.09.2020 23:55:00
    Огромное-преогромное спасибо! Долго искал способ записывать БОЛЬШИЕ файлы. Это работает и в версии ROS 6.4X. Код удобнее тестировать в терминале, а здесь я сохранил очень компактный импортный файл для списка адресов: :gone Скрипт – функция – комментарий вверху файла, думаю, даже определю конкретную нижнюю строку и позже сделаю полный вариант. $addAddress – функция, которая записывает адрес в список адресов при импорте. Обновление: всё запустил, было сложно понять, как вставить код просто как текст, чтобы не проверялся синтаксис. Очень круто, и мне приятно, что теперь я могу создавать бэкап/исходники, которые можно использовать на других роутерах без лишней возни с экспортом. Теперь надо подумать, как переименовать созданный файл с .rsc.txt в .rsc на диске. Скоро создам новую тему по скриптам, чтобы начать создавать экосистему для создания и распределения списков адресов компактно и эффективно.
     
     
     
    Страницы: 1
    Читают тему
    +7 495 320-55-52
    info@mikrotik.moscow
    Электрозаводская, Бауманская
    Москва, ул. Бакунинская, 84с21
    Конфиденциальность Оферта
    © 2025 «Mikrotik.Moscow»
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры