我需要一种从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/