Administrator Самуил Арсов Posted November 17, 2014 Administrator Report Share Posted November 17, 2014 Безпроблемно получавам резултатите в лога по този начин както си е в уикито: <thead> <tr> <th>time</th> <th>topics</th> <th>message</th> </tr> </thead> <tbody><?php $Entries = $client->sendSync( new RouterOSRequest('/log/print') )->getAllOfType(RouterOSResponse::TYPE_DATA); foreach ($Entries as $entry) { ?> <tr> <td><?php echo $entry('time'); ?></td> <td><?php echo $entry('topics'); ?></td> <td><?php echo $entry('message'); ?></td> </tr><?php } ?> </tbody> но искам да филтрирам резултата само от dhcp сървъра, подобно на терминала: /log print where topics~"dhcp" Доколкото търсих информация в API няма "where" и увиснах до тук https://itservice-bg.net Link to comment Share on other sites More sharing options...
Administrator 111111 Posted November 17, 2014 Administrator Report Share Posted November 17, 2014 За логовете може да ползваш добрата стара лог система на отдалечена машина Харесай поста ^^^ Форумът е за взаимопомощ а не за свършване на чужда работа ɹɐǝɥ uɐɔ noʎ ǝɹoɯ ǝɥʇ 'ǝɯoɔǝq noʎ ɹǝʇǝınb ǝɥʇ Link to comment Share on other sites More sharing options...
Administrator Самуил Арсов Posted November 17, 2014 Author Administrator Report Share Posted November 17, 2014 Не разбрах точно какво имаш впредвид, но имам задача на един съпорт да му направя страничка за мониторинг на dhcp сървъра. Направих такава на dhcp lease, след това вкарах vlan-а на който е сървъра в bridge и листнах мак адресите на хостовете от него, сега остана да и направя и кратка история на dhcp лога кой кога е получавал адрес. По принцип тяхната система си има билинг в който ги има тези неща но от една страна не са подредени в табличка и от друга не е нужно всички да имат достъп до билинга (има си каса за това) Всичко това естественно го правя с routeros api на отдалечен сървър. На мен логове не ми трябват, от години съм свикнал да работя в терминал и не си падам много по цъкане с мишката когато търся някоя опция, предпочитам TAB да ми ги изписва. Мисля, че до тук страничката се получи добре, просто се запънах на dhcp лога и не намерих нищо в Интернет по въпроса с "where" което да ми реши проблема .. https://itservice-bg.net Link to comment Share on other sites More sharing options...
Administrator 111111 Posted November 17, 2014 Administrator Report Share Posted November 17, 2014 отдалечения лог е силно терминално *nix базирано http://wiki.mikrotik.com/wiki/Manual:System/Log Харесай поста ^^^ Форумът е за взаимопомощ а не за свършване на чужда работа ɹɐǝɥ uɐɔ noʎ ǝɹoɯ ǝɥʇ 'ǝɯoɔǝq noʎ ɹǝʇǝınb ǝɥʇ Link to comment Share on other sites More sharing options...
Administrator Самуил Арсов Posted November 17, 2014 Author Administrator Report Share Posted November 17, 2014 (edited) Да, знам какво е Друго имах впредвид под неразбирам а именно какво общо има с api ? Що се отнася до терминала имам един прост скрипт през ssh с който правя backup на рутери и сървъри с sshpass и rsync: #!/bin/bash DATE=$(date +"%m-%d-%Y") echo 'R1' && sshpass -p password ssh -p 22222 admin@93.155.XX.XX 'export compact' > /var/www/html/files/R1-$DATE.txt sshpass -p password rsync -avzh --delete -e ssh root@93.155.XX.XX:/ --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found} /backup/hosting Задачата ми е да сглобя една страничка за мониторинг на php + routeros api и мисля да се придържам към нея иначе благодаря за вниманието Edited November 17, 2014 by samyil https://itservice-bg.net Link to comment Share on other sites More sharing options...
Administrator 111111 Posted November 17, 2014 Administrator Report Share Posted November 17, 2014 Не знам дали ще ти е от полза /ip dhcp-server lease print detail там има Flags: X - disabled, R - radius, D - dynamic, B - blocked 0 address=172.16.28.5 mac-address=E0:хх:хх:хх:54:3C client-id="1:e0:хх:хх:хх:54:3c" address-lists="" server=DHCP SERVER dhcp-option="" last-seen=6w1d23h34m24s host-name="хххххх" last-seen= стойността не можеш ли да я ползваш? в комбинация с print active и стойността EXPIRES-AFTER за да следиш активността Харесай поста ^^^ Форумът е за взаимопомощ а не за свършване на чужда работа ɹɐǝɥ uɐɔ noʎ ǝɹoɯ ǝɥʇ 'ǝɯoɔǝq noʎ ɹǝʇǝınb ǝɥʇ Link to comment Share on other sites More sharing options...
boen_robot Posted November 17, 2014 Report Share Posted November 17, 2014 (edited) В API има еквивалент на "where", под формата на така наречените "Заявки" (Query). Има обаче един проблем, който е проблем на протокола... Нямаш регулярни изрази, т.е. няма еквивалент на topics~"dhcp". От MikroTik не само, че са наясно с това, ами и отказват да го реализират, по глупави според мен причини. Ако знаеш цялостната стойност на "topics", можеш да използваш "=", т.е. примерно topics="dhcp,info", или с API: new RouterOSRequest('/log/print', RouterOSQuery::where('topics', 'dhcp,info'))(за повече подробности, виж тук) Ако задължително ти трябва по регулярен израз да филтрираш, това може да стане само в рамките на PHP. T.e. ти си вземаш целия лог, и имаш вътре във foreach if (preg_match('/dhcp/', $entry('topics'))) { //"topics" съдържа "dhcp" } Edited November 17, 2014 by boen_robot 1 PHP - Net_RouterOS Link to comment Share on other sites More sharing options...
Administrator Самуил Арсов Posted November 18, 2014 Author Administrator Report Share Posted November 18, 2014 <?php $Entries = $client->sendSync( new RouterOSRequest('/log/print', RouterOSQuery::where('topics', 'dhcp,info')) )->getAllOfType(RouterOSResponse::TYPE_DATA); foreach ($Entries as $entry) { ?> Танкс, проработи но с една скоба повече https://itservice-bg.net Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now