我需要使用一个使用该ping
命令及其普通 Linux 语法的脚本,Cygwin 的默认包或 Windows ping 实用程序都无法工作。目前,我已经修补了脚本以使用 Windows 版本(有些困难;Windows 可执行文件不提供有用的返回代码,因此我必须解析输出),但我希望开箱即用的兼容性和附加功能Linux ping。在进一步讨论之前,我要声明一下,我是在管理员模式下运行 Cygwin 的;这不是权限问题。这是版本问题。
Cygwin 的默认ping
命令在安装管理器中被列为版本“1.0-1”,位于“ping:用于测试 IP 网络连接的基本网络工具”包中。如果不带参数,它会输出:
Usage: ping [-dfqrv] host [packetsize [count [preload]]]
手册页描述以以下内容开头:“DARPA 互联网是一个庞大而复杂的网络硬件集合。”,对我来说,它有点过时了。这是安装的版本/bin/ping
。
Windows 的ping
命令位于$SYSTEMROOT/system32/ping
,并且在没有参数调用时输出以下消息。
Usage: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
[-r count] [-s count] [[-j host-list] | [-k host-list]]
[-w timeout] target_name
这当然是一个功能更丰富的 ping(值得注意的是,它包括超时,这对我来说很重要),但它不是现代 Linux 安装上可用的版本:
ping [ -LRUbdfnqrvVaAB] [ -c count] [ -i interval] [ -l preload] [ -p pattern]
[ -s packetsize] [ -t ttl] [ -w deadline] [ -F flowlabel] [ -I interface]
[ -M hint] [ -Q tos] [ -S sndbuf] [ -T timestamp option] [ -W timeout]
[ hop ...] destination
在线记录这里。除了参考 Cygwin 之外,我似乎找不到对 cygwin 版本 ping 的引用。
我发现这个古老的电子邮件线索它描述了没有 ping 的早期版本的 Cygwin。我还没有找到任何为 Windows 设计的 iputils 版本。
答案1
你可以
- 尝试从源代码构建 ping,它是iputils 包。但是在 cygwin 上构建东西可能相当麻烦。
或者(我会先尝试这个)
- 尝试另一个 ping 实现,比如这个 perl 中的实现网络::Ping或者CPAN 上的其他一个