关于在bash脚本中使用循环,我有一些问题。我需要发送多个不同值的POST请求。所以我使用了循环。在1次循环中,我更改了profile的名称,只需在其上添加从1到500的数字
#!/bin/bash
token="Authorization: Bearer h-bCxY3nCJD_Oro_aQE15soo-XFewv1bzsArbd46iJrH1t5Fxa3TLYaQ3Q"
url="http://ad44fcfa01aad11e98c201.amazonaws.com/api/v0.1/scanprofiles"
q=500
name=3_Ubuntu_internal
for ((i = 0; i < q; i++))
do
data='{"target":{"scan_type":"internal","ip_range":"10.142.0.2-10.142.0.5","ports":"1042"},"name":"'$name$i'","run_immediately":"False"}'
echo "${data}"
curl -X POST $url -H 'Content-Type: application/json' -H "$token" -d "$data"
done
它可以创建500个配置文件,默认参数为IP和端口。但是,我需要将默认端口从1042更改为阵列中的1042到1237。我尝试在existing中创建另一个循环,但没有得到我想要的结果。A.e.对于500个配置文件中的每个配置文件,首先应用1042端口,然后应用1043端口,依此类推。我想创建具有1042端口的配置文件1,配置文件2- 1043,依此类推。当然,配置文件的数量大于端口的数量,从1042到1237,但这是可以的,端口可以再次重复
发布于 2019-02-25 22:50:14
您可以尝试如下所示:
为起始端口添加一个变量:
port=1042
并在循环中递增:
for ((i = 0; i < q; i++))
do
data='{"target":{"scan_type":"internal","ip_range":"10.142.0.2-10.142.0.5","ports":"'${port}'"},"name":"'$name$i'","run_immediately":"False"}'
echo "${data}"
curl -X POST $url -H 'Content-Type: application/json' -H "$token" -d "$data"
port=$((port+1))
done
这样,每个下一个端口都将是前一个端口的增量。
如果您不能通过端口1237 (例如),您可以在循环内的port=$((port+1))后面添加以下if:
if [ "${port}" -eq "1237" ];then
port=1042
fi
..。这将重置计数器并再次从1042开始端口递增。
https://stackoverflow.com/questions/54868553
复制相似问题