Проверьте, установил ли прослушиватель netcat соединение и выполните ли команду локально
Мне нужен способ для запуска прослушивателя netcat из сценария оболочки, и если соединение получено, мне нужно выполнить команду на том же локальном компьютере прослушивателя, и без прерывания процесса / соединения netcat это похоже на параметр -e, но мне нужно запустить Команда локально, сохраняя соединение Netcat работающим
Я действительно не знаю, можно ли это сделать, я имею в виду, что после того, как процесс оболочки разветвил дочерний элемент netcat, может ли он, например, взаимодействовать с выводом nc и выполнить другую команду перед выходом из netcat?
Редактировать: я подумал, что это еще проще сделать на стороне кода C клиента, проверив возвращаемое значение исходного сообщения send(), чтобы определить, успешно ли подключился клиент, если мы получили длину отправленного сообщения
sret = send(sock, message, strlen(message), 0);
if (sret == strlen(message)) // We're Connected
do something
Спасибо
1 ответ
Это проверит, если начальный nc
процесс начал слушать, и он будет отображать каждую полученную строку ввода и затем отправит обратно Received
ответ:
rm -f input.txt
touch input.txt
tail -f input.txt | nc -l 5555 > output.txt &
if ! ps -p $! >/dev/null; then
echo "Netcat didn't start. Exiting..."
exit 1
fi
tail -f output.txt | while read -r LINE; do
echo "Received input: $LINE"
echo "Received" >> input.txt
done
Посмотрите, сможете ли вы приспособить это к вашим потребностям.