我正在尝试通过读取块内的 nc 向 statsd 发送一个小字符串:
while read line; do
printf "folder.counter:value|1c" | nc -q 0 -u $host $port
done
Run Code Online (Sandbox Code Playgroud)
不幸的是,在 UDP 模式下, nc 似乎想无限期地等待,即使我已经指定了-q 0,手册页说这将使程序在 EOF 后立即退出。
我试过 pass -w 1,但是如果我发送的数据每秒超过一行,数据就会缓冲起来,我会丢失实时统计数据(更不用说冒某种缓冲区溢出的风险了)。
是否可以用 netcat 做我想要做的事情,还是我需要用具有 statsd 库的语言编写一些东西?
我经常使用telnet或netcat连接smtp服务器发送邮件作为测试。
有谁知道如何使用 telnet 或 netcat 发送电子邮件但同时附加文件?可能有更好的方法,但我仍然想知道:-)
我会很高兴使用一个小的 bash shell 来实现目标的解决方案,但不想使用任何其他工具......
我使用的是 CentOS 6.7 (Final) 系统,当我尝试以nc监听模式运行时,它会打印以下内容:
# nc -l 1234
nc: Protocol not available
Run Code Online (Sandbox Code Playgroud)
端口未绑定。我也尝试了其他端口号。这个错误似乎已经被报告了:https : //access.redhat.com/solutions/1753753。不幸的是,它不是很详细。
包装信息:
Name : nc
Arch : x86_64
Version : 1.84
Release : 24.el6
Run Code Online (Sandbox Code Playgroud)
还有什么我需要尝试的吗?
我正在尝试使用Memcached的Percona Apache Monitoring [Cacti] 模板。
他们确实警告说您不能使用该软件包的 openbsd 版本并为 Ubuntu/Debian 用户提供解决方案,即:
您需要在服务器上使用 nc。某些版本的 nc 接受不同的命令行选项。您可以通过配置 PHP 脚本来更改使用的选项。如果您出于某种原因不想这样做,那么您可以安装一个符合脚本默认配置中编码的期望的 nc 版本。在 Debian/Ubuntu 上,netcat-openbsd 不起作用,所以你需要 netcat-traditional 包,你需要切换到 /bin/nc.traditional...
由于 RHEL 6.x 版本确实来自 openbsd(由 确认rpm -qi nc),如何将其安装在 RHEL/CentOS 上?
还有其他人在 RHEL/CentOS 上运行这些 Percona 模板吗?你做了什么?alienDebian 软件包?
更新 1:FWIW,我尝试通过从源代码编译来使用 GNU netcat,但它似乎也没有 Cacti 模板所需的确切选项(即 -C 或 -q1 似乎没有类比)
更新 2:我外星人[编辑]了 netcat-traditional_1.10-38_amd64.deb 包来制作 .tgz 并且它确实产生了一个二进制“nc.traditional”并且该版本有 -q 选项但没有 -C
更新 3:我按照 cjc 的建议使用 [ed] netcat-openbsd_1.89-3ubuntu2_amd64.deb,虽然它提供了 -C 和 -q 选项,但它似乎不适用于模板。我还按照 …
我正在尝试执行以下操作:
echo "request" | nc -u 1.1.1.1 9999 > response.txt
Run Code Online (Sandbox Code Playgroud)
tcpdump执行此行后,我可以看到响应来自服务器(带有)。
但是,我的 response.txt 保持为空。
有没有办法得到它?
我试图让 Memcached 服务器像使用二进制协议一样响应。如果可能,请仅通过命令行回答,任何编程语言中都没有代码片段。
我正在对侦听 tcp 443 的应用程序进行一些故障排除。此特定应用程序通过 SSL 进行通信。我想用 netcat 连接到它。这可能吗?
注意:我不是在问 netcat 是否可以加密其流量。
在装有 Ubuntu 14.04 的计算机中,我可以执行以下操作:
$ nc -l 5349 -vvv
Listening on [0.0.0.0] (family 0, port 5349)
Run Code Online (Sandbox Code Playgroud)
或这个:
$ nc -vvv -l 192.168.254.96 5349
Listening on [192.168.254.96] (family 0, port 5349)
Run Code Online (Sandbox Code Playgroud)
并打开一个套接字以侦听我本地 IP 地址 (192.168.254.96) 上的输入连接。显然我可以从另一端连接并传输数据。
但是在带有 Debian 8.0 Jessie 的 NAT 后面的服务器中,我收到了这个奇怪的错误:
$ nc -vvv -l 5349
5349: inverse host lookup failed: Unknown host
nnetfd reuseport failed : Protocol not available
listening on [any] 38541 ... : Protocol not available
Run Code Online (Sandbox Code Playgroud)
或者:
$ nc -vvv -l 10.1.6.189 5349
10.1.6.189: inverse host …Run Code Online (Sandbox Code Playgroud) 如果我像这样运行一个简单的 UDP 侦听器:
nc -l -u -p 1234
Run Code Online (Sandbox Code Playgroud)
然后我似乎只得到第一个入站 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
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 netcat 将 SSH 流量(双向)从一台主机上的端口 2222 中继到另一台主机上的端口 22。出于测试目的,我在这里重定向到 127.0.0.1:22,而不是远程主机。
\n\n这是我收到的命令和错误:
\n\nnc -n \xe2\x80\x93l 2222 0<backpipe | nc -n 127.0.0.1 22 1>backpipe\ngetaddrinfo: Name or service not known\nRun Code Online (Sandbox Code Playgroud)\n\n我一定在这里遗漏了一些非常明显的东西,但我没有看到它。我仅使用 IP 地址(甚至使用“-n”来不解析任何内容),但它似乎仍在尝试进行 DNS 查找。
\n\n这是 CentOS 6.x [64]。
\n\n我缺少什么?
\n