怎么用python获取局域网下其它主机的名称
时间: 2023-02-12 11:33:25 浏览: 64
可以使用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获取局域网内的设备_使用 Python 查看局域网内存活主机
要使用 Python 获取局域网内的设备,可以使用以下代码:
```python
import subprocess
# 获取本机IP地址
ip = subprocess.check_output(['hostname', '-I']).decode('utf-8').split(' ')[0]
# 构造ping命令
ping_command = f'ping {ip[:-1]}'
# 执行ping命令并将结果保存到变量output中
output = subprocess.check_output(ping_command, shell=True).decode('utf-8')
# 查找存活的主机IP地址
for line in output.split('\n'):
if 'ttl' in line.lower():
print(line.split()[3])
```
以上代码会获取本机的IP地址,然后构造ping命令并执行,最后查找出存活的主机IP地址并输出。如果要扫描整个局域网内的设备,可以使用类似的方法,将IP地址逐个进行ping测试即可。