【发布时间】:2011-03-01 22:19:54
【问题描述】:
我知道这不是一个直接的“开发”问题,但我需要此信息来测试开发项目,所以我认为有人可能会遇到类似问题。
我将测试一个运行 TCP 服务器的软件,并根据发送的命令回复一些答案。我会测试这个软件,如果它不能很好地工作,我不想写代码。所以我想发送这些命令并测试驱动服务器软件。
如何使用 Linux 机器实现这一点?
【问题讨论】:
我知道这不是一个直接的“开发”问题,但我需要此信息来测试开发项目,所以我认为有人可能会遇到类似问题。
我将测试一个运行 TCP 服务器的软件,并根据发送的命令回复一些答案。我会测试这个软件,如果它不能很好地工作,我不想写代码。所以我想发送这些命令并测试驱动服务器软件。
如何使用 Linux 机器实现这一点?
【问题讨论】:
使用 dd 来自 bash:
dd if=/dev/zero bs=9000 count=1000 > /dev/tcp/$target_host/$port
甚至是猫:
cat < /dev/urandom > /dev/tcp/$target_host/$port
【讨论】:
/dev/tcp/*/* 是 bash 以特殊方式处理的特殊文件名。它实际上并不存在。
(echo '2' > /dev/tcp/192.168.1.161/8888) && (sleep 1; echo '2' > /dev/tcp/192.168.1.163/8888) 为什么超过 1 个需要 5 分钟,但使用 1 个请求时不到 1 秒就完成了?
nc 可能是最好的工具,但这应该是公认的答案。
听起来像Expect 可能是您想要的。有多种脚本语言的实现,您可以编写请求/服务器响应以及适当的超时、错误处理等脚本。
【讨论】:
(echo '2' > /dev/tcp/192.168.1.161/8888) && (sleep 1; echo '2' > /dev/tcp/192.168.1.163/8888)