На этот вопрос уже есть ответ здесь:
Когда я пишу сценарий bash, например следующее:
#!/bin/bash
nc localhost [pseudoport]
echo "test"
он подключается к серверу, но не отправляет текст «тест».
Он работает с
#!/bin/bash
echo "test" | nc localhost [pseudoport]
Проблема в том, что соединение завершается после того, как что-то было получено.
Как я могу отправить несколько сообщений, в моем случае фиксированная преамбула, за которой следуют переменные данные?
Я нашел способ сделать это здесь: Отправить команды в сокет с помощью netcat
Вы должны поместить сообщения, которые хотите отправить, в текстовый файл (скажем, msg.txt
), а затем
nc localhost [pseudoport] < msg.txt
Текстовый файл должен выглядеть следующим образом:
message1
message2
message3
...
Каждое сообщение должно быть в новой строке.
Ссылка, которую я разместил, имеет лучшее объяснение, почему это должно быть сделано так, как здесь (нет объяснения в дублирующей статье).