
我們需要檢查以下遠端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