Скрипт Linux для записи данных из сообщения telnet в файл в течение периода - PullRequest
0 голосов
/ 05 июля 2019

Я подключаюсь к слушателю telnet.Сервер Telnet отправляет данные за каждую секунду.Я хочу прочитать сообщения в течение X секунд и записать их в файл (для примера мы возьмем 6 секунд).

Примечание. Для примера IP-адрес был изменен на «IP».То же самое для 'Port'.

Я уже пробовал кое-что:

#!/bin/bash
#myScript.sh

telnet IP Port >> myFile.txt
sleep 6
pkill myScript.sh

Это решение записать в мой файл, но мой сценарий никогда не заканчивается.

Вот мое второе предложение:

#!/bin/bash
#myScript.sh

timeout 6 telnet IP Port >> myFile.txt

Здесь это еще одна проблема, тайм-аут соблюдается, сценарий заканчивается через 6 секунд, но в myFile.txt у меня есть

Trying IP...
Connected to IP.
Escape character is '^]'

Как мне создать этот сценарийверно?

Примечание: я должен использовать Telnet.

1 Ответ

0 голосов
/ 05 июля 2019
  1. В вашем первом решении вы можете попробовать:

    telnet IP Port 2>&1 | tee myFile.txt &
    sleep 6
    exit
    

Это отправит команду telnet в фоновый процесс и завершится через 6 секунд.

  1. В вашем втором решении вы можете попробовать:

    timeout 6 telnet IP Port 2>&1 | tee myFile.txt
    

Это отправляет stderr и stdoutt в myFile.txt

https://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html

  1. Или, как другие предлагали, использовать netcat:

    timeout 6 nc -vz IP Port 2>&1 | tee myFile.txt
    

http://netcat.sourceforge.net/

...