скриптинг — MikroTik PHP API: добавьте или удалите, если существует IP-адрес> Брандмауэр> Список адресов

Мне нужна помощь с PHP API для добавления адреса в список адресов, если он еще не существует, и удаления, если он существует.

Я использую routeros_api.class.php из https://wiki.mikrotik.com/wiki/API_PHP_class.

Я пробовал это, часть удаления работает правильно, но не проверяет, существует ли она сначала, прежде чем удалить, но первая часть кода нет, она просто зависает при запуске.

if ($datalimitexceeded == "1") {
$API->write('/ip/firewall/address-list/print', false);
$API->write('?comment='.$comment, false);
$API->write('?address='.$site_ip, false);
$READ = $API->read(false);
$ARRAY = $API->parseResponse($READ);
if(count($ARRAY)>0){
$API->write("/ip/firewall/address-list/add",false);
$API->write("=.id=".$ARRAY[0]['.id'],false);
$API->write('=list='.$list,false);
$API->write('=address='.$site_ip,false);
$API->write('=comment='.$comment,true);
$READ = $API->read(false);
$ARRAY = $API->parseResponse($READ);
} else {
$API->write("/ip/firewall/address-list/add",false);
$API->write('=list='.$list,false);
$API->write('=address='.$address,false);
$API->write('=comment='.$comment,false);
$READ = $API->read(false);
$ARRAY = $API->parseResponse($READ);
}

0

Решение

Исправил и разобрал мою проблему!

Вот мой рабочий код:

if ($datalimitexceeded == "1") {
$API->write('/ip/firewall/address-list/print',false);
$API->write('?comment='.$comment,true);
$READ = $API->read(false);
$ARRAY = $API->parseResponse($READ);
if(count($ARRAY)>0){
$API->write('/ip/firewall/address-list/set',false);
$API->write("=.id=".$ARRAY[0]['.id'],false);
$API->write('=disabled=no',true);
$READ = $API->read(false);
$ARRAY = $API->parseResponse($READ);
} else {
$API->write('/ip/firewall/address-list/add',false);
$API->write('=list='.$list,false);
$API->write('=address='.$site_ip,false);
$API->write('=comment='.$comment,true);
$READ = $API->read(false);
$ARRAY = $API->parseResponse($READ);
}
}

if ($datalimitexceeded == "0") {
$API->write('/ip/firewall/address-list/print',false);
$API->write('?comment='.$comment,true);
$READ = $API->read(false);
$ARRAY = $API->parseResponse($READ);
if(count($ARRAY)>0){
$API->write('/ip/firewall/address-list/remove', false);
$API->write('=.id=' . $ARRAY[0]['.id']);
$READ = $API->read(false);
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]