O que significa “manter o tubo aberto”?

6

Eu tenho acompanhado instruções para vários exercícios de exploração para aplicativos linux. Eu entendo o conteúdo destes bem o suficiente, no entanto, alguns referem-se ao uso de gato para "manter o tubo aberto", por ex. aqui .

Por exemplo:

(python2 exploit.py ; cat) | ./programToExploit

O que significa "manter o tubo aberto" na prática, e como o tubo é mantido aberto como no comando acima?

    
por plunkspeaker 01.03.2017 / 19:21

1 resposta

9

Você tentou?

Veja a diferença entre

echo 'ls' | sh -s

e

( echo 'ls'; cat ) | sh -s

ou

{ echo 'ls'; cat; } | sh -s

Aqui, sh -s iniciará uma sessão de shell que lê comandos para executar a partir da entrada padrão ( -s ).

No primeiro exemplo, o shell simplesmente executará ls e sairá (já que não há mais entrada).

No segundo e terceiro exemplo, o shell executará ls e aguardará até que não haja mais entrada. O fluxo de entrada para sh -s foi gerado primeiro pelo comando echo , mas, em seguida, cat assumiu a função. O processo cat será lido a partir da sessão do shell pai e passará os comandos pelo canal para sh -s . Se você digitar ls , ou qualquer outro comando (não haverá nenhum prompt para digitá-lo em), o shell executará esses comandos.

Isso continuará até que você termine o processo cat pressionando Ctrl + D em uma linha vazia para sinalizar o final da entrada.

Eu acredito que é isso que você quer dizer com "manter o tubo aberto".

    
por 01.03.2017 / 19:35