я могу использовать netcat
передавать файлы между двумя компьютерами.
# Server
nc -l -p 8080 < file
# client
nc 192.168.1.101 8080 > file
Могу ли я использовать netcat
чтобы загрузить URL из Интернета, как wget
?
Предполагая, что вы имеете в виду обычный URL-адрес HTTP, это возможно, но для этого необходимо вручную ввести HTTP-запрос. Если для URL-адреса требуется HTTP-запрос POST с формой в кодировке URL или для поиска определенных заголовков, это может быть довольно громоздким.
Вам нужно будет предоставить действительный HTTP-запрос на стандартный ввод netcat. Общая идея такова:
Выполнить команду nc example.com 80
Netcat начнет читать с stdin
и все, что вы введете или вставите в терминал, будет отправлено по сети на удаленный сервер с выбранным вами портом (80 - порт HTTP по умолчанию).
Теперь вам нужно ввести или вставить HTTP-запрос, например:
GET / HTTP/1.1
Host: example.com
User-Agent: netcat
В конце вам также понадобятся некоторые символы новой строки, поэтому нажимайте несколько раз клавишу ввода, пока не получите ответ HTTP. Тогда вам придется вручную разобрать ответ.
Netcat работает на уровне TCP, так что любой протокол, основанный на HTTP, технически может использоваться с netcat, но для протоколов, которые не подходят для человеческого ввода (таких как ssh и https), это может быть трудно использовать, если вы не написание сценария из программы. И если вы пишете программу, почему вы не используете обычные TCP-сокеты?
Ограничения netcat для этой цели следующие:
# create a request file
$ cat req
GET / HTTP/1.1
Host: superuser.com
User-Agent: Mozilla/5.0
# send request to get response
$ nc superuser.com 80 <req >res