Usando o bash para conexões tcp

0

Para redirecionar as conexões tcp com o bash, por que os seguintes comandos não retornam nada?

[root@rocks7 ~]# echo -e "GET / HTTP/1.1\n\n" > /dev/tcp/yahoo.com/80
[root@rocks7 ~]# printf "GET / HTTP/1.1\n\n" > /dev/tcp/google.com/80
[root@rocks7 ~]# 
    
por mahmood 25.04.2018 / 17:41

1 resposta

2

Você precisa abrir a conexão para leitura e gravação, usando <> e, provavelmente, enviar mais alguns cabeçalhos e ler a resposta. Por exemplo,

exec 5<>/dev/tcp/yahoo.com/80
echo -e "GET / HTTP/1.1\r\nHost: yahoo.com\r\nContent-Length: 0\r\n\r" >&5
# get reply:   HTTP/1.1 301 Moved Permanently^M
cat <&5

Eu usei o descritor de arquivos arbitrário 5 apenas para evitar a supressão do padrão 0, 1 e 2. Com o Yahoo você não precisa do cabeçalho de comprimento do conteúdo, mas outros sites podem não responder até receberem mais entradas. O yahoo requer o cabeçalho do host, ou você receberá a resposta HTTP/1.1 400 Host Header Required .

    
por 25.04.2018 / 21:11

Tags