我試圖爲Windows創建一個腳本,它只計算系統上的Established,Time_Wait和Closed_Wait連接數並在命令提示符下打印它們。我已經制作了一個shell腳本,可以在Linux上執行此操作,但shell腳本無法在Windows中運行。我試圖使用.bat來執行腳本,但這不起作用(可能是因爲它仍然是Windows中的一個shell腳本:/)它必須只顯示Established,Time_Wait和Closed_Wait的原因是因爲腳本正在如果有任何其他連接類型出現,監控程序將使用此功能。任何人都可以提出建議嗎?謝謝!腳本只計數Established,TIME_WAIT和Closed等待連接使用Netstat
回答
以下(應該)在沒有對* nix和Windows進行任何更改的情況下工作。我在Ubuntu w/Perl v.5.18.0,Linux Mint w/Perl v5.22.0和Win2k8R2(w/Strawberry Perl v5.8.8)上測試過它。
#!/usr/bin/perl
use strict;
use warnings;
my @stat = split '\n', `netstat -nat`;
my @wanted = qw(
ESTABLISHED
TIME_WAIT
CLOSED_WAIT
SYN_SENT
SYN_RECV
);
my %data = map {$_ => 0} @wanted;
for (@stat){
s/^\s+//;
my $status;
if ($^O eq 'MSWin32'){
$status = (split)[3];
}
else {
$status = (split)[5];
}
next if ! $status;
$data{$status}++ if defined $data{$status};
}
print "$data{$_}\n" for @wanted;
這太棒了,謝謝!我試圖通過修改第6行並在最後添加兩行來添加另外兩個狀態(syn_sent和syn_received),但似乎會破壞腳本。是否有某種方法需要完成? – monkeychef
我做了一些重大的效率變更。如果你想添加更多的條目,把它們放在'@ wanted'列表中。輸出按「@ wanted'列表的順序打印。您可以從該列表中添加/刪除,並且不會影響輸出以外的任何內容。 – stevieb
非常感謝您的幫助,這太棒了! – monkeychef
- 1. 當使用Docker時,ESTABLISHED連接不會出現在netstat中
- 2. URL監視器在netstat中產生多個ESTABLISHED(連接)條目
- 3. 連接超時TCP寫入(netstat顯示ESTABLISHED)
- 4. HttpListener葉TIME_WAIT連接
- 5. ActiveMQ保持ESTABLISHED連接
- 6. Java連接netstat -ano
- 7. Mongodb沒有連接只有等待連接
- 8. 在腳本中使用等待
- 9. RUBY腳本:連接到Telnet會話時等待任何輸出
- 10. 很多TIME_WAIT中的連接
- 11. 太多的TIME_WAIT連接
- 12. TIME_WAIT中的Netty連接
- 13. 爲什麼蒙戈DB serverStatus連接電流不等於netstat的計數
- 14. xdebug,Netbeans,和MAMP - 等待連接(永遠)
- 15. 等待線程完成使用連接。非常基本的
- 16. 等待連接(netbeans-xdebug)
- 17. 等待調試器連接
- 18. PhpStorm xdebug等待連接
- 19. 等待網絡連接
- 20. Node.js/Redis - 等待連接?
- 21. 等待在PhantomJS腳本
- 22. Perforce等待changelist diff腳本
- 23. 量角器等待數據庫連接
- 24. Linux在ESTABLISHED連接上不響應SYN
- 25. 使用Winsock2和C縮短TCP連接的等待時間
- 26. 如何使腳本在迭代中等待,直到重新建立Internet連接?
- 27. 使用一系列TCP端口計算連接數的腳本
- 28. 緩存本地在Android上等待Internet連接的數據
- 29. 套接字等待連接超時
- 30. 如何使用.NET NetworkStream和TcpClient連接到遠程IP並等待數據?
您使用什麼參數來生成輸入,並請提供輸出的準確樣本。 – stevieb
我的Linux腳本的原始輸入是:ESTABLISHED ='netstat -nat | egrep'ESTABLISHED'| wc -l' TIME_WAIT ='netstat -nat | egrep'TIME_WAIT'| wc -l' CLOSE_WAIT ='netstat -nat | egrep'CLOSE_WAIT'| wc -l' SYN_SENT ='netstat -nat | egrep'SYN_SEND'| wc -l' SYN_RECV ='netstat -nat | egrep'SYN_RECVEIVED'| wc -l' echo $ ESTABLISHED echo $ TIME_WAIT echo $ CLOSE_WAIT echo $ SYN_SENT echo $ SYN_RECV輸出應該只是5個獨立線路上每個連接狀態的計數。 – monkeychef
@monkeychef您應該使用該信息編輯原始帖子。 –