Linux
為活動連接解析 netstat 結果的想法
我有幾個遠端設備創建反向 ssh 連接回到我的伺服器,以便我對它們進行 ssh 並遠端管理它們。他們通過自定義埠連接回我。當我
netstat -an | grep 127.0.0.0.1:
在我的伺服器上做 a 時,我會得到一個目前連接的設備列表。輸出如下所示:tcp 0 0 127.0.0.1:6001 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:6002 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:6003 0.0.0.0:* LISTEN
其中 600x 是設備連接的埠。我的問題是這個。我想製作一個可以在我的伺服器上執行的腳本,顯示目前連接的設備。我想要腳本將讀取的配置文件列出我的設備,如下所示:
NORTH:6001 SOUTH:6002 EAST:6003 WEST:6004
並且腳本將解析
netstat
命令的輸出,輸出如下所示:活動連接:NORTH、SOUTH、EAST
非活動連接:WEST
我希望這不會太令人困惑。這是可以用 grep 和 awk 完成的嗎?
這裡有三個步驟
- 只需從 netstat 中提取活動埠名稱
netstat -an | grep 127.0.0.1: | awk -F "[ :]+" '{print $5}'
指定一
awk
組空格和冒號作為分隔符,並僅獲取埠 ID。
device_list.txt
通過使用 grep 和步驟 1 中命令的輸出作為模式,比較設備列表文件(例如命名)中的這些埠
netstat -an | grep 127.0.0.1: | awk -F "[ :]+" '{print $5}' | grep -f - device_list.txt
這將給出這樣的輸出
NORTH:6001 SOUTH:6002 EAST:6003
- 可以通過
-v
在 grep 中使用 a 來獲取非活動連接
netstat -an | grep 127.0.0.1: | awk -F "[ :]+" '{print $5}' | grep -v -f - device_list.txt
這個的輸出是
WEST:6004
然後,您可以圍繞上面編寫腳本以您想要的任何格式列印