如何在Python平台中独立地找到本地IP地址(即192.168.xx或10.0.xx)并仅使用标准库?
我需要一种在运行时确定计算机MAC地址的跨平台方法.对于Windows,可以使用'wmi'模块,我可以找到Linux下唯一的方法是运行ifconfig并在其输出中运行正则表达式.我不喜欢使用只能在一个操作系统上运行的软件包,而解析另一个程序的输出似乎并不优雅,更不用说容易出错了.
有谁知道跨平台方法(windows和linux)方法来获取MAC地址?如果没有,有没有人知道比我上面列出的更优雅的方法?
看起来像做以下事情是很自然的:
with socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
Run Code Online (Sandbox Code Playgroud)
但Python没有为socket实现上下文管理器.我可以轻松地将其用作上下文管理器,如果是,如何使用?
我正在寻找一种方法(使用python)从本地网络上的设备获取第二层地址.第三层地址是已知的.
目标是构建一个脚本,定期轮询IP地址数据库,确保mac地址没有改变,如果有,则向我自己发送电子邮件警报.
我想编辑bashrc文件,以便运行一个名为"myip"的简单函数.正如您可能猜到的,函数myip只打印我机器的内部IP地址.
我工作的时候,这是脚本:
ifconfig en1 | awk '{ print $2}' | sort
Run Code Online (Sandbox Code Playgroud)
这得到了我的输出:
10.0.0.12
options=1<PERFORMNUD>
flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST>
fe80::daa2:5eff:fe96:ba2f%en1
d8:a2:5e:96:ba:2f
autoselect
active
Run Code Online (Sandbox Code Playgroud)
我正在使用Mac OS X.
我怎么能这样做?
你知道我如何在python2.6中获得我的一个接口的IPv6地址之一.我尝试了一些套接字模块,这让我无处可去.
谢谢.
我正在尝试获取与网络接口关联的 IP 地址,而无需在 Linux 中生成其他进程:
def get_ip_address(ifname):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
return socket.inet_ntoa(fcntl.ioctl(
s.fileno(), 0x8915, # SIOCGIFADDR
struct.pack('256s', ifname[:15].encode('utf-8'))
)[20:24])
Run Code Online (Sandbox Code Playgroud)
但总是收到这个错误:
struct.pack('256s', ifname[:15].encode('utf-8'))
OSError: [Errno 99] Cannot assign requested address
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
我是python的新手。我想获取系统的IP地址。我在局域网中连接。当我使用以下代码获取 ip 时,它显示 127.0.1.1 而不是 192.168.1.32。为什么它不显示 LAN ip。那么我怎样才能得到我的局域网 ip。每个教程仅以这种方式显示。我还通过连接移动热点进行了检查。尽管如此,它显示的是相同的。
import socket
hostname = socket.gethostname()
IPAddr = socket.gethostbyname(hostname)
print("Your Computer Name is:" + hostname)
print("Your Computer IP Address is:" + IPAddr)
Run Code Online (Sandbox Code Playgroud)
输出:
Your Computer Name is:smackcoders
Your Computer IP Address is:127.0.1.1
Run Code Online (Sandbox Code Playgroud)
所需输出:
Your Computer Name is:smackcoders
Your Computer IP Address is:192.168.1.32
Run Code Online (Sandbox Code Playgroud) 我正在用 Python 进行套接字编程,我看到了这个:
sock.getsockname()[1]
谁能解释一下这是做什么[1]用的吗?
python ×7
linux ×3
sockets ×3
ip-address ×2
networking ×2
python-3.x ×2
awk ×1
bash ×1
ifconfig ×1
ip ×1
ipv6 ×1
mac-address ×1
macos ×1
windows ×1