Я могу использовать netcat
для передачи файлов между двумя компьютерами.
# Server
nc -l -p 8080 < file
# client
nc 192.168.1.101 8080 > file
Могу ли я использовать netcat
для загрузки URL-адреса из Интернета, например wget
?
Я могу использовать 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