2014-04-25 111 views
0

我有一个问题,不得不在网上找到一个解决方案的困难。我的代码尾随一个日志文件,并在写入文件时使用netcat连接到外部服务器。管到shell脚本问题

这里是我工作的代码一个简单的例子,我会再具体解释这个问题。

# 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 

问题是,虽然连接建立成功,但'messages'文件中的数据正在通过netcat传送。我在本地对数据做了一些基本的解析,但我不知道如何阻止通过netcat发送的数据。

我就可以注意,我希望对大多数DD-WRT这项工作建立,所以我想不安装任何新的软件包。另外,bash似乎在构建过程中被破坏/最小化,所以我试图避免bash。

请让我知道如果你有任何问题,解决办法,或其他的问题,将这个问题上需要帮助的引用。

感谢,

詹姆斯

回答

2

的netcat继承了标准输入描述符。从别的地方,而不是重定向它,比如:当它到达结束输入

nc <server_ip> 1234 < /dev/null 

不幸的netcat关闭连接,所以如果你想连接保持开放状态,你可以使用-d标志。

nc -d <server_ip> 1234 < /dev/null 
+0

这很有道理,感谢您的帮助。看起来netcat包在这个安装中缺少'd'标志。它抛出'nc:无效选项--d' – James