shell 檢測 RDP 服務異常,但端口還在監聽且有響應的一種方法

近一段時間,工作中不止一次遇到這樣的情況:

用戶反映有Windows設備(暫命名爲A)無法RDP遠程登錄,登錄到同網段的設備(暫命名爲B),發現可以從B設備 ping 通 A設備,嘗試 telnet A 3389, 也有返回的字符串,但是真正用mstsc登錄的時候,就是連不上。

經過觀察,發現了這樣的一個情況:

使用同網段的另一臺設備(暫命名爲C),這是一臺Linux設備。

首先嚐試 telnet B 3389, 有正常返回,需要使用 ^] 退出

之後繼續 telnet A 3389,有正常返回,但是即刻在返回的最後一行出現:Connection closed by foreign host 字樣

經過確認,是設備的RDP服務已經宕了,但是端口還在監聽,而且還有看似正常的響應。

爲了應對這樣的情況,經過查閱資料和多次嘗試,目前看可以使用這樣的命令進行檢測:
 

#! /bin/bash

file=`mktemp`

timeout 5s telnet 127.0.0.1 22 > $file

grep "Connection closed" $file | wc -l

rm -rf $file

原理是,使 telnet 運行很短的時間,並輸出到臨時文件,然後看文件中是否有即刻連接失敗的返回。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章