2010-09-12 29 views
8

Sản lượng netstat chứa điều như ...Extract IP từ đầu ra netstat

tcp  0  0 0.0.0.0:80  221.126.149.99:51973 ESTABLISHED 23879/apache2 
tcp  0  0 0.0.0.0:80  66.249.68.154:40883  ESTABLISHED 23899/apache2 
tcp  0  0 0.0.0.0:80  66.249.68.81:41200  ESTABLISHED 23892/apache2 
tcp  0  0 0.0.0.0:80  66.249.67.121:59355  ESTABLISHED 23905/apache2 
tcp  0 4465 0.0.0.0:80  110.75.175.27:48139  ESTABLISHED 23901/apache2 

tôi sử dụng này lệnh

netstat -anpt|grep apache2 |grep ESTABLISHED | awk -F "[ :]" '{print $4}' 

tôi đã không thể có được địa chỉ IP, bất kỳ gợi ý?

Trả lời

9

này sẽ trả về một danh sách các địa chỉ IP duy nhất bạn đã kết nối quá:

netstat -anpt | grep apache2 |grep ESTABLISHED | awk '{ print $5 }' | cut -d: -f1 | sort -u 

Vâng, tôi nghĩ tôi cần phải thay đổi kính của tôi cũng = P

2

Bạn thực sự thân thiết. Bạn chỉ cần thay đổi lĩnh vực tách biểu thức chính quy của bạn để nó không xem xét một khoảng trắng đơn hoặc ruột kết để tách các lĩnh vực:

netstat -anpt|grep apache2 |grep ESTABLISHED | awk -F "[ :]*" '{print $4}' 
2

Bạn có thể thử

netstat -anpt|awk 'BEGIN {FS="[ :]+"};/ESTABLISHED/ && /apache/{print $6}' 

Đối với một số lý do tôi am đếm 6 lĩnh vực, trong khi tất cả mọi người khác đang đếm 4 ... Tôi có nên mua kính mới? :)

HTH!

+0

Bạn không phải là người duy nhất. Tôi muốn khuyên bạn nên di chuyển các mẫu grep bên trong awk. –

+0

@glenn jackman Đồng ý. Đã chỉnh sửa. Đôi khi, trong các câu hỏi được hình thành tốt, khi OP đăng giải pháp của mình, tôi cảm thấy tốt hơn là sửa đổi tối thiểu có thể, bởi vì nó làm cho lỗi dễ hiểu hơn. Có thể là tôi sai –

2
netstat -anpt | awk '/apache2/&&/ESTABLISHED/{sub(/:*/,"",$4);print $4} ' 
+0

Hành động lúng túng phải là: '{sub (/:.*/,"",$ 5); in $ 5}' –

+1

tại sao lại là $ 5? Tôi không sử dụng bất kỳ FS nào nhưng mặc định là – ghostdog74

+0

Nó đã từng là $ 4, nhưng đã lên đến $ 5. Mã bị thổi phồng. – Lizz

-1
netstat -ant | grep 80 | wc -l 
+0

Điều này sẽ tính số lượng 80 được liệt kê trong đầu ra của lệnh 'netstat -ant', đó là cách không chính xác. –