我需要使用一個腳本,該腳本使用ping
普通 Linux 語法的命令,Cygwin 的預設套件或 Windows ping 實用程式都不起作用。現在,我已經修補了腳本以使用 Windows 版本(有一些困難;Windows 可執行檔不提供有用的回傳程式碼,因此我必須解析輸出),但我想要out-of-the-盒子相容性和附加功能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 的引用之外,我似乎找不到對 ping 的 cygwin 版本的引用。
我發現這個古老的電子郵件線程它描述了沒有 ping 的 Cygwin 早期版本。我還沒有找到任何專為 Windows 設計的 iputils 版本。
答案1
你可以
- 嘗試從原始碼建構 ping,它是iputils 包。但在 cygwin 上建立東西可能會很麻煩。
或者(我會先嘗試這個)
- 嘗試另一種 ping 實現,例如 perl 中的 perl 實現網路::平或者CPAN 上的其他人之一