这似乎有点奇怪。使用netstat -a -b -n我发现以下内容:
TCP 192.168.1.X:1150 157.56.124.76:443 ESTABLISHED [Explorer.EXE]
Run Code Online (Sandbox Code Playgroud)
事实证明,157.56.124.76解析db3wns2011017.wns.windows.com为的 ip 是来自Microsoft的静态 ip 。
此外,tcpView从sysinternals使用我可以看到它是通过 https 的 TCP 连接。
我尝试关闭连接,一秒钟后它又重新打开。最初发送了 1 KB 的数据,之后什么也没有。
这到底是怎么回事,为什么成立?
我有 Windows 8.1 企业版。我没有安装 OneDrive 或任何其他微软云的东西。这是持久的,并且在启动后存在。
更新
在发现这与 Windows 推送通知有关后,我按照此处的步骤禁用此类通知,但连接仍然存在。
假设我有多个网卡连接到我的PC,我如何知道使用哪个网卡进行通信。例如,如果我使用
ping 192.168.x.xxx
Run Code Online (Sandbox Code Playgroud)
我想知道用于通信的卡(以及哪个 IP 地址)。
命令
netstat
Run Code Online (Sandbox Code Playgroud)
将告诉我们有关活动连接的信息。我对活动连接不感兴趣,但我想知道下一次连接将使用哪张卡。也就是说,如果我们使用ping哪个卡(或IP地址)将被使用?
例如,我想找到一些在指定端口上运行的进程80
我跑了
fuser 80/tcp
Run Code Online (Sandbox Code Playgroud)
并一无所获
进而
netstat -tulpn|grep "80\|PID"
Run Code Online (Sandbox Code Playgroud)
并得到了
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 :::80 :::* LISTEN -
Run Code Online (Sandbox Code Playgroud)
PID 是-
那么是什么-意思呢?谢谢!
我的 ASP.NET 和 SQL Server 2012 应用程序在 Windows Server 2008 R2 上运行。突然,我在服务器上的互联网停止工作,我的应用程序开始抛出,
An operation on a socket could not be performed because the system lacked sufficient buffer
space or because a queue was full
Run Code Online (Sandbox Code Playgroud)
运行 netstat 显示 PID = 0 打开了很多端口。Netstat 说,
Process Id = 0, State = TIME_WAIT have 130,053 ports open
Process Id = 38840, State = CLOSE_WAIT have 5 ports open
Process Id = Any, State = LISTENING have 30 ports open
Process Id = Any, State …Run Code Online (Sandbox Code Playgroud) 我通过 mono 运行几个不同的服务,每个服务都有自己的端口,但是当我使用 netstat 检查哪些已分配端口而哪些没有分配时,我得到的只是 2 个名为“mono”的进程,无法分辨除了查看端口之外,有时可能会发生变化。
是否可以让 netstat 显示每个端口的“命令”,就像 htop 对进程所做的那样?
这样我就可以分辨出哪个进程是哪个进程。
我有一个 ssh 隧道侦听本地端口,比如 8888,从远程机器打开ssh -R 8888:localhost:80 myuser@myhost。我需要在“myhost”上为“myuser”编写一个脚本来关闭这个隧道。
该脚本将由“myuser”在“myhost”上执行。它不会由 root 执行,也不会执行 sudo。
一种方法是使用 lsof 或 netstat 找到侦听 8888 的进程的 PID,然后终止该进程。然而,lsof 和 netstat 都拒绝给我 PID 而不去 sudo。使用 netstat 我只是得到-而不是没有 sudo 的“PID/程序名称”。
有没有办法找出在没有根权限的情况下侦听给定端口的进程的 PID?侦听此端口的进程在我们所在的同一用户下运行。或者有没有其他方法可以从外部关闭 ssh 隧道?
请注意,使用 ssh 转义序列重置连接不是解决方案,因为我们不在隧道中。我们的脚本需要由同一用户在同一主机上单独运行。
另请注意,仅运行killall sshd不是解决方案,因为它会杀死所有其他 ssh 连接,而不仅仅是这个连接。
这个问题不是许多类似问题的重复,因为我发现他们接受的所有答案都需要 root 权限,或者只是杀死所有 ssh 连接。
主机“myhost”正在运行 Ubuntu 12.04.5。
编辑:@Jakuje 要求的讨论摘要:
@Patrick 建议了一种使用setuid或修改的方法,/etc/sudoers以允许用户在没有完整 sudo 的情况下以 root 权限运行脚本。虽然,因为setuid我们需要编写一个二进制文件而不是脚本。但是,允许用户以 root 权限运行脚本可能存在潜在的安全风险。而且这个解决方案仍然没有涵盖用户根本没有 root 访问权限的情况,所以他不能修改/etc/sudoers. 如果@Patrick 将此写为答案,我肯定会赞成它,但我不会将其标记为已接受。
@EricRenouf 发现 …
netstat -ntpl在 Debian 9上命令的替代方法是什么?
我正在使用此命令来检查正在侦听端口的程序。
或者使用参数-ntupl(带 u)包括 UDP。
我正在开发一个节点应用程序,并且有一个选项可以设置进程标题(进程名称)。这只在某些工具(如 ps 和 top)中设置它,而不是在htop或 中设置netstat。
我发现这篇文章解释了大多数应用程序是如何做到的,但它在 netstat 中没有改变。
这让我想知道这些程序从哪里获得进程名称。他们会从那里得到它/proc/##/cmdline吗?(## 是进程的 PID)
我认为把事情搞砸/proc是个坏主意(而且可能不可能),所以如果这些程序在那里得到它,有没有办法改变它?
首先,我只想确保用户 Erik Bitemo 获得了我在这里使用的原始代码的信任。输出是我正在寻找的一个例外:其中一个端口消失并且“System System5”出现在它的位置,我无法弄清楚为什么会发生这种情况。
目标:在同一行上显示所有 TCP(侦听)和 UDP 端口以及与每个端口关联的进程。
正在使用的一种衬垫:
$nets = netstat -bano|select-string 'LISTENING|UDP'; foreach ($n in $nets) { $p = $n -replace ' +',' '; $nar = $p.Split(' '); $pname = $(Get-Process -id $nar[-1]).ProcessName; $n -replace "$($nar[-1])","$($ppath) $($pname)"; }
Run Code Online (Sandbox Code Playgroud)
示例输出:
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING svchost
TCP 0.0.0.0: System System5 0.0.0.0:0 LISTENING System
TCP 0.0.0.0:623 0.0.0.0:0 LISTENING LMS
它更改的端口是 445,但我不知道为什么当其余端口按预期工作时它只更改那个端口。为什么脚本将 445 更改为“System System5”?
不幸的是,无法使用其他工具,因此我只能使用内置的 Windows 工具。
有没有一种方法可以在不重新启动设备的情况下清除“netstat -s”的统计信息?
我试图确定不确定时间内的错误数量。
netstat ×10
linux ×3
networking ×3
asp.net ×1
debian ×1
ping ×1
powershell ×1
process ×1
script ×1
ssh ×1
stretch ×1
tcp ×1
tunnel ×1
ubuntu ×1
windows-8.1 ×1