我遇到了问题,并且在线寻找解决方案时遇到了困难。我的代码关闭了一个日志文件,并在写入文件时使用netcat与外部服务器连接。
这是我工作代码的一个简单示例,之后我会解释这个问题。
# function that watches input for '$servertag' variable
serverwatch() {
while read data
do
if [ `strindex "$data" "$servertag"` -ge 0 ]; then
....
nc <server_ip> 1234
....
fi
done
}
# Tail the log file and pipe to functions
tail -f messages | serverwatch
问题在于,虽然连接已成功建立,但来自“&#39;消息”的数据仍然存在。文件正在传递给netcat。我在本地对数据进行了一些基本的解析,但我不知道如何阻止数据通过netcat发送。
我应该很快注意到我希望在大多数DD-WRT版本上都有这个功能,所以我试图不安装任何新的软件包。另外,bash似乎在我的构建上被打破/最小化,所以我试图避免使用bash。
如果您对此问题有任何疑问,解决方案或其他问题的参考,请与我们联系。
谢谢,
詹姆斯
答案 0 :(得分:2)
netcat继承了stdin描述符。从其他地方重定向,例如:
nc <server_ip> 1234 < /dev/null
不幸的是,netcat在到达输入结束时关闭了连接,所以如果你想让连接保持打开状态,你可以使用-d
标志。
nc -d <server_ip> 1234 < /dev/null