pear2/Net_RouterOS

Getting router MAC address

mahmoud63 opened this issue · 3 comments

Is there is any way to get mikrotik router MAC address

Sure.

$macAddress = $util->setMenu('/interface')->get('ether1', 'mac-address');

Just replace "ether1" with the name of the interface you want to get the MAC address of.

thanks for reply,
But the situation I have now that I have Mikrotik router connected to my captive portal and I want to get router mac address and send it to server
I tried this code

$client =new RouterOS\Client('192.168.88.1', 'admin', 'password');

`$snmpRequest = new RouterOS\Request(':put [/interface ethernet get [/interface ethernet find default-name=ether1] mac-address ]');`

$snmpResponses = $client->sendSync($snmpRequest);

`$nasID = RouterOS\Script::escapeString($snmpResponses->getProperty('value'), true);`

but while testing the captive portal stuck at this link --> http://192.168.88.1
note that I changed the password to current password

You can't use nested commands in Request(). You must call each command individually. Also, "put" is kind of useless in the API, though it does work... It's just that it can only output a string that it was explicitly given. Also, why are you calling RouterOS\Script::escapeString() on the returned value?

What probably happened in your code is there was an error reply, but you took its "value" property anyway.

You can emulate more closely the nested command syntax with Util, but the point remains even there:

$util = new RouterOS\Util($client);
$util->setMenu('/interface ethernet');
$nasID = $util->get(
    $util->find(RouterOS\Query::where('default-name', 'ether1')),
    'mac-address'
);

The above would give you the mac-address into the variable $nasID via two API calls - one to get the internal ID of the interface with default name "ether1", and the second one to get its mac-address. And it would throw an exception if there's an error reply anywhere.