因此,我尝试在 deterlab.net 上解决此实验。但我不知道如何创建带有 curl 指令的 bash 文件,以便通过在客户端编写脚本来创建客户端和服务器节点之间的 Web 流量流,该脚本每秒从服务器获取 index.html。此实验的全部目的是创建 DOS 攻击,然后淹没创建的流量。我可以管理攻击部分,但无法管理带有 curl 的 bash 文件。这是我目前所拥有的:
#!/bin/bash
# traffic between client and server
x=1
a = 1000000
while [ x < a]
do
curl -o index.html https://localhost/2389
x =x + 1
done
有人可以帮帮我吗 ?
答案1
利用 C 风格的for
循环结构:
#!/bin/bash
for ((x=1; x<1000000; x++)); do
curl -o index.html https://localhost/2389
done
在((x=1; x<1000000; x++))
:
x=1
初始化x
为 1x<1000000
是条件,只要x
小于 1000000,循环就会运行x++
x
每次循环后加1
您有一些语法错误:
要引用变量的值,你需要
$variable
将 放在$
前面,同时几乎总是希望在其周围加上引号,以防止单词拆分和全局扩展:"$variable"
=
声明变量时不能有空格,所以a = 1000000
是错误的。你需要a=1000000
[ x < a]
:这里[
不支持像 这样的算术运算符<
,您需要使用-lt
(小于),否则它只是进行字符串比较。您需要:[ "$x" -lt "$a" ]
。还可以考虑使用[[
内置的bash
而不是[
。对于算术运算,您((
也可以使用,这将允许您使用所有算术运算符x =x + 1
=
是一个语法错误,如前所述,声明变量时不能有空格,而且+ 1
afterx
没有任何意义,shell 会将其视为x=x
其环境中带有变量的单独单词(命令)。您需要(( x=x+1 ))
或((x+=1))
或简单地(( x++ ))
。
因此你的脚本可以采用最终形式:
#!/bin/bash
# traffic between client and server
x=1
a=1000000
while (( x < a )); do
curl -o index.html https://localhost/2389
(( x++ ))
done