使用 bash 和 curl 将文件从服务器发送到客户端

使用 bash 和 curl 将文件从服务器发送到客户端

因此,我尝试在 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为 1

  • x<1000000是条件,只要x小于 1000000,循环就会运行

  • x++x每次循环后加1


您有一些语法错误:

  • 要引用变量的值,你需要$variable将 放在$前面,同时几乎总是希望在其周围加上引号,以防止单词拆分和全局扩展:"$variable"

  • =声明变量时不能有空格,所以a = 1000000是错误的。你需要a=1000000

  • [ x < a]:这里[不支持像 这样的算术运算符<,您需要使用-lt(小于),否则它只是进行字符串比较。您需要:[ "$x" -lt "$a" ]。还可以考虑使用[[内置的bash而不是[。对于算术运算,您((也可以使用,这将允许您使用所有算术运算符

  • x =x + 1=是一个语法错误,如前所述,声明变量时不能有空格,而且+ 1afterx没有任何意义,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

相关内容