python扫描局域网主机
时间: 2023-06-28 22:16:10 浏览: 189
您可以使用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地址是否能够解析出主机名。如果能够解析出主机名,则说明该主机是存活的。
相关问题
python扫描局域网主机和端口
您可以使用Python的`socket`库来扫描局域网内的主机和端口。以下是一个示例代码:
``` python
import socket
def scan_local_network(port):
ip_prefix = '.'.join(socket.gethostbyname_ex(socket.gethostname())[2][0].split('.')[0:3]) + '.'
for i in range(1, 255):
ip = ip_prefix + str(i)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(0.1)
result = sock.connect_ex((ip, port))
if result == 0:
try:
hostname = socket.gethostbyaddr(ip)[0]
print(f"{ip} ({hostname}) is up and port {port} is open!")
except socket.herror:
print(f"{ip} is up and port {port} is open!")
sock.close()
if __name__ == '__main__':
scan_local_network(80)
```
该代码会获取本机的IP地址,然后逐个尝试局域网内的IP地址和指定端口是否能够建立连接。如果能够建立连接,则说明该主机的指定端口是开放的。同时,如果能够解析出主机名,则会输出主机名。
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测试即可。
阅读全文