Jak monitorować połączenia TCP w czasie


7

Mam aplikację, która jest usługą systemu Windows. Dostęp do szeregu innych usług za pomocą protokołu TCP / IP. Np. Bazy danych serwera sql, bazy danych informix, serwery poczty itp.

Na przykład będzie również uzyskiwać dostęp do wielu wystąpień serwera SQL na różnych serwerach.

Jak chcę to zrobić w ciągu dnia, jeśli chcę zalogować wszystkie różne usługi, z którymi się połączyłem?

Jeśli korzystam z TCPView, widzę wszystkie potrzebne informacje, np. Zdalny adres, port, ale jest to widok w czasie rzeczywistym, więc dane nie są zapisywane.

Odpowiedzi:


7

Process Monitor zrobi dokładnie to, czego szukasz

wprowadź opis zdjęcia tutaj

Po skonfigurowaniu filtrów pamiętaj, aby przejść do File->Backing Files...i wybrać plik, w którym chcesz zapisać dzienniki, w przeciwnym razie rozpocznie się usuwanie starych dzienników, gdy skończy się pamięć wirtualna lub zamkniesz program.

Pamiętaj, aby ponownie uruchomić program po ustawieniu nowego źródła kopii zapasowej, zmiana nie wpłynie, dopóki nie zamkniesz i nie otworzysz ponownie programu!


Używałem monitora procesu, ale nie miałem pojęcia, że ​​może on również robić rzeczy sieciowe. Dokładnie to, o co mi chodziło.
Peter

4

Myślę, że Wireshark zrobiłby dokładnie to, co chcesz.

Możesz użyć jego potężnych filtrów, aby wybrać tylko ruch TCP z niektórych portów lub IP. Krótko mówiąc, możesz pozwolić mu działać i zbierać tylko dane, które są dla Ciebie ważne. Możesz zobaczyć komunikację na poziomie pakietu dla wszystkiego, co przechodzi przez twoją kartę sieciową.


3

Jeśli korzystasz z systemu Windows, możesz skonfigurować zaplanowane zadanie uruchamiające skrypt:

netstat -t > C:\your_output_path

plik twoja_output_path może zawierać zmienną% time% i% date%, dzięki czemu przy każdym uruchomieniu skryptu wyprowadza dane do pliku o nazwie czas i data.

Jeśli zainstalujesz narzędzie takie jak UnixUtils , będziesz mógł użyć polecenia grep i gawk, aby odfiltrować niepotrzebne rekordy i pozostawić pożądane tylko raz. Na przykład, aby uzyskać połączenie PostgreSQL, zrobiłbyś to

netstat -t | grep 5432

Uruchom ten skrypt tak często, jak chcesz, a będziesz mieć mnóstwo plików z uruchomionym rekordem połączenia w tym czasie.


Netstat -t wyświetla sesje TCP, ale nie informuje, który proces lokalny „jest właścicielem” sesji (ma otwarte gniazdo). Możesz użyć -o, aby wyświetlić PID, ale to samo nie pomaga, ponieważ sam netstat nie zamapuje PID na czytelną dla człowieka nazwę procesu, a PID zostaną przetworzone ... Rozważ także użycie -n, aby pomiń odwrotne rozdzielczości DNS podczas listowania. Od Windows 7 istnieje standardowe narzędzie Windows o nazwie „resmon.exe”, które zapewnia bieżącą migawkę sesji TCP, w tym ludzką nazwę procesu będącego właścicielem sesji TCP. Jest to jednak tylko GUI i nie można zalogować się do pliku.
frr

0

Właśnie zauważyłem starszy program SysInternals o nazwie TCPview, któremu najwyraźniej towarzyszy wersja konsolowa ... jak netstat dla TCP na sterydach.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.