Когда NETCAT работает лучше чем TELNET

У меня есть небольшой опыт по использованию Netcat (nc), как telnet клиент, которым я хотел бы поделиться в этой статье. Я слышал, некоторые мои друзья говорят, netcat - "хакерский" инструмент, он также известен как "швейцарский армейский нож". Это правда, Netcat может превратиться в сервер или в любое из TCP приложений, в сканер портов, в чат, через nc можно передавать файлы, удаленно управлять каким либо сервисом и т. д.

Прежде всего хочу обяснить, почему я хочу использовать netcat как telnet - клиент вместо самой telnet команды? Какие такие потребности могут быть, которые telnet клиент не предоставляет?

Когда нам нужно подключиться к маршрутизаторам, коммутаторам, мы обычно используем клиент telnet. Иногда нам необходимо, извлечь некоторую информацию из коммутаторов или маршрутизаторов. А представьте ситуацию с запуском одних и тех же повторяющихся команд. Или каждодневной рутины по сохранению конфигов устройств...

Руками я делал это так, мне нужно было залогиниться на свитч... (представим, что адрес устройства gnu.su ;) ):

telnet gnu.su 


После этого, он возвращает строку, $, и я каждый раз набирал команду одну за одной. Следовательно, я должен был вручную копировать и вставлять результаты из терминала в файл. Это утомительно, и это занимало у меня почти 20 минут рутинной работы каждый раз, когда я нуждался в информации о состоянии свитча.

Поэтому, я начинал искать решение, которое позволит мне скармливать команды через telnet.

Пробовал делать вот так, но оно не работало, т.к. у телнета свой stdout:

telnet gnu.su <<<"commands" 


Команда отрабатывала, не давая мне никаких результатов... И так было до того момента, пока я не вспомнил о netcat. О чудо!

nc gnu.su 80 <<<"commands" 


Т.к. netcat является общим инструментом, поэтому вам нужно указанный номер порта. Порт 23 для telnet, 80 web. Более того мне нужно, было вывод команды сохранить в файл.

nc gnu.su 80 <<<"commands" > result.txt 


В случае когда вам необходимо выполнить несколько команд в открытый терминал или например запускать их через CRON, можно создать файлик с командами...
Ниже решение, которое придумал я:
Сначала я создал обычный текстовый файл, в который запихнул все команды, которые сне надо было исполнять, новая команда на новой линии. Представим, что файлик называется commands содержание может быть любым, например таким:


$ cat commands

GET / HTTP/1.0
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4
Host: gnu.su



В конце концов моя команда превратилась в слудующую:

nc gnu.su 80< commands >results.txt 


Все! Вам просто нужно определить ваши команды один раз, и вы можете выполнить netcat сколько угодно раз и как угодно.

Я думаю, это должно быть удобно для работы с коммутаторами или маршрутизаторами или как в примере, запрашивать контент страницы и сохранять его в файл.




Вас также может заинтересовать:

Настоящий гонщик лучше автопилота
Номер мобильника из Facebook лучше удалить
Смартфоны, кто лучше горит? Или Огонь, мангал и медные щипцы...
Когда «свободное» в «свободном ПО» не имеет значения
Когда и почем появится Surface Pro от Microsoft
Когда можно сесть на телефон, или демонстрация тестов от Samsung