Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 测试netcat侦听器是否获得连接并在本地运行命令_Bash_Netcat - Fatal编程技术网

Bash 测试netcat侦听器是否获得连接并在本地运行命令

Bash 测试netcat侦听器是否获得连接并在本地运行命令,bash,netcat,Bash,Netcat,我需要一种从shell脚本启动netcat侦听器的方法,如果收到连接,我需要在同一台本地侦听器计算机上运行命令,而不中断netcat进程/连接 它类似于-e选项,但我需要在本地运行命令,同时保持netcat连接运行 我真的不知道它是否可以完成,我的意思是在shell进程分叉netcat子进程之后,它可以与nc的输出交互,例如,在netcat退出之前运行其他命令吗 编辑:我认为在客户端C代码端执行此操作更容易,方法是检查初始send()消息的返回值,以确定如果我们获得发送消息的长度,客户端是否成功

我需要一种从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
。您是否可以使用示例用例更新您的问题,我将尝试提出更好的解决方案。