Bash 测试netcat侦听器是否获得连接并在本地运行命令
我需要一种从shell脚本启动netcat侦听器的方法,如果收到连接,我需要在同一台本地侦听器计算机上运行命令,而不中断netcat进程/连接 它类似于-e选项,但我需要在本地运行命令,同时保持netcat连接运行 我真的不知道它是否可以完成,我的意思是在shell进程分叉netcat子进程之后,它可以与nc的输出交互,例如,在netcat退出之前运行其他命令吗 编辑:我认为在客户端C代码端执行此操作更容易,方法是检查初始send()消息的返回值,以确定如果我们获得发送消息的长度,客户端是否成功连接Bash 测试netcat侦听器是否获得连接并在本地运行命令,bash,netcat,Bash,Netcat,我需要一种从shell脚本启动netcat侦听器的方法,如果收到连接,我需要在同一台本地侦听器计算机上运行命令,而不中断netcat进程/连接 它类似于-e选项,但我需要在本地运行命令,同时保持netcat连接运行 我真的不知道它是否可以完成,我的意思是在shell进程分叉netcat子进程之后,它可以与nc的输出交互,例如,在netcat退出之前运行其他命令吗 编辑:我认为在客户端C代码端执行此操作更容易,方法是检查初始send()消息的返回值,以确定如果我们获得发送消息的长度,客户端是否成功
sret = send(sock, message, strlen(message), 0);
if (sret == strlen(message)) // We're Connected
do something
谢谢这将检查初始的
nc
进程是否已开始侦听,它将回显它接收到的每一行输入,然后发回一个接收到的响应:
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
看看您是否可以对此进行调整以满足您的需要。如果脚本运行时连接断开怎么办?脚本完成后是否需要停止连接?如果您只是想看看是否可以建立netcat连接,然后这会更容易。这看起来像您可能需要的:Netcat需要一直运行,直到被请求停止,如果shell脚本将在while循环中继续运行也没有问题。看看我上面发送的链接-它使用2个文件来处理正在分叉的Netcat命令的输入/输出。现在检查它,谢谢:(问题是我需要netcat在前台与道歉进行交互,我以为脚本正在与之交互?对于当前示例,您可以echo命令>>input.txt
。您是否可以使用示例用例更新您的问题,我将尝试提出更好的解决方案。