![如何检查操作系统是linux还是其他?](https://linux22.com/image/146422/%E5%A6%82%E4%BD%95%E6%A3%80%E6%9F%A5%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E6%98%AFlinux%E8%BF%98%E6%98%AF%E5%85%B6%E4%BB%96%EF%BC%9F%20.png)
我们需要检查以下远程IP是否是操作系统操作系统或其他赢
例子
12.43.223.4
23.54.67.3
23.5.6.3
我们有Linux机器-redhat,从这台机器我们需要识别远程机器是否是Linux或其他?
据我所知我们可以通过 nmap 来识别
但我想找到其他方法,因为 nmap 没有安装在生产机器上
那么有什么建议如何检查远程机器是Linux还是其他? (不是通过 nmap )
答案1
如果我正确理解你的问题,你是在问;
如何在不登录网络的情况下识别计算机的操作系统
这不可以。网络上的任何计算机系统,假设网络是基于TCP/IP的典型IP(互联网协议),则基于该协议进行通信。如果这就是您需要处理的全部内容,那么:
- 首先可以将网络上的计算机配置为不可见,例如不响应 ping 等,
- 但如果它确实响应或可以看到网络上有此计算机系统的一些迹象,您如何推断它是 Windows、Linux、macOS、Android 还是其他?你不能:IP/TCP 协议不支持这种情况的发生。
我想,如果一个系统以某种方式配置在足够低的级别,以便在发送的每个数据包的 TCP/IP 标头中包含此类信息,那么也许可以使用它,但这是非常自定义的。否则,除非您可以登录该系统,否则据我所知没有可靠的方法。如果您通过 SSH 协议登录系统,那也是一样的,因为 SSH 协议是独立于操作系统的,因此,如果您看到计算机系统通过端口 22 上的 SSH 进行响应,则任何具有任何操作系统的计算机设备都可以执行此操作因为它们遵循 SSH 协议,然后该协议发生在 Internet 协议之上。
这当然就是IP如此伟大的原因,它允许任何设备(无论操作系统)之间进行通信,只要它们遵循相同的协议互联网协议。打个比方,我不需要知道你是男性、女性,还是任何其他特征,只要你遵循给定的语言协议(在本例中为英语),那么我们就可以在某种程度上进行交流。
您可能希望阅读IPV4 维基百科文章,除了互联网的历史。
答案2
for i in hostname1 hostname2;
do
ssh -o 'StrictHostKeyChecking no' $i -A <<'EOF'
uname -a | awk '{if($0 ~ /Linux/){print "Its Linux os"}else{print "its not linux os"}}'
EOF
done