python获取局域网内的设备_使用 Python 查看局域网内存活主机
时间: 2024-03-12 15:43:06 浏览: 256
要使用 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测试即可。
相关问题
怎么用python获取局域网下其它主机的名称
可以使用Python的socket和os模块来获取局域网下的主机名。以下是一个简单的示例代码:
```python
import socket
import os
def get_local_ips():
ips = []
for interface in os.popen('ifconfig'):
if 'inet ' in interface:
ip = interface.split()[1]
if not ip.startswith('127.'):
ips.append(ip)
return ips
def get_hostnames():
hostnames = []
for ip in get_local_ips():
try:
hostname = socket.gethostbyaddr(ip)[0]
hostnames.append(hostname)
except socket.herror:
pass
return hostnames
print(get_hostnames())
```
该代码通过调用`ifconfig`命令来获取本地计算机的IP地址列表,然后使用`socket.gethostbyaddr()`函数来获取每个IP地址对应的主机名。请注意,该代码仅适用于Unix/Linux系统,对于Windows系统需要稍作修改。
python扫描局域网主机
您可以使用Python的`socket`库来扫描局域网内的主机。以下是一个简单的示例代码:
``` python
import socket
def scan_local_network():
ip_prefix = '.'.join(socket.gethostbyname_ex(socket.gethostname())[2][0].split('.')[0:3]) + '.'
for i in range(1, 255):
ip = ip_prefix + str(i)
try:
hostname = socket.gethostbyaddr(ip)[0]
print(f"{ip} ({hostname}) is up!")
except socket.herror:
pass
if __name__ == '__main__':
scan_local_network()
```
该代码会获取本机的IP地址,然后逐个尝试局域网内的IP地址是否能够解析出主机名。如果能够解析出主机名,则说明该主机是存活的。
阅读全文