MTR工具如何随机化数据包大小?命令报错求助
MTR负数数据包大小参数配置问题解决
问题描述
根据MTR手册,数据包大小设置选项-s PACKETSIZE/--psize PACKETSIZE可指定探测包大小(单位字节,包含IP和ICMP头);若设为负数,每次迭代会使用不超过该绝对值的随机包大小。但尝试配置负数参数时,始终出现语法错误或参数无效,试过以下命令:
mtr -b -c 5 -u4 --port 80 --psize -111 meet.google.com mtr -b -c 5 -u4 --psize negative10 meet.google.com mtr -b -c 5 -u4 --psize=_-10_ meet.google.com mtr -b -c 5 -u4 --psize=-10 meet.google.com mtr -b -c 5 -u4 --psize ((-10)) meet.google.com mtr -b -c 5 -u4 --psize (-10) meet.google.com
结果均返回-bash: syntax error或mtr: invalid argument,请问操作有误之处?该选项是否可用?
解决方法
核心问题:Shell参数解析冲突
当使用--psize -111这类写法时,Shell会把以-开头的-111误认为是新的命令行选项,而非--psize的参数,从而触发语法错误。
正确的参数传递方式
方式一:使用短选项
-s直接传递负数
短选项的参数识别逻辑更简单,不会把紧跟的负数误判为新选项:mtr -b -c 5 -u4 --port 80 -s -111 meet.google.com方式二:给长选项的负数参数加引号
通过引号将负数参数包裹,避免Shell误解析:mtr -b -c 5 -u4 --port 80 --psize "-111" meet.google.com方式三:使用等号连接参数(无空格)
确保负数参数紧跟--psize=,中间不预留空格:mtr -b -c 5 -u4 --port 80 --psize=-111 meet.google.com
选项可用性说明
该负数随机包大小的功能是有效的,但需注意不同MTR版本可能存在兼容性差异。如果上述方法仍报错,可通过执行mtr --help或man mtr查看当前版本的手册,确认该特性是否被支持。
内容的提问来源于stack exchange,提问作者tpfiler
相关产品推荐
相关产品推荐

