Избавьтесь от амперсандов в Netcat

Как я могу отправить следующую команду в ncat.exe из командной строки Windows?

Следующая команда работает нормально.

echo GET /main/main.js HTTP/1.1BHost: www.example.comBConnection: closeBB | tr "B" "\n" | ncat -C www.example.com 80

Я думаю, что следующий запрос не работает из-за амперсандов.

echo GET /main/main.js?param1=true^&param2=true HTTP/1.1BHost: www.example.comBConnection: closeBB | tr "B" "\n" | ncat -C www.example.com 80

Есть ли обходной путь, чтобы избежать амперсандов? Я пробовал что-то подобное, но безрезультатно.

set "req=GET /main/main.js?param1=true^&param2 HTTP/1.1\nHost: www.example.com\nConnection: close\n\n"
echo %req% | tr "B" "\n" | ncat -C www.example.com 80

person user2146441    schedule 23.02.2015    source источник


Ответы (1)


Используйте двойные кавычки вокруг строки, которую вы хотите echo, т.е.:

echo "GET /main/main.js?param1=true^&param2=true HTTP/1.1BHost: www.example.comBConnection: closeBB" | tr "B" "\n" | ncat -C www.example.com 80

но в качестве улучшения tr было бы лучше использовать что-то вроде:

echo -e "GET /main/main.js?param1=true^&param2=true HTTP/1.1\r\nHost: www.example.com\r\nConnection: close\r\n\r\n" | ncat -C www.example.com 80

предполагается, что команда echo в Windows поддерживает флаг «-e».

person Hans Z.    schedule 23.02.2015