Forums for specific products (others supported  here)
Get host MAC via REST API inside container - Printable Version

+- Forums for specific products (others supported here) (https://forum.hilscher.com)
+-- Forum: netPI - Ruggedized Industrial Ethernet Raspberry Pi (https://forum.hilscher.com/forum-1.html)
+--- Forum: Software (https://forum.hilscher.com/forum-5.html)
+--- Thread: Get host MAC via REST API inside container (/thread-650.html)



Get host MAC via REST API inside container - bschandra - October-14th-2020

Hi all,

we need the MAC address of the host system inside a container on the Hilscher netPI.
For me it seemed to be a suitable solution to get the LAN settings, and also the MAC, from the Hilscher REST API.

As described in this thread, we first logged in with the admin user to get the authentication cookie.

Code:
curl -L -k -X POST 'https://<HOST-IP>/login' -H 'Content-Type: application/json' -d '{"username":"admin","password":"<PASSWORD>"}'


With the authentication cookie we are able to get various information from the API. The following requests all worked.
Code:
curl -L -k -X GET 'htps://<HOST-IP>/?page=infocenter' -H 'Cookie: <COOKIE>'

Code:
curl -L -k -X GET 'htps://<HOST-IP>/get/devicestatus/getCPUStatus' -H 'Cookie: <COOKIE>'

Code:
curl -L -k -X POST 'https://<HOST-IP>/system' --header 'Cookie: <COOKIE>; Content-Type: application/x-www-form-urlencoded' -d "argument=reboot"


But the request to get the LAN settings always responds the following:
Code:
{"status":"Failed","message":"Permission denied"}


Here's the request as we tried:
Code:
curl -L -k -X GET 'htps://<HOST-IP>/get/networksettings/lansettings' -H 'Cookie: <COOKIE>'

The admin user has all read & write rights in the application, also for the REST API.


Can anyone imagine what we are doing wrong here?

Is this a good way to get the MAC-address of the host system or is there a better solution?

Many thanks in advance.

Best regards
Benjamin


RE: Get host MAC via REST API inside container - Armin@netPI - October-14th-2020

Well I would do it differently.

You need to know that the MAC address of a Raspberry Pi is starting always with B8:27:EB which is the vendor ID of the Raspberry Pi organization followed by the 6 last digits (3 bytes) of the serial number of Raspberry Pi CPU. This adds to 6 bytes

So with this knowledge you could easily build the MAC address your own without reading it across the web-UI.

This code below should help you to extract the CPU's serial number which should also work in a container I guess

Code:
cat /proc/cpuinfo |grep Serial|cut -d' ' -f2


Thx
Armin


RE: Get host MAC via REST API inside container - bschandra - October-15th-2020

Thanks a lot! This is a suitable approach for us, at least in the current version.
Is this structure of the MAC (OUI + last 3 bytes of the cpu serial nr.) a Raspberry or Hilscher speciality?
How about the netPI RTE module with multiple NICs?

Can you imagine why the GET request for LAN settings (see above) did not work?
We would like to use the REST API for other topics as well.

Best regards
Benjamin


RE: Get host MAC via REST API inside container - Armin@netPI - October-15th-2020

Hi Benjamin,

the point with the MAC ID is common Raspberry Pi sense and not Hilscher specific. You can use google search to find several links where this is described.


As next I want to give you a hint how you can test any RESTful API yourself using a browser like google chrome for example. It works with Firefox as well.

Any modern browser has the option to enable debugging HTML web pages. So as with google chrome. So visit the netPI main page and choose from the chrome browser's three dots in the upper right corner the option "tools/development tools ... ". A new window will be opened next to the netPI web page.

In this window you have several tabs you can choose to look into, the most important one for you is the "network" tab. In this tab all the web browser's API calls to the netPI web pages are recorded message by message. So now login to netPI as usual ... you will see the requested login message being recorded under "headers" and you see also the response from netPI under "response" and the cookie. You should see basically the very same messages as those you call via the curl command. Then go on further to other netPI web sites you want to get recorded and analyse them ... by this method you will get out where your problem is with ease.

Thx
Armin