usando o bash e curl para enviar o arquivo do servidor para o cliente

-1

então eu estou tentando resolver este laboratório em deterlab.net. mas eu não consigo descobrir exatamente como criar meu arquivo bash com a instrução curl para criar um fluxo de tráfego da web entre o cliente e os nós do servidor escrevendo um script no cliente que cada segundo obtém o index.html do servidor. O objetivo deste laboratório é criar um ataque DOS e inundar o tráfego criado depois. A parte de ataque eu posso gerenciar, mas o arquivo bash com o curl eu não posso.isso é o que eu tenho até agora:

#!/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

Alguém por favor pode me ajudar?

    
por andrew.hans 28.10.2016 / 19:39

1 resposta

1

Alavanque uma construção de looping for no estilo C:

#!/bin/bash
for ((x=1; x<1000000; x++)); do
    curl -o index.html https://localhost/2389
done

Em ((x=1; x<1000000; x++)) :

  • x=1 inicializa x a 1

  • x<1000000 é a condição, o loop será executado contanto que x seja menor que 1000000

  • x++ incrementa x adicionando 1 após cada execução de loop

Você tem alguns erros de sintaxe:

  • Para se referir ao valor de uma variável, você precisa de $variable , isto é, colocar $ na frente, e quase sempre é desejado ter uma citação em torno disso para evitar a divisão de palavras e a expansão glob: "$variable"

  • Não pode haver nenhum espaço em branco em torno de = ao declarar variáveis, s o a = 1000000 está errado. Você precisa de a=1000000

  • [ x < a] : aqui [ não suporta operadores aritméticos como < , você precisa usar -lt (menor que), caso contrário, é apenas uma comparação de cadeia. Você precisa de: [ "$x" -lt "$a" ] . Considere também usar o [[ incorporado de bash em vez de [ . Para operação aritmética, você pode usar (( também, isso permitirá que você use todos os operadores aritméticos

  • x =x + 1 é um erro de sintaxe, você não pode ter espaços em branco em = ao declarar variáveis como mencionado anteriormente, também + 1 após x não significa nada e shell o tratará como palavra separada ( comando) com a variável x=x em seu ambiente. você precisa de (( x=x+1 )) ou ((x+=1)) ou simplesmente (( x++ )) .

Assim, o seu script pode ter a forma final:

#!/bin/bash
# traffic between client and server
x=1
a=1000000
while (( x < a )); do
    curl -o index.html https://localhost/2389
    (( x++ ))
done
    
por heemayl 28.10.2016 / 19:43