Всем привет!
При вводе команды /ppp active print мы получаем вывод состоящий из нескольких столбцов таких как NAME, SERVICE, Address и тд. Может ли микротик сделать вывод например только имен?
Используя команду :put [/ppp active get [find name=user1] name ] я получу вывод одной строкой user1, а теперь, как сделать так чтобы вышел список абсолютно всех пользователей и может ли микротик так сделать вообще?
При попытке ввода такой команды :put [/ppp active get [find name!=all] name ] (где ALL это не существующее имя) получаю ошибку: invalid internal item number
Вывод списка sstp подключений
- podarok66
- Модератор
- Сообщения: 4402
- Зарегистрирован: 11 фев 2012, 18:49
- Откуда: МО
Через foreach всё прекрасно выводится. Вопрос, зачем это нужно?
Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
-
- Сообщения: 3
- Зарегистрирован: 27 апр 2020, 18:20
Нужно это для того чтобы проинформировать пользователей которые подключаются к микроту по sstp/pptp о том что их VPN подключение настроенное на домашних ПК скоро перестанет работать и чтобы они следовали некой инструкции. Они авторизуются через Radius сервер, учетки берутся из АД. В общем вытащив список имен мне будет достаточно просто прилепить к ним @company.com и я получу их почтовые адреса.
На микроте в данный момент +- 400 активных клиентов.
Я был уверен что при помощи функции GET я без проблем вытащу весь список, но я так и не понял почему указав конкретное имя команда срабатывает, а если указываю "вывести всех", то выпадает ошибка....или это баг микрота?
- podarok66
- Модератор
- Сообщения: 4402
- Зарегистрирован: 11 фев 2012, 18:49
- Откуда: МО
Нет, ваша конструкция find name!=all читается - найти имя не равное всем. В RouterOs такое не прокатит. Слишком урезанная командная строка. Поэтому foreach. В итоге после цикла будет список имён. У меня нет сейчас такой возможности проверить, но в первом приближении будет что-то типа
Код: Выделить всё
:foreach r in=[ppp active find name!=""] do={:put [ppp active get $r name]}
Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
-
- Сообщения: 3
- Зарегистрирован: 27 апр 2020, 18:20
Благодарю за развернутый ответ. Завтра попробую ваш совет использовать данный цикл. На данный момент я просто написал не большой скрипт на питоне и выдернул все учетки тем самым решив свою проблему )))podarok66 писал(а): ↑28 апр 2020, 12:14Нет, ваша конструкция find name!=all читается - найти имя не равное всем. В RouterOs такое не прокатит. Слишком урезанная командная строка. Поэтому foreach. В итоге после цикла будет список имён. У меня нет сейчас такой возможности проверить, но в первом приближении будет что-то типаКонечно, область работы скрипта не стоит описывать таким выражением, лучше зацепится за что-то другое. Но, как я уже говорил, не на чем это проверить. Уже в теле цикла в принципе всё нормально. Естественно, вместо put лучше загонять имена в переменную, либо сразу обрабатывать как нужно. Но раз вы там такое количество обслуживаете, думаю что там дальше, сообразите.Код: Выделить всё
:foreach r in=[ppp active find name!=""] do={:put [ppp active get $r name]}
- podarok66
- Модератор
- Сообщения: 4402
- Зарегистрирован: 11 фев 2012, 18:49
- Откуда: МО
Ну так это же отлично. Не важно, через какой переулок добираться, главное попасть домой)))sektor1100 писал(а): ↑28 апр 2020, 23:05 На данный момент я просто написал не большой скрипт на питоне и выдернул все учетки тем самым решив свою проблему )))
Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...