gpt4 book ai didi

bash - 测试 netcat 监听器是否获得连接并在本地运行命令

转载 作者:行者123 更新时间:2023-11-29 09:31:12 24 4
gpt4 key购买 nike

我需要一种从 shell 脚本触发 netcat 监听器的方法,如果收到连接,我需要在同一台本地监听器机器上运行命令,而不会中断 netcat 进程/连接它类似于 -e 选项,但我需要在本地运行命令,同时保持 netcat 连接运行

我真的不知道它是否可以完成我的意思是在 shell 进程 fork netcat 子进程之后它可以与 nc 的输出交互并在 netcat 退出之前运行其他命令吗?

编辑:我认为在客户端 C 代码端通过检查初始 send() 消息的返回值来确定客户端是否成功连接(如果我们得到发送的消息长度)会更容易

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com