En la primera parte, explicamos cual podría ser su uso y para que sirve.
Ahora vamos a explicar como se configura el API en pocos pasos, con un poco de PHP y usando las clases creadas por Denis Basta. (version 1.3 o 1.4), con apenas un minimo cambio hecho para que la clase «connect» permita pasar ademas el numero de puerto del RouterOS como parametro.
Yo estoy familiarizado con programar en PHP pero para el que no, pueden hacerlo con el lenguaje que desee. En la Wiki de Mikrotik podran encontrar ejemplos para:
- Delphi
- C, C usando winsock
- C++, C Sharp
- Flash Actionscript 3
- Ruby on rails
- VB .NET
- Java
- NodeJS
- Python3
- Perl
- VB
- PHP
Paso 1: Configura tu RouterOS
a) Habilitar el servicio API.
desde IP > Services. Seleccionas la fila que dice «api» y la habilitas, luego doble click sobre ella para editar. Puedes asignarle el puerto que quieras, pero por defecto usa el 8728 tcp. Si te gusta tener todo ecualizado podrías agregarlo en los mangles para darle QoS. Finalmente donde dice «Avaliable From» es la direccion IP desde donde estara el API corriendo. En nuestro caso, como usaremos PHP puede ser el servidor Apache. (sigue los pasos de la imagen).
b) Crear un grupo
Para darle seguridad necesitamos crear un usuario y un grupo nuevo dentro del RouterOS donde queremos ordenar nuestras tareas diarias. Para ello vamos a «System > Users > Groups» y presionamos en el icono «+». En esta ventana simplemente escribimos el nombre del grupo, (para este ejemplo yo le puse «tugrupoapi») y elegi las politicas «read, write, api». Damos click en OK
c) Crear un usuario
Luego de crear el Grupo, nos movemos a la pestaña Users como esta en la imagen a continuacion. Presionamos el icono «+» para crear un usuario nuevo.
Name: aqui escribiremos nuestro nuevo nombre de usuario: Ejemplo blog.tech-nico.com, (puedes crear el tuyo).
Group: elegimos el grupo «tugrupoapi» (ver el punto «b»),
Address allowed: Es la IP que tiene permitido acceder a nuestro RouterOS a través del API. «El apache server en nuestro caso»,
Password: tipeamos nuestro password, asegurate que sea fuerte.
Finalmente click en el boton «OK».
Paso 2: Crear un script para testear el acceso: conectar_test_api.php
<?php require_once(‘api_mt_include2.php’); ?>
<?php
$ipRouteros=»200.20.30.40″; // tu RouterOS.
$Username=»blog.tech-nico.com»;
$Pass=»tupassword»;
$api_puerto=8728;$API = new routeros_api();
$API->debug = false;
if ($API->connect($ipRouteros , $Username , $Pass, $api_puerto)) {
$API->write(«/system/ident/getall»,true);
$READ = $API->read(false);
$ARRAY = $API->parse_response($READ);
$name = $ARRAY[0][«name»];
if(count($ARRAY)>0){ // si esta conectado
$API->write(«/system/licen/getall»,true);
$READ = $API->read(false);
$ARRAY = $API->parse_response($READ);
$nlevel = $ARRAY[0][«nlevel»];
$API->write(«/system/reso/getall»,true);
$READ = $API->read(false);
$ARRAY = $API->parse_response($READ);
$cpu = $ARRAY[0][«cpu»];
$cpu_frequency = $ARRAY[0][«cpu-frequency»];
$arquitectura = $ARRAY[0][«board-name»];
$API->write(«/system/pack/getall»,true);
$READ = $API->read(false);
$ARRAY = $API->parse_response($READ);
$version = $ARRAY[0][«version»];echo ‘<img src=»icon_led_green.png» /> ’;
echo «<strong>».$name.»(» .$arquitectura. «)</strong> »;
echo «v:» . $version. « »;
echo «level:» . $nlevel . « »;
echo $cpu.»(«.$cpu_frequency.» Mhz.)»;
}else{ //el usuario esta of line
echo ‘<img src=»icon_led_grey.png» /> ’.$ARRAY[‘!trap’][0][‘message’];
}}else{
echo «<font color=’#ff0000′>La conexion ha fallado. Verifique si el Api esta activo.</font>»;
}
$API->disconnect();
?>
Paso 3: Editamos las lineas que dicen:
$ipRouteros=»200.20.30.40″; // tu RouterOS.
$Username=»blog.tech-nico.com»;
$Pass=»tupassword»
$api_puerto=8728;
Paso 4: Finalmente subimos por FTP los archivos a nuestro servidor Web y ejecutamos en el navegador el archivo conectar_test_api.php;
Si todo salio bien, vamos a ver una pantalla parecida a la de arriba. Lo que hicimos fue loguearnos mediante el API a nuestro servidor, y luego traer el nombre «Identity», la plataforma, la version del ROS, que licencia tiene instalada, etc.
Descarga aqui todos los archivos de este ejemplo.
Como veran, este seria el primer paso para comenzar a programar tus scripts. Ya teniendo esto funcionando vamos a poder realizar varios ejemplos que voy ir posteando en mi tiempo libre.
Cualquier cosa comenten que les respondo enseguida.
API MIKROTIK – Como optimizar tu administracion con un poco de PHP (introduccion)
API MIKROTIK Tercera parte – Nuestro primer ejemplo (codigo abierto)
API MIKROTIK – Crear queues simples con PHP (con validacion)
_______________
Nicolas tech-nico.com/blog
Excelente amigo, espero con ancias los siguientes aportes que pudieras postear, por lo general uso mi iPhone (con una app llamada tiktool) para activar mis clientes y asi no encender el laptop, pero en esta app los comentarios de las ip-binding no se muestran y asi es q identifico mis clientes, mi modalidad es:
-Hotspot + amarre de mac del nanostation.
-DHCP de la mac del computador del cliente.
-Activo/Desactivo mis clientes activando o desactivando el ip-binding del cliente en cuestion.
-No uso login, en lugar de el login lo edite para que mostrara la pagina de suspencion del servicio. Porque si esta desactivado el ip-binding del cliente lo pasa de una vez a la pagina de login.
Gracias espero tomes en cuenta esta modalidad a ver si comienzas aportando ideas en este tema.
Nemox, muy bueno lo tuyo; estuve instalando el hotspot en un router que uso en el laboratorio y voy a comenzar a hacer algun ejemplo con lo tuyo. Asi que alegrate porque el proximo tutorial va dedicado a tu modalidad. Un saludo.
Pingback: API MIKROTIK Tercera parte – Nuestro primer ejemplo (codigo abierto) | Blog tech-nico.com
Hola amigo muy bueno tu aporte sobre todo muy gentil de tu parte. Como puedo hacer un control para mis clientes. Lo tengo de desta manera hotspot y dhcp . No amarro ips ni nada solo el login me gustaria hacer lo siguiente administrar los clientes agregar eliminar clientes y user profiles activar y desactivar al momento de capturar su pago. Espero haberme explicado saludos cordiales desde campeche mexico
Hola Sergio, gracias, aqui te pego el link de la tercera parte que creo que te puede ayudar mucho. http://www.tech-nico.com/blog/api-mikrotik-tercera-parte-nuestro-primer-ejemplo-codigo-abierto/ Espero que te sirva. Cualquier duda, me vuelves a escribir. Saludos.
Intente e intente mil veces y no me funciono para desabilitar un usuario
pero nada de nada
$ipRouteros=»192.168.1.1″; // tu RouterOS.
$Username=»api»;
$Pass=»api»;
$api_puerto=8728;
$API = new routeros_api();
$API->debug = false;
$API->connect($ipRouteros , $Username , $Pass, $api_puerto);
$API->write(«ip/hotspot/user/set/disable»,false);
de aqui en adelante probe las dos siguientes opciones:
$API->write(«=name=admin»,true);
$READ = $API->read(false);
$API->parse_response($READ);
print_r ($API);
Tambien probe
$API->write(«=.id=».$id,true);
$READ = $API->read(false);
$API->parse_response($READ);
print_r ($API);
Y solo me muestra en el log del mikroitk el inicio de sesion y el cierre mas no ejecuta ninguna accion
Agradeceria tu ayuda ya que lo que estoy haciendo es un programa que se auxilia con la base de datos para que en la fecha de corte lo corte automaticamente sin mi ayuda muchas gracias de antemano
Primero te recomendaria que sigas el tutorial de testeo de conexion:
http://www.tech-nico.com/blog/api-mikrotik-segunda-parte-usando-el-api-con-php/
Si eso te funciona, te pediria que modifiques en el codigo que posteaste la variable $API->debug = false; por $API->debug = true;
Y me muestres cual es el resultado.
Espero haberte sido de ayuda. Un gran saludo.
saludos amigo eh intentado varias veces y nada no activo el Api tengo mikrotik 5.20 siempre me dice
La conexion ha fallado. Verifique si el Api esta activo.
Warning: fclose() expects parameter 1 to be resource, boolean given in /home/soportem/public_html/test api/api_mt_include2.php on line 121
espero que me heches una manito
Manuel, al parecer el error que te arroja es de un comando que yo no escribi. Fijate que el error te esta diciendo que en la linea 121 tenes un problema con el fclose() ese comando sirve para cerrar un archivo de texto por ejemplo. No se que estas queriendo hacer pero ese comando no estaba entre mi codigo. Saludos.
saludos amigos gracias por responderme nose como llego esa linea de codigo a mi scritp modifique pero mira haora haora no muetra nada http://http://soportemlopez.com/testapi2/conectar_test_api.php espero tu ayuda att gracias
saludos consegi un codigo en wifi mikrotik y haora me dices esto…..
Connection attempt #1 to 200.20.30.40:8728… Connection attempt #2 to 200.20.30.40:8728… Connection attempt #3 to 200.20.30.40:8728… Connection attempt #4 to 200.20.30.40:8728… Connection attempt #5 to 200.20.30.40:8728… Error…
que podria ser tengo bloqueado el puerto 8728 o q ? y si es asi como lo desbloqueo
Manuel, la IP: 200.20.30.40 la puse como ejemplo, y de hecho no existe.. la invente para el post.
Por favor, volve a leer y mas precisamente en el paso 3 te explica que tenes que modificar los datos para poder conectar con tu routerOS. dale?
Hola tambien me sale ese error, no modifique nada en el codigo de la api esta tal cual lo descargue de tu web, sin embargo me aparece en el siguiente caso de ir de una pagina a otra, en resumen lo que tengo es: index.php menu.php info.php, cuando en el index.php logueo el router entra bien a menu.php, de ahi voy a info.php y sigue bien, pero cuando vuelvo a menu.php me sale ese error=Warning: fclose() expects parameter 1 to be resource, boolean given in /var/www/api/api_mt_include2.php on line 121
/**
* Disconnect from RouterOS
*
* @return void
*/
function disconnect()
{
fclose($this->socket);
$this->connected = false;
$this->debug(‘Disconnected…’);
}
AHI ESTA FCLOSE
Juan, por favor pasame un adjunto con los archivos así los miro. Ahi te escribo asi me respondes un mail. Slds.
saludos amigo nada Connection attempt #1 to 192.168.1.83:8728… Connection attempt #2 to 192.168.1.83:8728… Connection attempt #3 to 192.168.1.83:8728… Connection attempt #4 to 192.168.1.83:8728… Connection attempt #5 to 192.168.1.83:8728… Error… tengo la versiones mikrotik 3.30 instale la 5.20 y nada no es la versiones entonces que cual es el truco
Manuel, Conection attempt lo pone cuando no esta pudiendo entrar al servidor por esa IP y Puerto que le diste por varias razones:
Nico
Gracias Por tu aporte. tengo un problema . cuando quiero crear el grupo, no encuentro la opcion api, en la lista. termina en snif y sensitive… utilizo rb 433 con winbox v.4.11.
Trato de correr el test, pero no me devuelve nada de nada. instale apache2 y php5. No se si se deba a eso el error.
Saludos
Enrique
Hola Enrique, si mal no recuerdo, en la version 4.11 funciona igual. Aunque la opcion API no aparece en grupo, igualmente te deberia funcionar sin problemas. cambia la linea.
por
y te fijas que error arroja.!!
Luego tambien mira el log de tu RouterOS para ver si esta intentado acceder.
Un gran saludo.
Nico!
Hola estoy desarrollando una web para controlar el router ya logre hacer las conexiones sin problema insertar y eliminar usuarios y perfiles de hostpot tengo una duda muy particular espero me pueda ayuda…
de que manera mediante una pagina se puede enviar el usuario y password de hotspot al router y que me lo auntentifique para evitar que el usuario final no ingrese … ya intente modificar las paginas html del router pero no logro poder hacerlo … saludos…
No entiendo completamente a donde queres enviar el password. A que router queres enviar el usuario y contraseña?. Slds.
Tengo un routeador mikrotik mediante la API de .net desarrolle una pagina para crear usuarios dinamicamente haciendo una validacion previa en una base de datos como parte de una regla de negocio. una vez hecha la validacion escribo en el mikrotik el usuario y password mediante la API la dudo es como envio estas credenciales nuevas al hotspot de mikrotik … lo intente mediante las html que estan en el ftp pero no me funciona no se si exista una manera de hacerlo mediante la api tambien o algo asi … saludos
Hola!
Muchas gracias por el aporte! resulta muy util y no hay mucho en la web en español!
Tengo una consulta yo lo estoy realizando desde xampp la prueba asique como servidor apache puse «127.0.0.1» y lluego la pc tiene la ip 192.168.1.10 y el mk 192.168.1.1 colocando en el script la ip del mk y en el mk las ips de apache local no me funciona me da error 404. Si alguien tiene idea como se hace en xampp agradesco mucho sus aportes!
Gracias de antemano!
Laura, me alegra que te sirva. Error 404 significa «pagina no encontrada». Revisa la URL, aparentemente, no existe o bien esta mal escrita. Lo he probado con xampp y funciona perfecto. Levanta el apache?. Saludos.
Me arroja el mismo error que a Juan(13/09/2013) FClose, he activado todo como comentas, y me devuelve este error:
«[21-Jan-2014 16:33:03 UTC] PHP Warning: fclose() expects parameter 1 to be resource, boolean given in /home/sistma/public_html/apimt/api_mt_include2.php on line 121»
Alguna idea?
Gracias por los aportes
Gracias, era problema del cortafueros del router.
Me alegro que lo hayas resuelto Carlos.! Saludos desde La Pampa – Argentina.
que tal soy novato en php y he probado la api con tu codigo…por favor podrias decirme en que estoy mal…. me sale una lista de errores:::Notice: Undefined variable: _ in C:\wamp\www\test_api\api_mt_include2.php on line 296
Notice: Undefined offset: 0 in C:\wamp\www\test_api\api_mt_include2.php on line 88
Notice: Undefined variable: _ in C:\wamp\www\test_api\api_mt_include2.php on line 296
Notice: Undefined offset: 0 in C:\wamp\www\test_api\api_mt_include2.php on line 88
Notice: Undefined variable: _ in C:\wamp\www\test_api\api_mt_include2.php on line 296
Notice: Undefined offset: 0 in C:\wamp\www\test_api\api_mt_include2.php on line 88
Notice: Undefined variable: _ in C:\wamp\www\test_api\api_mt_include2.php on line 296
Notice: Undefined offset: 0 in C:\wamp\www\test_api\api_mt_include2.php on line 88
Notice: Undefined variable: _ in C:\wamp\www\test_api\api_mt_include2.php on line 296
Notice: Undefined offset: 0 in C:\wamp\www\test_api\api_mt_include2.php on line 88
La conexion ha fallado. Verifique si el Api esta activo.
Warning: fclose(): 7 is not a valid stream resource in C:\wamp\www\test_api\api_mt_include2.php on line 121
Lenin, has modificado algo del ejemplo que descargaste?. El codigo esta en pleno funcionamiento.
Definiste bien las variables de Usuario, Contraseña…. etc?.
Pingback: API MIKROTIK – (con php) – Indice general | Blog tech-nico.com
estoy tratando de hacer funcional este codigo pero no he podido…no tengo experiencia ni con apache ni con php…instale el wanpserver pero no se cual es la ip del apache para ponersela en el mikrotik..lo demas creo lo poder entender…espero alguin pueda darme una pista desde cero….por sus respuestas gracias…
Lenin, Cuando instalas WampServer la IP que se usa en su propia maquina es la del localhost: 127.0.0.1. (pero esa solo la vas a usar para probar tu aplicacion en el navegador). En este caso, hay que ver donde esta ubicado tu RouterOS, si estan en la misma subnet o si tu RouterOS esta en el lado WAN de tu red, entonces la IP de acceso es la IP que te asigna el ISP para navegar en internet. Ahora bien, podrias NO PONER LA IP, y te va a funcionar perfecto, PERO SIN SEGURIDAD SOBRE EL USUARIO.
ok…muchas gracias…pero muchas gracias probare lo que dice…
seguire haciendo mas pruebas… hasta que esto salga…
ya funciona perfecto…
ahora voy a probar algunos codigos que pone a disposicion y a tratar de adecuarlo a mi router…gracias excelente ayuda…
Hola, quisiera que me ayudaras, tengo un pequeño inconveniente. Ya hice lo del sitio, me funciona muy bien de forma local, ahora lo he subido en un servidor aparte, el Mikrotik tiene una IP pública para el puerto WAN, pero me aparece este error «La conexion ha fallado. Verifique si el Api esta activo.» Estoy seguro que debe ser algún problema del firewall pero no se como resolverlo, creo que está bloqueado el acceso al puerto WAN.
Hola, le pusiste Direccion IP a Services – API ?. Al usuario que accede al API tambien le pusiste IP?.
Si es asi… quitalas… y prueba de nuevo. Verifica que el puerto del API sea el mismo que esta configurado en ambos lados.. PHP y ROUTEROS. Y tambien verifica que el puerto este abierto en el ROUTEROS.
Saludos. Nicolas.
Ya les quité las IP tanto al servicio API como al usuario de mikrotik, ya verifiqué los puertos y si son los mismos en los dos lados. Me puedes ayudar con lo de abrir el puerto.
Si, en IP-Firewall agregas la siguiente regla:
Chain: input
Protocol: tcp
Dst-port: NROpuertoAPI
Action: accept
Y luego arrastras la regla hasta el inicio del firewall.
Ya lo hice, pero igual no funciona.
Hola nuevamente he tratado de resolver el problema que tengo con la conexión entre mi sitio y routeros, hice que me mostrara los mensajes de error y obtengo esto.
Connection attempt #1 to 190.152.76.254:8728… – – –
Connection attempt #2 to 190.152.76.254:8728… – – 110 – Connection timed out
Connection attempt #3 to 190.152.76.254:8728… – – 110 – Connection timed out
Connection attempt #4 to 190.152.76.254:8728… – – 110 – Connection timed out
Connection attempt #5 to 190.152.76.254:8728… – – 110 – Connection timed out
Lo que comprendo de este mensaje es que la conexión al servidor es muy lenta.
Alguien me podría ayudar con esto por favor, alguna sugerencia.
El RouterOS esta accesible al menos el puerto me da abierto. Donde tenes alojados los archivos? en un hosting?. Espero que no esten cerrando las peticiones salientes desde el hosting. Puedo ver el codigo que estas usando?.. pasalo al formulario de contacto. Slds.
Los tengo alojados en un hosting, El código es el mismo que publicaste solo he cambiado los datos de conexión. Otra cosa, de forma local si funciona perfectamente el código, cuando lo subo al hosting me da ese problema.
También he modificado estas dos variables en el API que publicaste pero sigue sin funcionar.
var $delay = 10; // Delay between connection attempts in seconds
var $timeout = 10; // Connection attempt timeout and data read timeout
Stalin, las variables no las tenes que modificar. Si no conecta es porque no esta saliendo del hosting. Revisa en el log del RouterOS si te tira algun error. Si no.. creo que no esta saliendo la peticion desde el hosting como si estarian filtrando el trafico saliente hacia el puerto del API.
Tenes la posibilidad de subirlo a otro hosting para testear?. Slds
Bueno yo las modifiqué porque creí que el tiempo de espera era muy corto considerando que el error es por la espera y a su vez por el ancho de banda, pero voy a hacer lo que me sugieres y subir el sitio a otro hosting.
Hola muchas gracias por la sugerencia de subirlo a otro hosting, ahora funciona sin problemas.
Amigo disculpa, ando buscando una solución, pensé que el balanceo de carga mejorado a través de múltiples gateway me iba a ayudar pero no me resulta, El problema que quiero solucionar es que tengo dos lineas de Internet a un RB, pero cuando desconecto la wan 1 que es la principal y wan 2sigue conectada que es la segundaría, se me va el Internet a todos los usuarios conectados. Ayuda …
Walter, Eso significa que esta mal configurado. Este post no tiene mucho que ver con el tema, pero te aconsejo que busques en la wiki y otros foros donde hay bastante documentacion y tutoriales paso a paso de como hacerlo de diferentes maneras. En principio, tu problema puede estar en la parte de routeo.
Saludos.
tengo una duda sobre esto:
$ipRouteros=”que_IP_va_AQUI″; // tu RouterOS.
Es la IP PUBLICA?
yo para entrar por winbox uso mi no-ip o mi IP PUBLICA.
Si Daveluy, es la IP Publica de tu routeros. Con tu no-ip deberia funcionar barbaro. Saludos.
Gracias por una pronta respuesta, estoy usando mi no-ip pero me dice que fallo la conexion «La conexion ha fallado. Verifique si el Api esta activo.» creo que el problema ya seria porque uso un host free lo cual bloquea algo, un amigo que posteo su problema igual al mio lo soluciono creo que cambiando de hosting, ya voy probando con 3 hosting free y todos me salen el mismo mensaje, es necesario crear el grupo para el API y el user ahhh me olvidaba es necesario asociar una ip para el puerto del api 8728 ?
Hola amigo, tengo una duda.
Mi mikrotik está conectado después de mi modem (donde tengo una antena ubiquiti airgrid que me lleva el internet a otra antena airgrid) entonces, la ip que le asigné a mi mikrotik es 192.168.88.1, la pregunta es ¿Debo poner esa ip en el archivo de configuración? ¿Como averiguo que ip debo poner o de que manera tengo que configurar mi mikrotik para que me lo reconozca?, ya seguí tu tutorial al pie de la letra y me sale la leyenda:
«La conexion ha fallado. Verifique si el Api esta activo.
Warning: fclose() expects parameter 1 to be resource, boolean given in /home/content/75/4816275/html/zonawifi/web/api_mt_include2.php on line 121»
¿Qué debo hacer?, agradezco tu ayuda.
Saludos desde México 🙂
Hola Adriana, desconozco la topologia de tu red, pero supongo que si vas a acceder desde afuera de tu red, el API del routeros (donde estas queriendo acceder) deberia recibir la direccion del apache. Mas bien la direccion IP publica de tu apache.
Si no sabes cual es la direccion… o tenes una topologia distinta a la que imagine, podes probar conectar sin ninguna IP. Pero solo para testear si ingresa. Dejarlo sin IP es un horrible problema de seguridad. Saludos. Mira el log para ver si arroja algun error y ademas… podes setear debug a true para debugear errores y ver que sucede. Saludos.
Hola amigo.
Te comento como tengo mi red.
Recibo el internet de un modem Arris (no sé si tenga que abrir algún puerto o algo en especial), al modem está conectada una antena airgrid que me lleva el internet a otra rejilla, luego de ahí tomo el internet y lo paso al mikrotik.
Mi modem tiene la ip 192.168.0.1
La primer antena 192.168.1.20
La antena que recibe 192.168.1.21
Mi mikrotik tiene la ip 192.168.88.1 (y entrega direcciones en DHCP bajo ese mismo rango).
Ya intenté quitar la ip y me sigue arrojando el mismo problema, alojé mi archivo en un servidor compartido que tengo rentado en Godaddy.com, intenté desde otro que tengo y en ambos me manda el mismo error.
Ya probé cambiando de puerto y tampoco llego a nada, espero me puedas echar una mano, estoy vuelta loca desde la mañana, gracias por la respuesta, no la vi hasta ahorita que le di en «ver comentarios recientes», un abrazo a la distancia. 🙂
He puesto el debugger en True y me manda esto:
Connection attempt #1 to 192.168.88.1:4370… Connection attempt #2 to 192.168.88.1:4370… Connection attempt #3 to 192.168.88.1:4370… Connection attempt #4 to 192.168.88.1:4370… Connection attempt #5 to 192.168.88.1:4370… Error… La conexion ha fallado. Verifique si el Api esta activo.
Warning: fclose() expects parameter 1 to be resource, boolean given in /home/content/75/4816275/html/zonawifi/web/api_mt_include2.php on line 121
Disconnected…
Al parecer no hay comunicación entre el mikrotik y mi servidor :'(
Adriana, Creo que estas intentando acceder desde un Hosting publico a una Ip privada que esta dentro de tu red. Si el Modem Harris tambien hace de router.. seguro esta asignando una direccion PUBLICA. Tenes que entrar al panel de administracion y chequearlo. Esa direccion es la que tenes que usar en el PHP. Ademas, si la direccion es dinamica, vas a tener que utilizar Dyn-DNS, o Duckdns, etc porque si no cuando cambie de IP el router, Te dejara de funcionar el script php. Por ultimo, desde el router Arris hasta el mikrotik.. tenes que tener ping. Si el Mikrotik tiene la IP 192.168.88.1, el Arris la tiene que poder «ver».
IMPORTANTE:
Si podes administrar la configuracion del Arris, tenes que hacer un port-Forwarding (reenvio de puertos o dst-nat) desde el port 8728 a la ip 192.168.88.1. Esta es la parte mas importante. Si no el servidor donde tenes alojado el sitio web, no va a llegar nunca a tu mikrotik «que esta dentro de una red lan privada».
Saludos
Adriana, el puerto esta mal. Es 8728 y dentro del mikrotik tenes que tener configurado el mismo dentro de IP-Services-API. Y fijate mi respuessta anterior porque te esta faltando hacer un port-forwarding en el modem/router Arris
Eso justamente estaba pensando, de hecho intenté en mi modem Arris crear un servidor virtual, pero no me acepta la dirección de mi mikrotik, me dice que está fuera de rango, también donde dice «Port Triggers» abrí el puerto, de hecho ya probé con el puerto que pusiste, sólo que estuve probando con varios por eso es que sale esa ip diferente.
Si me parece que el problema está en mi modem/router, pero la verdad no tengo idea de como hacer para que me deje el paso libre a lo que necesito hacer, estoy vuelta loca. 🙁
Encontré en mi modem lo siguiente:
DDNS
DDNS (Dynamic DNS) allows you to provide Internet users with a fixed domain name (instead of an IP address which may periodically change), allowing your router and applications set up in your router’s virtual servers to be accessed from various locations on the Internet without knowing your current IP address. You must create an account with the DDNS service in order to use DDNS.
DDNS Setting
DDNS Enable
DDNS Service
User Name
Password Key
Domain Name
Creo que ahí podría volverlo público y luego proseguir con lo otro, cierto?
Si.. esta bien eso es lo que yo te decia. Pero primero tendrias que averiguar si tu IP es dinamica o cambia .. si no no tiene sentido modificarlo. Antes de modificar eso tenes que logar hacer un port forwarding. Y nadie mejor que el amigo google para buscar respuestas: https://www.google.com.ar/search?q=port+forwarding+en+modem+arris&oq=port+forwarding+en+modem+arris&aqs=chrome..69i57j0l5.8152j0j7&sourceid=chrome&es_sm=93&ie=UTF-8
Gracias amigo, me leí eso y lo hice, pero sigue sin funcionar, seguiré buscando, gracias por el apoyo.
Saludos.
Hola me parece interesante este desarrollo, me podrian ayudar desarrollando un aplicativo para el uso en mi empresa?
Hola Eduardo, Si, si no es demasiado complicado te podríamos dar una mano y si te parece bien, publicarlo en el blog para que los demás puedan descargarlo. De que se trata?. Saludos
Buenos dias, soy nuevo en PHP y no se donde se puede copiar todos los archivos descargados para ver si tengo conexion desde mi servidor de apache con php hacia el MKT , me pueden especificar la ruta completa (path completo); en donde van cada archivo.
Gracias de antemano
Necesito ayuda con su ejemplo! no se donde se debe poner los archivos de configuración soy novato en php y apache; ya los tengo instalados. Para la prueba de APi con el servidor de apache , tengo conectado un mikrotik directamente conectado a la PC en una red 10.0.0.0/24. Pero me aparece que el Api no esta Activo. y e seguido todos sus pasos anteriormente mencionados. QUE DEBERIA HACER?
Mauricio, yo no estoy enseñando nada de PHP y Apache.. mira, para hacerla mas facil.. instala el WAMP (Apache Mysql PHP) en tu windows y luego busca un tutorial en youtube. slds
Javier, yo no estoy enseñando nada de PHP y Apache.. mira, para hacerla mas facil.. instala el WAMP (Apache Mysql PHP) en tu windows y luego busca un tutorial en youtube.
buenas tardes amigo, primero lo felicito por su gran aporte, que de gran ayuda para las personas como nosotros que somos novato en el tema de MKT, y que deseamos aprender algo mas sobre ellas. Estoy trabajando sobre el desarrollo de esta aplicación para la empresa donde trabajo, y me pidieron una interfaz como la que muestras al principio, donde todo o su gran mayoría pueda ser maneja do por hay donde hasta secretaria lo pueda hacer. Soy ing. de Sistemas y he trabajado con php, y mi servidor local es WAMP, ahora mi pregunta y disculpa todos los archivos lo alojo en la carpeta WWW del WAMP, y este servidor local (WAMP) lo instalo en cualquier pc que este conectado a la red o simplemente por la dirección ip del MKT se conecta y realiza su trabajo desde cualquier pc que este dentro de la red.
De antemanos muchas gracias y espero gran ayuda y asi también poder ayudar a alguien mas sobre este tema.
Enrique, Asi es!!. Tu razonamiento es correcto. El WAMP lo usas en cualquier PC y tiene que conectarse sin problemas al Mikrotik (IP Publica) y con el API habilitado.. y por supuesto usuario y contraseña con permisos para read write y API. Y tambien te funcionaria subiendolo a un shared hosting. Saludos.
buenas noche amigo estoy realizando una prueba con tu codigo y al correr el script me aaroja esta advertencia «Warning: fclose(): 7 is not a valid stream resource in C:\wamp\www\prueba\api_mt_include2.php on line 121» si me podrias ayudar o alguno que sepa sobre esta advertancia, muchas gracias…
buenas noches amigo, ya resolvi el error que me estaba dando, era porque tenia la clave errada. gracia 😀
buenos días amigo como estas, disculpa estoy desarrollando el software y me ha ido funcionando, sera que tu me podrías ir orientando en algunas dudas, estoy por ingresar un nuevo usuario hotspot user add pero no me da el código para conectarme al mikrotik, crees que podrías ayudarme, muchas gracia…
Erik, Me alegro que haya funcionado!!! Saludos
Hola enrique, buenos dias, aca te dejo un ejemplo de lo que queres hacer. Esta con el codigo para conectar. http://www.tech-nico.com/blog/api-mikrotik-tercera-parte-nuestro-primer-ejemplo-codigo-abierto/ Saludos.
hermano debo de hacerle algunos ajustes al archivo API.php, la pregunta es porque e tratado de mostrar por pantalla en mi tabla los datos de «ip/hotspot/users» y me muestra solo errores, necesito su ayuda si podría o si tiene algún script ya funcionando me lo podrías facilitar al correo para irme guiando por ese, es que ya no se que hacer de verdad, muchas gracias
buena tardes amigo disculpa podrías ayudarme a como insertar un nuevo usuario ya logre comunicarme al mikrotik a través de API gracias a su ayuda en este blog, pero estoy tratando de crear un nuevo usuario y pues en realidad se me ha complicado, o si alguno del foro me podría ayudar, este es mi correo eriking125@gmail.com..
Gracias de antemanos
Enrique, hay un ejemplo de como agregar un usuario por hotspot. si miras el codigo.. cambiando pocas cosas podes hacer lo mismo con PPPoE.
Saludos.
gracias hermano voy a revisar detenidamente y al tenerlo listo lo publico para que sirva de ayuda a alguien mas; y disculpa amigo se puedo conectar con una base de datos, es para que me muestre los datos adicionales junto con los del mikrotik o si algún miembro del blog lo a realizado me podrían ayudar mi correo es eriking125@gmail.com
Estoy intentando hacer esta conexion y me sale esto me podrías ayudar??
Connection attemp #1 todo 192.168.42.1:8728… <<<[6]/login
NOTICE: Undefined variable: _ un C:\ xampp\htdocs\testapi\api_mt_include2.php con línea 286
NOTICE: undefined offset:0 unC:\ xampp\htdocs\testapi\api_mt_include2.php con línea 88. Me podrías ayudar no se que hacer
Irvin, proba cambiando la linea
$API->debug = false;
por
$API->debug = true;
y ademas, revisa el log del mikrotik.
Saludos
buenas compañero,
lo primero felicitarte por el blog, una pasada!, estoy mirando la solución del api de mkt y quiero realizar un proceso y como veo que tienes bastante experiencia te quería consultar si crees que es viable antes de ponerme con el, el tema es que tengo una red con 1 mikrotik como hotspot y XX ap nanostation, hay todo perfecto el tema viene cuando quiero conocer la potencia de señal que tienen los clientes del ap, para esto ejecuto un comando por ssh desde un servidor y recojo la información a un archivo de texto el cual después importo, el tema es que esta peticion ssh al AP me gustaria realizarla desde el mkt, el problema es que no quiero tener que importar y exportar claves ssh por lo que cuando realizo la conexión me pide la contraseña. Desde el servidor tengo un script en bat que introduzco la contraseña, el tema es mirar de hacer esto via api. Seria realizar la conexión ssh para ejecutar el comando, y lo mas importante saber si con el api cuando el equipo me solicite la contraseña yo se la puedo enviar realizando algun tipo de «type» o «write» sobre la consola con la variable del password para despues poder recoger la info.
Gracias y felicidades por el blog!!
Hola Indio, en principio me alegra que te sirvan mis artículos. Con respecto a tus dudas, lo veo muy complicado a lo que queres realizar, quizas con un script de mikrotik se pueda realizar pero yo no se como hacerlo. El API de mikrotik puede ingresar a un Mikrotik a leer informacion pero no a un Ubiquiti. Y por lo que lei vos estas ingresando a un Nanostation. Verdad?. En todo caso lo que te convendria hacer es, desde PHP ingresar directamente al Ubiquiti, algo como lo que hacen aca. http://community.ubnt.com/t5/airOS-Software-Configuration/Integrating-PHP-ubiquiti-AirOS/td-p/476269. Saludos.
Hola Nico, mi nombre, veo que manejas muy bien el tema y te quería consultar por algo que necesito hacer y no se ni por donde empezar, tengo una rb450g, con una red con hotspot cuya única finalidad es entregar internet gratis a la gente, para esto habilite el un perfil tree o perfil libre por una cantidad de tiempo prudente aproximado de 2 horas, todo funciona perfecto pero necesito reunir estadísticas de cada una de las personas que se conectan, mi idea es que cada cliente que se conecte pueda entrar a una base de datos con la hora de la conexión y el día. así podre obtener datos reales de cuanta gente se conecta en cada punto y seguir replicando este proyecto, agradecería si me pudieras ayudar…
Hola Edgardo, coméntame un poco, como te imaginas el formulario de ingreso?. Que datos ademas de la hora de ingreso quieres reunir? Saludos.
Gracias por tu tiempo Nico, idealmente seria bueno que al acceder el cliente a internet saliera un mini formulario donde el cliente pudiera poner su nombre y correo electronico con el objetivo de fidelizar un poco este servicio gratuito, poder enviarle al cliente mail informativos de nuevos puntos gratis que se vayan habilitando en distinto sectores. seria algo así como un formulario con nombre y mail y que la base de dato contenga datos como el nombre, correo y hora y fecha en que se conecto…
Nico no me gusta abusar de nadie y realmente se que es tiempo valioso el que inviertes en esto, si me pudieras ayudar en este proyecto novedoso para mi, podrías también decirme como te puedo ayudar yo a modo de devolverte la mano.
Saludos.
Edgardo, Te mando un MP y vemos que se puede hacer.
Me pareces perfecto, quedo a la espera de tu MP… desde ya muchas gracias!
mi pregunta es si para editar el api y ir dessarrolando los codigos al que tener un servidor para ir alojando lo que se valla editandon saludos
Jose, Si. Necesitas un servidor Apache que pueda ejecutar codigo PHP. Si tenes windows podes instalar WAMP. Si tenes MAC OSx podes instalar XAMP. Y si tenes linux podes instalar MAMP. Esto te instalaria Apache Mysql y PHP. Saludos
Hola, he aprendido bastante con tu blog, pero tengo un inconvenente, en mi pc con Zend server, donde me ejecutan los scripts desde cualquier lugar por internet a mi mikrotik el cual tiene una ip publica, pero cuando los script los alojo en mi pagina web con hosting en godaddy o hostgator y nunca se conecta.
Hola Hugo. Revisa en 2 lugares.
1) en IP – Services, si en API le pusiste alguna direccion IP.
2) en System – Users, si en el usuario que creaste con permisos read, write, api, le asignaste alguna direccion IP.
Proba quitarlas y testea nuevamente. Luego, cuando sepas que funciona, podes poner la IP del hosting y volver a testear.
Saludos desde Argentina.
Hola que tal amigo he realizado la conexion correctamente pero lo que necesito hacer en el mk es desabilitar una ip en este caso los tengo como estatica, cuando quiero cortar el servicio de un cliente voy a /ip/addresses/ y me muestra la lista de todas las ip que tengo en mi mk uso subredes ejemplo 10.0.1.1/30, 10.0.2.1/30, 10.0.3.1/30 cuando voy a cortarle el servicio a un cliente lo que hago es seleccionar el numero de ip que le corresponde al cliente y seleccionar la opcion Disable
Lo que quiero hacer tener mi lista de clientes en mi sistema echo en php y desde ahi cortar el servicio de acuerda a los dias que le halla asignado, ya he realizado correctamente la conexion pero no se como ni que metodos del archivo utilizar me gustaria que me orientaras o me ayudaras mi correo es joelrg10@gmail.com
buenas eh estado probando desde hace unos dias tus tutoriales gracias de ante manos. me aroja este error
Notice: Undefined variable: receiveddone in C:\xampp\htdocs\phpapimk\test api\api_mt_include2.php on line 301
mi versión de mk os es la 6.33.3
Hola amigo. Aun no he probado con esa version. Slds
Hola.. tendrias que implementarlo usando address-lists y luego en el firewall aceptar el address list y otra regla por debajo que dropee todo el bloquee de ip. Asi tendrás seguridad en tu red. Con tu manera si el cliente se pone una direccion ip al azar, va a terminar navegando y/o generando conflicto de ip a otro cliente que piede quedar sin servicio.
Qué tal, tengo varios servidores pero en el que estoy tratando de poner los scripts (uno de hostgator) no se contecta y en otros servidores sí…cuál podría ser el problema? Saludos.
Hola, he probado de poner/quitar las IPs para que funcione desde un hosting compartido y nada.
Puede qie hostgator tenga un firewall que no permita la conexion saliente al puerto que usa el api. Cambiale el puerto por algun otro. Proba con 81… 8080. Nunca me paso, pero yo imtentaria eso.
Yo lo tengo corriendo en hosting compartido y va bien. Pone el debug en true para ver cual es el error. Tambien proba cambiando el puerto del api por otro.
Para ejecutar la API desde un hosting, hay que poner la ip publica???
$ipRouteros=$IP_PUBLICA; // tu RouterOS.
$Username=»apiuser»;
$Pass=»123456″;
$api_puerto=8728;
$API = new routeros_api();
$API->debug = false;
puse la ip del hosting en la configuración del api para permitirle acceso, y nada
el debug a true me da esto
Connection attempt #1 to :8728…
Connection attempt #2 to :8728…
Connection attempt #3 to :8728…
Connection attempt #4 to :8728…
Connection attempt #5 to :8728.
Es logico, tenes que tener una Ip Publica!! El equipo mikrotik al que queres acceder tiene una IP Publica puesta en la interfaz WAN?. Si podes navegar en internet a travez de el entra en cualesmiip.com y revisa que esa sea la direccion IP que estas usando en tu configuracion del API. Saludos.
estaba haciendo un telnet a mi hosting para ver si el puerto 8728 esta abierto, y resulta que esta cerrado, tengo q tener este puerto abierto????
Sorry, Soy nuevo en este mundo de mikrotik, solo llevo una semana
mmm NO.. porque no te interesa que ese puerto este abierto en el servidor. Ese puerto es el que tiene que tener abierto tu Router (el que tiene el API activado). Imaginate lo siguiente: El servidor de hosting esta en la nube y este ultimo, ejecuta el codigo PHP que descargas de tech-nico.com el cual tiene que poder llegar a tu router a consultar o ejecutar comandos. Para que comprendas que tambien podria ser que tu hosting tenga cerrado el puerto de salida 8728 (Output). Mira, para sacarte la duda, podes probar el mismo codigo en tu localhost. Y ademas tenes como segunda opcion, modificar tanto en el PHP como en tu Router el numero de puerto por el que vos quieras. Uno que no genere confusion para tu hosting o tu router. (Ejemplo el 3128: web-proxy; o el 81, 8080, etc) proba con puertos mas comunes que puedan estar abiertos.
hola amigo me podrias enseñar como subir los archivos a FTP a mi servidor apache appserver
Gerardo: Eso se lo vas a tener que consultar a tu hosting. Pediles acceso FTP a la carpeta que necesites y te tienen que pasar un usuario y contraseña. Luego podes descargar el FileZilla, (busca un tutorial en internet para configurarlo, no vas a tener ninguna dificultad para lograrlo)
Como sería en PHP para asignar ancho de banda de subida y bajada para un usuario?, y como asignar el tiempo de uso del internet?
Gracias
Como hago para subir los archivos ftp
Si te estas refiriendo a subir los archivos a un servidor FTP publico, tenes que utilizar FileZilla.
si no t molesta ciko pasame un mail a info@alojarteya.com que t envio mi codigo, para que veas donde la err, me da conexion fallida.Gracias
http://centrocomercialmiramarcba.com/index2.php
este error, no estoy muy claro cuales son las ip quedebo colocar tento en el Mtik como en el script
Buenas, estoy trabajando buscando algo de ayuda, trabajo en una api en Visual Basic, he podido hacer la conexión, agrego usuarios y perfiles a mi rb mikrotik, sim embargo, hay algo que me causa algo de inquietud, después de establecer la conexión, obtengo la fecha y hora del rb sin problema y posteriormente quiero obtener los usuarios que tengo pero al obtenerlos, solo obtengo «!done=ret=*0» en lugar de obtener los usuarios, cómo puedo resolver ese inconveniente?
Hola, como estas..
1ro. Muy bueno tu Post.
2do. Tengo el problema que anunciaste al principio. Necesito graficar (onda MRTG) la conectividad (ancho de banda Up/Down) de mis clientes y no se como hacerlo. No utilizo SIMPLE QUEUE utilizo PCQ . Queue Tree. Mis clientes subneteados w.x.y.z/30. Que forma hay de generar los graficos similares a los de Mikrotik?
Desde ya muchas gracias…
saludos hermano muy bueno tu aporte, espero que no te canses de tanto respondernos inquietudes, corri el scrip y logro conectarme solo que me sale un error, podrias ayudarme? gracias
Esto es lo que obtengo en el explorador:
Notice: Undefined variable: receiveddone in C:\xampp\htdocs\api_mt_include2.php on line 301
MikroTik(hEX lite) v:6.38.5 level:4 MIPS 24Kc V7.4(850 Mhz.)
Hola Franco, eso es una configuracion de tu Apache en «xampp» que por defecto muestra «warnings». No es considerado un error, solo una advertencia de que una variable no fue definida. El sistema te va a funcionar igual sin problemas. Tenes 2 maneras de resolverlo; la primera, ocultando los warnings:
Podes definir estas 2 lineas al principio de la pagina,
error_reporting(0);
ini_set('display_errors', 0);
2) Buscar cual variable no esta definida, dentro de la libreria, y definirla.
Yo optaria por la opcion 1.
Saludos
de verdad muchas gracias por responderme hermano, he tenido poca suerte en otros foros, gracias por la solución, quería comentarte que el scrip me anda bien pero al momento de incluir un usuario en el hotspot no lo hace, puse al final del mismo un read para ver que mensaje me esta devolviendo el rb y esto es lo que me sale:
[«message»]=> string(30) «failure: user name is required»
sin embargo yo estoy mandando a ejecutar el comando con este scrip:
$API->write(«/ip/hotspot/user/add», false);
$API->write(«disabled=no», false);
$API->write(«name=franco», false);
$API->write(«password=1234», false);
$API->write(«profile=default», true);
ya intente de todo ponerlo en una sola linea, ponerle al nombre comillas, etc
Esta bien lo que estas haciendo. El codigo esta funcionando correctamente. RouterOS te esta diciendo que hay algo que falta.. algun dato es requerido y por alguna razon no lo tiene. Vas a tener que debuggear.. proba primero agregar el usuario desde la consola del winbox para ver si te arroja tambien el error:
/ip hotspot user add disabled=no name=franco password=1234 profile=default
Luego habilita la linea debug=false como debug=true, para ver un log mas detallado.
Con eso te vas a arrimar al problema. Suerte.
Saludos amigo, cambie el codigo por este que sigue:
require_once(‘api_mt_include2.php’);
$ipRouteros=»10.1.8.51″; // tu RouterOS.
$Username=»admin»;
$Pass=»winetsl17*»;
$api_puerto=8728;
$clave=$values[‘clave_contrato’];
$nombre=$values[‘usuario_contrato’];
$plan=»default»;
$API = new routeros_api();
$API->debug = false;
if ($API->connect($ipRouteros , $Username , $Pass, $api_puerto)) {
$API->write(«/ip/hotspot/user/add», false);
$API->write(«=name=».$nombre, false);
$API->write(«=password=».$clave, false);
$API->write(«=profile=».$plan, true);
echo «ENTRO Y EJECUTO……»;
echo $nombre;
echo $clave;
}
$READ = $API->read(false);
$ARRAY = $API->parse_response($READ);
echo «»;
var_dump($ARRAY);
echo «»;
$API->disconnect();
ahora uso variables dentro del codigo API, ya este codigo me funciono pero en un archivo solo, es decir un archivo que ejecuto desde el explorador, efectivamente me agrega el usuario al rb PERO con la diferencia que cuando lo ejecuto solo le pongo valores a la variables yo mismo, en este caso uso un valor que tomo de otro lado para asignarla a la variable, no se si me entiendes, y al final coloco un READ para ver que me devuelve el RB y me sale lo siguiente:
array(1) { [«!trap»]=> array(1) { [0]=> array(1) { [«message»]=> string(30) «failure: user name is required» } } }
segun lo que entiendo al parcer no me toma el usuario, pero es que mando a imprimir la variable y tiene el nombre de usuario, Toda una cosa loca esto. habra algo que me sugieras hacer en el codigo de arriba para que la variable tome su valor? gracias
Saludos hermano ya logre resolver el problema era un error en la sintaxis, ya puedo agregar perfectamente un usuario, lo otro que queria preguntarte es a la hora de modificarle un dato al usuario, uso este codigo pero falta la parte que es la que te señalo con unos ????? que no se que va ahi para asignarle a la variable $id el ID que me hace falta para cambiar en ese caso el nombre de usuario, aparte que no se si tengo algun error en el scrip, pido nuevamente tu valiosa ayuda para seguir adelante con mi proyecto, gracias.
Aqui el codigo:
$API->write(«/ip/hotspot/user/print», false);
$API->write(«?address=».$nroip, true); //la variable $nroip trae ya el ip del usuario que voy a modificar.
$id=??????;
$API->write(«/ip/hotspot/user/set», false);
$API->write(«=.id=».$id, false);
$API->write(«=name=».$nombre, true);
En $id tenes que asignarle el valor del resultado de /ip/hotspot/user/print… Tenes que volcar esa consulta dentro de la variable $read; Luego Hace un print_r($read); para ver lo que te trae el print…
Si no me equivoco te va a quedar algo asi:
$id=$read[".id"];
Suerte con eso.
saludos disculpa hermano como seria ese vuelco o esa vaciado de lo que arroja el print en la variable read para luego asignarla? graciaas
Franco, tus preguntas ya no refieren a la nota, si queres arender PHP tendrias que recurrir a un foro especializado o bien te invito a descargarte otros ejemplos de mi blog donde lo vas a encontrar en alguno de ellos.
Amigo le escribo desde Venezuela
Tengo una grande duda
Y son con las IP
Tengo solo el aparato mikrotik con el cable de red en el puerto wan
A mi pc
Ejecutó el programa winbox v3
En la pestaña Neighbors
Me muestra el Mac addres
Y la IP está 0.0.0.0
Para iniciar sesión ingreso con la Mac
Porque con la IP me sale error
Después de haber iniciado sesión
Configuró la api colocando en Available from la IP local xampp 127.0.0.1
Después en user list configure todo cómo tú explicaste
Y en usuario coloque la misma dirección de xampp
Y en el archivo PHP
Ya he incluido la api
Con el código
requiere (‘Modelo/apimikrotik.php’);
$api=new routeros_api();
$api->debug(true);
$api->connect(‘0.0.0.0′,’api’,1234,8728);
$api->write(‘/interface/getall’);
$read=$api->read(false);
$array=$api->parseResponse($read);
print_r($array);
$api->disconnect();
Y me da error o sea no se conecta al mikrotik
Estoy usando un PC dónde está sólo conectado al aparato mikrotik
La ip 0.0.0.0 «No existe», Tenes que asignarle una IP valida a tu RouterOS, de lo contrario no vas a poder conectarte con el API.
buenas tarde; tendra el codigo para que automaticamente si doy un cliente por ejemplo el dia 15 de nov me los suspenda auotmaticamente el dia 15 de dic a un mes exacto;
gracias y que par activarlo solo le agrego un mes mas y ya pueda navegar?
@emael No hay mucho codigo para eso. Si das servicio con IP privada y NAT, es facil, creas un address list con los clientes que deben, luego en firewall NAT haces un forwarding de los puertos 80 y 443 de ese address-list a un linux puerto XX donde tengas la pagina indicando la razon del corte.
Luego si queres, podes utilizar el API para agregar o quietar una IP del address list.
Hola nico!
como puedo modificar las mac de mis wlan virtuales desde php (uso un LHG5)
Hola gente, buenos dias..
Yo tengo funcionando el código pero ahora dejó de funcionar por un upgrade de la versión del fireware (6.45 en adelante) de Mikrotik. Ud. saben si hay una actualización en la API
Buenas tardes, tendra alguien el codigo en C# o Vb.net para conectar y realizar pruebas, pues necesito que mi proyecto no dependa de un servidor con PHP.
disculpa amigo, pero he seguido este post por mucho tiempo, de hecho logre hacer caminar mi primera plataforma y todo bien, pero ahora al tratar de probar con el mismo codigo para hacer otra plataforma no me permite entegralo con el router, estoy en el mismo dilema de anteriores comentarios con el fclouse. solo me sale esto: La conexion ha fallado. Verifique si el Api esta activo.
Warning: fclose(): supplied resource is not a valid stream resource in C:\xampp\htdocs\testapi\api_mt_include2.php on line 121
repito ya lo he hecho ante con otro router y todo bien en orden, he tratado con diferentes router, he limpiado el equipo, he verificado firewall, he retificado una y mil veces pero nada, yo estoy usando servidor web xampp, favor echarme una manita
Tenes que tener la libreria «api_mt_include2» actualizada a la ultima version, tambien routerOS actualizado, el puerto del API service habilitado (y el mismo que el que configuraste en la libreria) y por supuesto el firewall abierto para ese puerto en cuestion. Los permisos del usuario API tambien son importantes de revisar.
Hola buenas tardes, me sale un error con la api «maximun execution time of 30 seconds exceed in c:xampp\htdocs\ApiMikrotik.php on line 253», alguna solucion?
Buenas, intenté lo que describes y me sale este error en ele buscador:
Parse error: syntax error, unexpected ‘.168’ (T_DNUMBER) in C:\wamp64\www\PruebaAPI\conectar_test_api.php on line 3
que es el segundo octeto de la dirección IP del router.
Olvídelo, ya vi el error, muchas gracias.
Hola buenos días, encontré su blog buscando info por internet, he copiado y cambiado las variables tal cual Ud la describe en los comentarios, pero no he logrado conectarme con éxito a la API de mi mikrotik, activé el debug = true para ver el log a detalle y me sale esto:
Connection attempt #1 to 10.10.100.1:8728… <<>> [5/5] bytes read. >>> [5, 39]!done >>> [37/37] bytes read. >>> [37, 1]=ret=4304848e494d8d56fb544d41807483b8 <<< [6] /login <<< [16] =name=geoandroid <<>> [5/5] bytes read. >>> [5, 51]!trap >>> [42/42] bytes read. >>> [42, 8]=message=invalid user name or password (6) >>> [5/5] bytes read. >>> [5, 1]!done Connection attempt #2 to 10.10.100.1:8728… <<>> [5/5] bytes read. >>> [5, 39]!done … Error La conexion ha fallado. Verifique si el Api esta activo.
Cuando voy al log del mismo mikrotik me sale esto:
login failure for user geoandroid from 10.10.100.2 via api
La IP de mi routerboard es la 10.10.100.1, con la API activa, el modelo es una hAP Lite de 2da gen.
He creado el usuario geoandroid con su respectiva contraseña, grupo y permisos del mismo, tal cual Ud lo explica en el post.
Por favor acudo a Ud para su apoyo, ya que estoy aprendiendo paso a paso sobre API Mikrotik.
Saludos desde Perú.
Hola @RaulFlores. El debug te esta diciendo claramente que tenes un problema con el usuario y/o contraseña: message=invalid user name or password.
Por si acaso verifica que el usaurio creado en el mikrotik tenga los permisos adecuados.
Y ademas, que dentro de IP > Services tengas habilitado el servicio API.
Slds.