Как получить MAC-адрес удаленной машины из док-контейнера

Я использую контейнер Docker python:3.6-alpine.
У меня есть сетевая служба, которая находит MAC-адрес предоставленного IP-адреса. Чтобы найти MAC-адрес данной удаленной машины, скажите host=10.11.15.100, я использую приведенный ниже скрипт python3.

import getmac 
mac_address = getmac.get_mac_address(ip=host)

Когда я запускаю этот скрипт локально, он дает правильный MAC-адрес предоставленного хоста. Но когда я запускаю его в док-контейнере, он дает None.
Примечание. Я могу пропинговать данный хост из док-контейнера, но не могу получить mac-адрес.


person Mayur    schedule 08.01.2019    source источник


Ответы (2)


Используйте эту команду, чтобы получить MacAddress вашего контейнера

docker container inspect -f {{.NetworkSettings.MacAddress}} container-id
person Main Void    schedule 08.01.2019
comment
Спасибо, сэр, за ваш ответ. На самом деле я ищу адрес удаленной машины/машины локальной сети из док-контейнера. Допустим, у меня есть сетевая служба, которая используется для поиска MAC-адреса заданного IP-адреса удаленных машин. - person Mayur; 08.01.2019

Если вы можете пропинговать данную удаленную машину из док-контейнера, но не можете получить mac-адрес, это означает либо

  1. MAC-адрес недоступен в таблице маршрутизации
  2. Сетевой интерфейс хоста недоступен внутри контейнера Docker.

В случае №1 вы можете пропинговать машину, которая может добавить MAC-адрес этой машины в таблицу маршрутизации.
В случае №2 вы можете добавить сетевой интерфейс хоста в контейнер Docker.

например . docker run --network="host" -it network_service:latest

person Mayur    schedule 10.01.2019