|
@@ -19,6 +19,26 @@ class LocalNetwork:
|
|
|
# if interface is None:
|
|
|
# interface = self.
|
|
|
|
|
|
+ def get_mac(self, interface: typing.Optional[str] = None) -> str:
|
|
|
+ if interface is None:
|
|
|
+ interface = self.get_default_interface()
|
|
|
+ global OUR_MAC
|
|
|
+ if OUR_MAC:
|
|
|
+ return OUR_MAC
|
|
|
+
|
|
|
+ OUR_MAC = getmac.get_mac_address(interface)
|
|
|
+ return typing.cast(str, OUR_MAC)
|
|
|
+
|
|
|
+
|
|
|
+ def get_ip(self) -> str:
|
|
|
+ global OUR_IP
|
|
|
+ if OUR_IP:
|
|
|
+ return OUR_IP
|
|
|
+ with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
|
|
|
+ s.connect(("1.1.1.1", 80))
|
|
|
+ ip = typing.cast(str, s.getsockname()[0])
|
|
|
+ OUR_IP = ip
|
|
|
+ return OUR_IP
|
|
|
|
|
|
def get_default_interface(self) -> str:
|
|
|
global OUR_INTERFACE
|
|
@@ -26,8 +46,6 @@ class LocalNetwork:
|
|
|
return OUR_INTERFACE
|
|
|
output = subprocess.check_output(['ip', 'route', 'list']).decode().split()
|
|
|
|
|
|
- return 'qwerty'
|
|
|
-
|
|
|
for ind, word in enumerate(output):
|
|
|
if word == 'dev':
|
|
|
OUR_INTERFACE = output[ind + 1]
|
|
@@ -38,5 +56,6 @@ class LocalNetwork:
|
|
|
if __name__ == '__main__':
|
|
|
foo = LocalNetwork()
|
|
|
print(foo.get_default_interface())
|
|
|
-
|
|
|
+ print(foo.get_mac())
|
|
|
+ print(foo.get_ip())
|
|
|
# print(getmac.get_mac_address('Ethernet 3'))
|