在 netcat GNU(不是 BSD)的手册页中,它写道:
netcat -l -p 端口 [选项] [主机名] [端口] ...
和:
-s ADDRESS 指定用于创建套接字的源地址。
[hostname]
和-s
、 和[port]
和有什么区别-p
?
我在手册页或中找不到答案--help
。
在 netcat GNU(不是 BSD)的手册页中,它写道:
netcat -l -p 端口 [选项] [主机名] [端口] ...
和:
-s ADDRESS 指定用于创建套接字的源地址。
[hostname]
和-s
、 和[port]
和有什么区别-p
?
我在手册页或中找不到答案--help
。
Accept-Encoding: gzip,deflate
有人可以解释我在听时看到的意思ncat
吗?
这是否意味着身体被压缩?如果是这样,我该如何解压缩它?
$ nc -lnvp 4000
Ncat: Version 7.70 ( https://nmap.org/ncat )
Ncat: Listening on :::4000
Ncat: Listening on 0.0.0.0:4000
Ncat: Connection from 10.10.10.10.
Ncat: Connection from 10.10.10.10:33096.
POST /?watch_id=example HTTP/1.1
Accept-Charset: UTF-8
Content-Length: 0
Host: example.com:4000
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.5.10 (Java/15.0.1)
Accept-Encoding: gzip,deflate
在一台服务器上,我们遇到了各种 UDP 连接都失败的问题。相同的应用程序和测试可以在具有相同操作系统和类似设置的其他服务器上运行。
nc -vz -u 83.61.**.** 7092
Connection to 83.61.**.** 7092 port [udp/*] succeeded!
使用 Go 应用程序:
read udp 5.9.**.**:49696->83.61.**.**:7092: i/o timeout
我们使用 php 和 golang 应用程序对其进行了测试。
我们也尝试过使用完全禁用的防火墙。
如果 netcat 成功但其他应用程序不能成功,可能是什么原因。
我正在尝试捕获作为 StatsD 指标发送的 UDP 流量(在端口 8125 上)。
我尝试过的最简单的方法是运行nc -ul 8125
将指标打印到终端......但它们不是换行符分隔的。此外,将输出传送到 grep 不会显示任何内容。
我尝试的下一个方法是socat - udp-listen:8125
与 netcat 给出类似的结果。
但是,当我将 -v flat和管道 stderr 传递给 stdout ( socat -v - udp-listen:8125 2> &1 | grep ...
) 时,我会得到模糊的不错的结果,但还有很多额外的不需要的输出。
我也尝试过 tshark,tshark -l -f "port 8125" -i ln0 -E separator=, -Tfields -e data
但这会将输出打印为十六进制......而不是 ascii。我可以传入 -x 标志,它并排打印十六进制和 ascii。不是我想要的,也不是很友好。我还尝试了许多其他 tshark 选项,但没有任何东西能够简单地打印 UDP 指标。
我已经看到了一些例子,其中有人做类似的事情正在增加输出,例如| while read output; do echo $output; done;
但是,我没有用这种方法取得任何成功,而且我不是一个真正的 unix 人,所以我正在努力想出一个解决方案。
毕竟,这似乎并没有什么不寻常的任务,而且nc -ul 8125
几乎就在那里......
为了提供更多上下文......执行发送的代码如下所示:
var udpClient = new UdpClient();
udpClient.Connect("127.1", 9999);
while (true)
{
var bytes = Encoding.UTF8.GetBytes("hi");
udpClient.Send(bytes, bytes.Length);
Thread.Sleep(1000);
}
所需的输出看起来像
hi
hi
hi
...
而nc -ul 9999
输出hihihihihi....
我想使用 netcat 来测试某些端口是否正在侦听,但是由于该命令将在语言不同于英语的机器上执行,因此grep
基于单词的输出并不是一个好主意LISTENING
(例如,我在德国电脑上看到了这个词ABHOREN
)。
我试图查看 netcat 的联机帮助页,但似乎找不到解决方案,所以我想知道是否有人设法将端口的状态转换为数字格式,而不是字符串。
提前致谢 :)
我正在尝试验证我们的一些服务器是否可以在将我们的一些服务迁移到它们之前通过某些端口进行通信,并且它们没有被我们组织的防火墙 ACL 阻止。
说得通
[mrduki@mybox1~]$ nc -ul 40000
---
[mrduki@mybox2~]$ nc -zvuw2 mybox1.com 40000
Connection to mybox1.com 40000 port [udp/*] succeeded!
没有意义
[mrduki@mybox1~]$ nc -ul 40000
[mrduki@mybox1~]$ ^C
---
[mrduki@mybox2~]$ nc -zvuw2 mybox1.com 40000
Connection to mybox1.com 40000 port [udp/*] succeeded!
事实上,如果我从 进行端口扫描40000-40100
,每个端口都会成功。
如果我在没有的情况下进行相同的测试-u
(以便它测试 TCP 而不是 UDP),我会得到40000 (tcp) timed out: Operation now in progress
错误,正如我所期望的那样(因为我没有监听这样的 TCP 服务40000
)。
做一个虽然显示没有这样的服务在这些端口上监听sudo netstat -alnp | grep LISTEN
。mybox1
那么我错过了什么?
如果我像这样运行一个简单的 UDP 侦听器:
nc -l -u -p 1234
然后我似乎只得到了第一个入站 UDP 数据包。例如,如果我运行:
$ echo abc | nc -u localhost 1234
["abc" appears in output of server as expected]
$ echo abc | nc -u localhost 1234
read(net): Connection refused