Penyegaran berkelanjutan Netstat (arloji mengubah output)

18

Saya menggunakan perintah sederhana ini untuk memonitor koneksi (untuk menghadapi beberapa serangan DoS baru-baru ini) di server Debian saya:

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

Bagaimana saya menjalankannya terus menerus? Jadi itu akan menyegarkan sendiri sekali per menit (atau jumlah waktu tertentu, tentu saja). Saya mencoba menonton:

watch -n 30 "netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n"

Tapi itu mengubah output dari daftar yang bagus dengan jumlah koneksi ke sesuatu seperti ini:

1 tcp        0  10015 [LOCAL IP]
...
1 Proto Recv-Q Send-Q Local Address           Foreign Address         State
1 Active Internet connections (w/o servers)

Jadi IP eksternal tidak ditampilkan. Apakah ada sesuatu yang saya lewatkan?

Beginilah tampilan aslinya:

  2 [IP ADDRESS]
  4 [IP ADDRESS]
  4 [IP ADDRESS]
  4 [IP ADDRESS]
  7 [IP ADDRESS]
 16 [IP ADDRESS]
 71 [IP ADDRESS]

Dan ketika saya mengatakan [LOCAL IP]maksud saya IP mesin saya.

Ketika saya menjalankannya dengan -citu hanya membeku.

Ruslan Osipov
sumber
Apakah Anda menjalankan arloji dengan hak akses root? Perintah itu terlihat baik dan sepertinya berperilaku seperti yang saya harapkan pada mesin saya. Berjalan tanpa akan mencetak alamat dan, setelah 30 detik mungkin mencetak pesan kesalahan.
@StewartPlatt saya menjalankannya di root. Saya menambahkan output perintah asli. Masalahnya adalah, ketika saya menonton - itu hanya menghasilkan iklan alamat IP saya yang tidak terhubung dengan saya sama sekali.

Jawaban:

22
netstat -c

dapat membantu Anda jika saya tidak salah memahami masalah Anda. -c adalah singkatan --continuous.

Sunting: ini dia:

watch -n 30 "netstat -ntu | awk '{print \$5}' | cut -d: -f1 | sort | uniq -c | sort -n"

Saya telah menambahkan \ sebelum $.

hcg
sumber
sudah mencoba, maaf saya tidak menyebutkan ini dalam pertanyaan. Itu hanya membeku ketika saya menambahkan -c.
Saya menyadari bahwa, $ 5 dihapus pada output arloji. Mungkin ada masalah tanda kutip. Saya sedang menggali itu ..
terima kasih, baik untuk mengetahui tentang melarikan diri karakter khusus di arloji
1

Jalankan saja loop sementara yang tidur selama 60 detik

[root@host] $ while true
> do
> netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
> sleep 60
> done

Ini akan memberi Anda output yang sama setiap 60 detik

Chris Alderson
sumber