我需要一种从shell脚本启动netcat监听器的方法,如果收到连接,我需要在同一个本地监听器机器上运行一个命令,而不中断netcat进程/连接
这类似于-e选项,但我需要在本地运行命令,同时保持netcat连接运行
我真的不知道它是否可以完成。我的意思是,在shell进程分叉后,NETCAT子可以与NC的输出交互,并在NETCAT退出之前运行其他命令吗?
编辑:通过检查初始send()消息的返回值来确定客户机是否成功连接(如果我们得到了发送的消息长度),我认为在客户机C代码端更容易做到这一点

sret = send(sock, message, strlen(message), 0);
if (sret == strlen(message)) // We're Connected
   do something

谢谢

最佳答案

这将检查初始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

看看你能不能适应你的需要。

关于bash - 测试netcat监听器是否建立连接并在本地运行命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49616125/

10-13 05:44