如何使用python识别远程主机操作系统(Unix / Windows)?我找到的一个解决方案是检查port22是否已打开,但后来知道某些Windows主机也打开了端口22但连接被拒绝。请让我知道做同样的有效方法。提前谢谢。
答案 0 :(得分:1)
出于安全原因,大多数操作系统不会通过网络公布信息。虽然nmap等工具可以通过网络扫描端口来推断在远程系统上运行的操作系统,但可靠地了解操作系统的唯一方法是登录系统。在许多情况下,操作系统将作为登录过程的一部分进行报告,因此通过网络建立连接就足以确定操作系统。跑步" uname -a"在远程系统上也将检索Linux系统上的操作系统类型。
这将从HOST检索欢迎字符串,通常包括操作系统类型。替换UNAME的有效用户名和HOST的主机名。
#!/usr/bin/env python3 import sys import subprocess CMD="uname -a" conn = subprocess.Popen(["ssh", "UNAME@HOST", CMD], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE) res = conn.stdout.readlines() print(res)