- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个非常简单的脚本要运行。它调用 tcpreplay 然后要求用户输入一些东西。然后读取将失败并读取:读取错误:0:资源暂时不可用。
这是代码
#!/bin/bash
tcpreplay -ieth4 SMTP.pcap
echo TEST
read HANDLE
echo $HANDLE
输出是
[root@vse1 quick_test]# ./test.sh
sending out eth4
processing file: SMTP.pcap
Actual: 28 packets (4380 bytes) sent in 0.53 seconds. Rated: 8264.2 bps, 0.06 Mbps, 52.83 pps
Statistics for network device: eth4
Attempted packets: 28
Successful packets: 28
Failed packets: 0
Retried packets (ENOBUFS): 0
Retried packets (EAGAIN): 0
TEST
./test.sh: line 6: read: read error: 0: Resource temporarily unavailable
[root@vse1 quick_test]#
我想知道在运行 tcpreplay 后是否需要关闭或清除任何句柄或管道?
最佳答案
显然 tcpreplay 在 stdin 上设置了 O_NONBLOCK 然后没有删除它。我会说这是 tcpreplay 中的错误。要解决这个问题,您可以使用从/dev/null 重定向的标准输入运行 tcpreplay。像这样:
tcpreplay -i eth4 SMTP.pcap </dev/null
补充:请注意,此 tcpreplay 行为只会破坏非交互式 shell。
另一个补充:或者,如果你真的需要 tcpreplay 来接收你的输入您可以编写一个重置 O_NONBLOCK 的简短程序。像这个(reset-nonblock.c):
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
int
main()
{
if (fcntl(STDIN_FILENO, F_SETFL,
fcntl(STDIN_FILENO, F_GETFL) & ~O_NONBLOCK) < 0) {
perror(NULL);
return 1;
}
return 0;
}
使用“make reset-nonblock”创建它,然后将其放入您的 PATH 中并像这样使用:
tcpreplay -i eth4 SMTP.pcap
reset-nonblock
关于bash - tcpreplay 后读取失败,错误为 : 0: Resource temporarily unavailabl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16402363/
我正在尝试使用 tcpreplay 发送 pcap 文件的内容。它拒绝发送一些数据包,因为它们太长了。但是,它没有继续处理下一个数据包,而是停止了: $ tcpreplay -i p4p1 mult
当我使用“tcpreplay”向我的交换机发送数据包时,我发现数据包乱序。例如,使用 tcpreplay -i eth1 test.pcap ,我得到: 我发送像 **[1,2,3,4,5,……]**
在服务器 # nc -lp 2424 hi server hi client 1 2 3 在客户端 ➜ ~ nc 139.224.xxx.xx 2424 hi server hi client 1
在tcpreplay 中有一个非常有用的功能,根据official FAQ's , 使用参数 -T 调用: The packet length (in this case 8892 bytes) is
以下代码段只会等待用户第一次点击 Enter;之后,它会循环遍历所有剩余的 .pcap 文件,而无需等待用户输入。 $| = 1; while () { print "$_"; ;
我正在执行一些实验,其中我想重播之前从 Android 捕获的数据包跟踪。到目前为止,我已经编写了自己的应用程序来重播跟踪,然后从服务器获得回复。只要在合理范围内(例如,几毫秒),计时精度就不是大问题
我有一个要重放的 pcap 文件。我想重写数据包有效负载以包含时间戳。我怎样才能用 tcpreplay 做到这一点?或 tcprewrite ?有默认选项还是我应该自己实现(修改tcpreplay)?
我的服务器会在工作日的某个时间段接收到 UDP 组播数据包。我编写了一个 c 套接字应用程序来接收这些 UDP 多播数据包。由于我的服务器只能在某个时间段接收数据包,为了测试,我用tcpdump抓包。
我已经安装了 tcpreplay,在此之前安装了 libdnet libevent 和 fragroute,但 fragroute 引擎已禁用,我无法在 tcprewrite 中使用 --fragro
我有两个程序: 服务器...它在选定的多播上生成 UDP 流量 listener ...它打印所选多播上的 UDP 流量 (它订阅多播并打印 无论它收到什么)。 当我在一台计算机上运行服务器并在某些(
我正在尝试在 C 中添加 tcpreplay 库,以便我可以重写数据包中的数据。我一直在寻找 C 编程中的库。结果是添加了 TCPreplay 并开始使用它的方法。不幸的是,它不适用于 C 语言。如果
我正在开展一个项目,该项目使用 Twisted 提供高性能 UDP 服务器,能够处理每秒 5k 数据包的突发流量,数据包大小从 50 到 100 字节不等。我正在测试服务器的 PC 具有四核 CPU
我有一个非常简单的脚本要运行。它调用 tcpreplay 然后要求用户输入一些东西。然后读取将失败并读取:读取错误:0:资源暂时不可用。 这是代码 #!/bin/bash tcpreplay -iet
Scapy 有一个 sendpfast 函数,它使用 tcpreplay 发送数据包。但是,此函数首先创建一个临时 pcap 文件,然后对其调用 tcpreplay。这增加了太多的延迟。反正有没有绕过
我是一名优秀的程序员,十分优秀!