2014-04-25 148 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