отправить ввод в netcat и сохранить вывод

Вопрос или проблема

Я пытаюсь отправить команду в netcat, которая даст результат, и я хочу сохранить этот результат в файл.

while true; do echo "showHistory userx"; done | nc -w1 xxx.xxx.xxx.xx 2222 > out.txt &

Я сделал много поисков в Google и прочитал много вопросов на Stackexchange, но не смог решить эту проблему. Я экспериментировал с while, tee, mkfifo, но без успеха.

Файл out.txt остается пустым, но содержит много символов NUL

Редактирование: я обновил showhistory на showHistory userx, чтобы подчеркнуть, что это команда, которую нужно передать через сессию telnet/netcat

Я нашел что-то подобное

для вывода сканирования портов (например, мой роутер)

nc -zv 192.168.0.1 1-1000 2>&1 | grep open | tee report.txt

чтобы прочитать отчет

cat report.txt 

вывод

_gateway [192.168.0.1] 80 (http) open 
_gateway [192.168.0.1] 22 (ssh) open

На снимкевведите описание изображения здесь

Ответ или решение

Чтобы отправить ввод в netcat и сохранить вывод в файл, нужно правильно настроить команду так, чтобы она корректно обрабатывала ввод и вывод. Поскольку вы сталкиваетесь с пустым файлом out.txt и получаете ненужные символы (например, NUL), проблема может заключаться в методе, с помощью которого передается управление и обрабатывается вывод.

Поскольку ваша цель заключается в том, чтобы посылать команду (showHistory userx) непрерывно в netcat и сохранять вывод в файл, вот предписание для правильной реализации этой задачи:

1. Описание и корректировка команды

Для успешного выполнения задачи попробуйте использовать следующую команду:

while true; do echo "showHistory userx"; sleep 1; done | nc -w 1 xxx.xxx.xxx.xx 2222 > out.txt

2. Элементы команды

  • while true; do ...; done: Этот цикл будет бесконечно отправлять команду showHistory userx с задержкой.
  • sleep 1: Это добавляет задержку в 1 секунду между отправками, чтобы избежать перегрузки сервера командой.
  • nc -w 1 xxx.xxx.xxx.xx 2222: Эта часть команды использует netcat для подключения к указанному IP адресу по порту 2222. Параметр -w 1 устанавливает таймаут ожидания в 1 секунду после завершения ввода.
  • > out.txt: Этот оператор перенаправления сохраняет вывод в файл out.txt.

3. Изменения и дополнения

Если вы хотите сохранять вывод не только в out.txt, но и видеть его в реальном времени, можно использовать оболочку tee:

while true; do echo "showHistory userx"; sleep 1; done | nc -w 1 xxx.xxx.xxx.xx 2222 | tee out.txt

4. Устранение ошибок

  • Убедитесь, что ваша команда showHistory userx действительно возвращает вывод, когда вы вручную вводите его через netcat или telnet. Это может быть полезно для отладки.
  • Убедитесь, что IP-адрес и порт правильны, и что сервер, к которому вы подключаетесь, доступен и слушает на указанном порту.
  • Если вы видите NUL символы в out.txt, это может быть связано с тем, что команда не возвращает ожидаемый текст или происходит сбой при соединении.

5. Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...