首页 > 解决方案 > xargs 多个替换字符串

问题描述

我想使用 curl 并行发出一堆 http 请求,以对服务器进行一些性能测试。

该请求需要一个MAC地址,我想通过以下方式向上计数。

00:00:00:00:AA:BB
             ^  ^
             |  \___ count from 00 to ff (hex)
             \______ count from 00 to ff (hex)

BB 大于 0xFF 时溢出到 AA

到目前为止,我得到的是递增 BB 并以并行方式发送请求。

printf "%02x\n" {0..255} | xargs -I{} -P4 -- \
    curl -s \
    http://nginx/api/onboard/01:02:03:04:00:{}

这很好用,但我需要请求超过 256 次。

xargs 是 BusyBox v1.31.1

标签: shellcurlprintfxargs

解决方案


我找到了解决方案。它实际上与我最初认为的 xargs 无关。

printf "%04x\n" {0..1000} | \
sed -r 's/([[:xdigit:]]{2})([[:xdigit:]]{2})/\1:\2/g' | \
xargs -I{} -P4 -- \
curl -k -s \
    https://nginx/api/onboard/21:12:12:12:{}

我正在使用 printf 和 sed 的组合创建 MAC 所需的部分。可能有更好的方法,但它解决了我的问题。


推荐阅读