标签: netstat

批量打破FOR

我目前的批处理代码行是:

for /L %%a in (8000,1,8100) do netstat /a /n | find "%%a" | find "LISTENING" || set tmp_freeport=%%a && goto found
Run Code Online (Sandbox Code Playgroud)

我们的想法是找到一个可用于收听的空闲端口,范围为8000-8100.

目前,我正在使用端口8000,因此脚本应该转到8001.

在循环之后%tmp_freeport%,它应该等于8001,并且其值在以后正确使用.

问题是循环无论如何都会继续运行.netstat被调用来搜索范围内的所有101个端口,这显然是无用的和不需要的,因为搜索必须在脚本可以继续之前完成.

谁能告诉我如何打破批量FOR循环?

(或者,如果有更好的方法可以找到自由端口,请参阅我的相关问题)

netstat for-loop cmd batch-file

6
推荐指数
1
解决办法
1万
查看次数

是什么原因导致这么多TIME_WAIT连接打开?

因此,我在一台服务器上有应用程序A,该服务器每秒向另一台服务器上的应用程序B发送710 HTTP POST消息,该应用程序B正在单个端口上侦听。连接不是保持活动状态;他们是封闭的。

几分钟后,应用程序A报告无法打开与应用程序B的新连接。

我正在两台计算机上连续运行netstat,并且发现每台计算机上都打开了大量TIME_WAIT连接。几乎所有显示的连接都在TIME_WAIT中。从在线阅读来看,这似乎是双方关闭连接后30秒钟(根据/ proc / sys / net / ipv4 / tcp_fin_timeout值,在我们的计算机上为30秒钟)的状态。

我在不断运行的每台计算机上运行一个脚本:

netstat -na | grep 5774 | wc -l
Run Code Online (Sandbox Code Playgroud)

和:

netstat -na | grep 5774 | grep "TIME_WAIT" | wc -l
Run Code Online (Sandbox Code Playgroud)

在应用程序A报告无法打开与应用程序B的新连接之前,每台计算机上的每个计算机的价值似乎已达到28,000。

我已经读过这个文件:/ proc / sys / net / ipv4 / ip_local_port_range提供了可以一次打开的连接总数:

$ cat / proc / sys / net / ipv4 / ip_local_port_range 32768 61000

61000-32768 = 28232,与我看到的大约28,000 TIME_WAIT一致。

我的问题是,在TIME_WAIT中如何有这么多连接。

似乎每秒关闭710个连接,我应该看到在给定时间大约有710 * 30秒= 21300。我想仅仅是因为每秒有710个被打开并不意味着每秒有710个正在关闭...

我唯一能想到的是操作系统缓慢关闭连接。

netstat network-programming tcp

6
推荐指数
1
解决办法
9425
查看次数

如何找到与 HTTP.SYS 进程的 TCP 连接背后的确切进程

当我使用 netstat 时,我收到这样的信息 - PID 4 表示 HTTP.SYS

Active Connections

  Proto  Local Address          Foreign Address        State           PID
  TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       4
  TCP    10.140.126.48:80       10.140.126.139:57030   ESTABLISHED     4
  TCP    10.140.126.48:80       10.140.126.181:57918   ESTABLISHED     4
  TCP    [::]:80                [::]:0                 LISTENING       4
Run Code Online (Sandbox Code Playgroud)

因此,使用netsh我可以接收有关 HTTP 层上特定侦听器的信息

netsh http show servicestate view=requestq verbose=no
Run Code Online (Sandbox Code Playgroud)

Snapshot of HTTP service state (Request Queue View): 
----------------------------------------------------- 

Request queue name: Other Application Pool
    Version: 2.0
    State: Active
    Request queue 503 verbosity level: Limited
    Max requests: 1000
    Number of active …
Run Code Online (Sandbox Code Playgroud)

windows port networking netstat http.sys

6
推荐指数
0
解决办法
706
查看次数

Mac 上的 netstat -pant 等效项

在 Ubuntu 中,要查看监听过程,我使用执行以下命令 netstat -pant 我会得到与此类似的内容

版权归 samclass.info 所有

Mac 上的等效命令是什么?

macos netstat

6
推荐指数
1
解决办法
6596
查看次数

如何将 PowerShell 脚本作为服务运行?

我创建了下面的脚本来检查应用程序的端口 2025 并记录连接数。

我需要此脚本作为 Windows 上名为 的服务运行netstat_2025。有谁知道是否有这种可能性?

我不想使用任务计划程序,而是在 Windows 上将脚本作为服务运行。

脚本 SCTT521CTO.ps1

$startTime =  (Get-Date).ToString("dd_MM_yyyy")
$LogDate = ((get-date).ToLocalTime()).ToString("yyyy-MM-ddTHH:mm:ss.fff")
$hostname = hostname

$portTServer = 8000
$FileTserver = netstat -ano | findstr "8000"

$LogTserver = $LogDate + " - Quantidade de Conexoes na porta " + $portTServer + ": " + $FileTserver.count + " - Servidor: " + $hostname
$LogTserver | Out-File -Append D:\SCTT521CTO\netstat_$startTime.log

$limit = (Get-Date).AddDays(-5)
$path = "D:\SCTT521CTO\*"
Get-ChildItem -Path $path -Recurse -Force | Where-Object { !$_.PSIsContainer -and …
Run Code Online (Sandbox Code Playgroud)

powershell netstat

6
推荐指数
2
解决办法
1万
查看次数

关注机器间的pids(ssh)

我基本上尝试编写一个类似pstree的命令,除了它应该遵循跨机器的进程.

我的意思是如果我运行这个:

$ ssh $node sleep 1000
Run Code Online (Sandbox Code Playgroud)

那么命令应该显示如下:

ssh $node -- ($node) sleep 1000
Run Code Online (Sandbox Code Playgroud)

如果我跑步:

$ ssh $node ssh $node sleep 1000

ssh $node---($node) ssh $node---($node) sleep 1000
Run Code Online (Sandbox Code Playgroud)

等等 ...

我的问题是:如何将一台机器上的一个ssh会话映射到另一台机器上的生成进程?

本地父子进程不是问题,但是如何确定在另一个节点上触发另一个进程的一个节点上的哪个ssh命令.

  1. linux 2.6.18

  2. 只有openSSH的"远程"东西.目前正在运行OpenSSH_4.3p2.

  3. 当然,SSH访问所有节点(基于密钥的身份验证),因此可以从所有节点获得ps和netstat.

  4. 仅Linux的"黑客"很好,不需要便携,但当然这将是一个额外的好处.

  5. 用户将始终保持不变,并且我的命令/脚本正在以该用户身份运行.该用户不是root用户.

  6. 不必快,只准确.

自发的解决方案是编写一个pstree克隆,在命令字符串" ssh" 上触发,找出源端口然后转到相关的远程机器并找出sshd由这个特定命令生成的孩子中的哪一个.

但也许有一种更聪明的方式呢?:P

linux ssh netstat ps

5
推荐指数
1
解决办法
296
查看次数

获取 linux 的 /bin/ss 工具的源代码

ss工具类似于netstat. ss 使用记录非常糟糕的 NETLINK 库 ( man 7 netlink)。我在网上找不到如何正确使用 NETLINK_INET_DIAG 功能。ss 工具的源代码会有所帮助,但我也找不到。任何建议将不胜感激。

root@ubuntu:~# uname -a
Linux ubuntu 3.8.0-29-generic #42~precise1-Ubuntu SMP Wed Aug 14 15:31:16 UTC 2013 i686 i686 i386 GNU/Linux

root@ubuntu:~# apt-get source ss
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to find a source package for ss
Run Code Online (Sandbox Code Playgroud)

c linux netstat netlink ss

5
推荐指数
1
解决办法
2874
查看次数

PowerShell:Get-NetTCPConnection 脚本也显示用户名和进程名

我创建了一个脚本来输出Get-NetTCPConnection数据,但另外显示Process NameUsername。该脚本确实有效,但我喜欢任何简化或使其更规范的提示。

我想知道是否有更有效的方法将ProcessName和添加Username到输出中,而无需将值预加载到自定义 PSObject ($obj数组)中。我担心自定义e={($obj |? PID -eq $_.OwningProcess | select -ExpandProperty UserName)}}表达式过于复杂。

$obj=@()

Foreach($p In (Get-Process -IncludeUserName | where {$_.UserName} | `
  select Id, ProcessName, UserName)) {
      $properties = @{ 'PID'=$p.Id;
                       'ProcessName'=$p.ProcessName;
                       'UserName'=$p.UserName;
                     }
      $psobj = New-Object -TypeName psobject -Property $properties
      $obj+=$psobj
  }

Get-NetTCPConnection | where {$_.State -eq "Established"} | select `
  RemoteAddress, `
  RemotePort, `
  @{n="PID";e={$_.OwningProcess}}, @{n="ProcessName";e={($obj |? PID -eq $_.OwningProcess | …
Run Code Online (Sandbox Code Playgroud)

windows powershell netstat

5
推荐指数
2
解决办法
1万
查看次数

端口打开时telnet超时

我买了一个 VPS 并在其上构建了一个 shadowsocks 服务器。它运行良好大约 2 个月,突然无法工作,即我无法使用它来克服 GFW。所以我检查了服务器,重新安装了所有东西,检查了防火墙,但仍然无法解决问题。请帮我解决这个难题!

首先,我可以通过 ssh 连接到服务器。我使用的是 mac,服务器操作系统是 CentOS7。

我试图从 mac ping 服务器,它连接了。

PING vultr (108.61.215.163): 56 data bytes
64 bytes from 108.61.215.163: icmp_seq=0 ttl=50 time=485.473 ms
64 bytes from 108.61.215.163: icmp_seq=1 ttl=50 time=407.054 ms
64 bytes from 108.61.215.163: icmp_seq=2 ttl=50 time=429.089 ms
64 bytes from 108.61.215.163: icmp_seq=3 ttl=50 time=552.046 ms
^C
--- vultr ping statistics ---
5 packets transmitted, 4 packets received, 20.0% packet loss
round-trip min/avg/max/stddev = 407.054/468.416/552.046/56.118 ms
Run Code Online (Sandbox Code Playgroud)

然后我用我在 shadowsocks 中定义的特定端口 telnet 它,但它无法连接。 …

firewall netstat telnet centos7 firewalld

5
推荐指数
1
解决办法
1595
查看次数

Clickhouse分布式表节点停止接受TCP连接

Clickhouse版本:(版本20.3.9.70(官方版本))\n(我知道不再支持此功能,我们有计划升级,但需要时间)

\n

设置

\n

我们正在运行三个查询节点(仅具有分布式表的节点),我们昨天启动了第三个。所有节点都指向相同的存储节点和表。

\n

问题

\n

该节点可以通过 TCP 和 HTTP 正常处理请求长达 11 小时。之后,clickhouse服务器开始关闭TCP连接。当这种情况发生时,HTTP 仍然可以正常工作。

\n

额外信息/证据

\n
    \n
  • system.metrics.tcp_connection随着时间的推移,新节点的数量稳步下降。
  • \n
\n

system.metrics.tcp_connection 随着时间的推移逐渐减少

\n
    \n
  • netstat显示大量 ACTIVE_WAIT 连接
  • \n
\n
netstat -ntp | tail -n+3 | awk \'{print $6}\' | sort | uniq -c | sort -n\n      2 LAST_ACK\n    380 CLOSE_WAIT\n    386 ESTABLISHED\n  29279 TIME_WAIT\n
Run Code Online (Sandbox Code Playgroud)\n

用于比较的普通节点:

\n
1199 CLOSE_WAIT\n1292 ESTABLISHED\n186 TIME_WAIT\n
Run Code Online (Sandbox Code Playgroud)\n

无法打开 clickhouse_client

\n
user@server:~$ clickhouse-client \nClickHouse client version 20.3.9.70 (official build).\nConnecting to localhost:9000 as user …
Run Code Online (Sandbox Code Playgroud)

netstat tcp clickhouse

5
推荐指数
0
解决办法
1600
查看次数