我有一个应用程序,它是 Windows 服务。它使用 TCP/IP 访问许多其他服务。例如 SQL Server 数据库、Informix 数据库、邮件服务器等。
例如,它还将访问不同服务器上的多个 SQL 服务器实例。
如果我想在一天的时间里记录它所连接的所有不同的服务,我该怎么做?
如果我使用 TCPView,我可以看到我想要的所有信息,例如远程地址、端口,但它是一个实时视图,因此数据不会被保存。
答案1
进程监控会做你正在寻找的事情
设置好过滤器后,请务必选择File->Backing Files...
一个文件来保存日志,否则一旦虚拟内存耗尽或关闭程序,它将开始删除旧日志。
一旦设置了新的支持源,请务必重新启动程序,直到您关闭并重新打开程序,更改才会生效!
答案2
我认为Wireshark会做你想做的事。
您可以使用其强大的过滤器来仅选择来自特定端口或 IP 的 TCP 流量。简而言之,您可以让它运行并仅收集对您重要的数据。您可以看到通过网络适配器的所有内容的数据包级通信。
答案3
如果您正在运行 Windows,您可以设置运行脚本的计划作业:
netstat -t > C:\your_output_path
your_output_path 文件可以包含变量 %time% 和 %date%,以便每次脚本运行时,它都会将数据输出到名称中带有时间和日期的文件中。
如果你安装类似的工具Unix实用程序您可以使用 grep 和 gawk 命令过滤掉不需要的记录,只留下需要的记录。例如,要获取 PostgreSQL 连接,您可以执行
netstat -t | grep 5432
按照您想要的频率运行此脚本,您将获得一堆文件,其中包含您在该时间段内的连接运行记录。
答案4
我刚刚注意到一个较旧的 SysInternals 实用程序名为TCP视图显然它附带一个控制台版本...就像是增强版的 TCP netstat。