怎么用python获取局域网下其它主机的名称
时间: 2023-02-12 20:33:25 浏览: 148
可以使用Python的socket库来扫描局域网内的主机,并使用gethostbyaddr函数来获取主机名。代码示例如下:
```
import socket
def get_host_name(ip):
try:
host_name = socket.gethostbyaddr(ip)[0]
return host_name
except socket.herror:
return "Unable to get host name"
if __name__ == "__main__":
ip = "192.168.1.1"
host_name = get_host_name(ip)
print(f"Host name for {ip} is {host_name}")
```
这段代码将扫描`192.168.1.1`这个IP地址,并返回主机名。
相关问题
怎么用python获取windows局域网下其它主机的名称
可以使用 Python 的 `socket` 模块和 `win32api` 模块来获取 Windows 局域网下的其他主机名。具体步骤如下:
1. 导入相关模块:
```python
import socket
import win32api
```
2. 获取本地主机名:
```python
local_hostname = socket.gethostname()
```
3. 获取本地主机 IP 地址:
```python
local_ip = socket.gethostbyname(local_hostname)
```
4. 遍历局域网内的 IP 地址,使用 `socket.gethostbyaddr()` 方法获取主机名:
```python
for i in range(1, 255):
ip = "192.168.1." + str(i)
try:
host_name = socket.gethostbyaddr(ip)[0]
print("IP: %s\tHost Name: %s" % (ip, host_name))
except:
pass
```
这样就可以获取到局域网内所有主机的名称了。注意,这种方法需要在 Windows 系统下运行,因为 `win32api` 模块只能在 Windows 系统下使用。
python根据局域网电脑名称查ip
要根据局域网中的电脑名称查找对应的IP地址,可以使用Python中的`socket`和`nmap`模块。
首先安装`nmap`模块,可以使用pip命令进行安装:
```
pip install python-nmap
```
然后使用以下代码可以查找局域网中所有在线电脑的名称和IP地址:
```python
import nmap
import socket
# 扫描局域网中的设备,查找在线设备
nm = nmap.PortScanner()
nm.scan(hosts="192.168.1.0/24", arguments="-sn")
# 遍历扫描结果,查找设备名称和IP地址
for host in nm.all_hosts():
if "hostname" in nm[host]["addresses"]:
hostname = nm[host]["addresses"]["hostname"]
else:
hostname = socket.gethostbyaddr(host)[0]
ip = nm[host]["addresses"]["ipv4"]
print(f"设备名称:{hostname},IP地址:{ip}")
```
其中,`hosts`参数指定了要扫描的IP地址范围,这里使用了`192.168.1.0/24`表示扫描`192.168.1.0`到`192.168.1.255`之间的所有IP地址。`arguments`参数指定了扫描的选项,这里使用了`-sn`表示只进行主机发现而不进行端口扫描。
运行以上代码,就可以获取局域网中在线设备的名称和IP地址了。需要注意的是,使用`nmap`进行扫描可能需要管理员权限,所以需要以管理员身份运行Python脚本。
阅读全文