[英]How do I add an infinite nc (netcat-openbsd) job as a crontab -e command to run @restart?
在默認的ubuntu終端上,以下工作正常:
nc -P ANONYMOUS 10.0.1.2 7700 >> ~/some.log
我使用該命令使一台計算機連接到遠程服務器,然后坐在那里,偵聽遠程服務器發送給它的信息。 時間的長度是無限的,並且每隔幾秒鍾就會將行添加到日志中。
但是,一旦我嘗試使用crontab -e
將此命令添加為cron作業,它就不起作用了!
(我真的很想cron啟動命令@restart
)
我已經隔離了一些問題:
看起來該連接最初是建立的,但隨后立即關閉。
當我在命令中添加"-q 60"
:
nc -q 60 -P ANONYMOUS 10.0.1.2 7700 >> ~/some.log
cronjob
實際上確實打開了連接,並按照指定的方式監聽了60秒(是!),但是當我將其更改為"-q -1"
來指定無限的時間段時,連接立即關閉(boo!)。 。
手冊頁明確聲明了-q
:“在stdin
EOF后的-q,等待指定的秒數,然后退出。如果秒為負數,則永遠等待。”
我相信這個問題可能與-q
選項的默認行為有關,因為我在這里找到了相關的錯誤報告/修復:
https://bugs.launchpad.net/ubuntu/+source/netcat-openbsd/+bug/544935
其中可能已經針對具有提示的終端解決了該問題,但可能沒有針對沒有提示的終端解決了該問題?
這也可能是一個獨立的問題,與將負值傳遞給nc -q
選項有關。
另一種可能性是,它甚至可能與cron外殼有關,但是,我嘗試過的其他測試似乎表明cron(sh)ell正在按預期方式工作。
注意,在定義crontab
命令(( env -i sh;
和bash;
以及采購各種.bashrc
文件)時,我嘗試使用各種外殼和環境組合。設置$PS1
以確保默認.bashrc
文件中的第5行不會在返回之前該文件是完全來源的。)。
我正在運行: Ubuntu 12.04.3 LTS版本
發行: 12.04 netcat-openbsd: 1.89-4ubuntu1
所以我的問題是:在這種情況下,為什么不添加"-q -1"
? 和:
我還必須完成其他哪些選擇?
嘗試將'-d'選項添加到netcat:
nc -d -q -1 -P ANONYMOUS 10.0.1.2 7700 >> ~/some.log
它為我工作。 按照手冊頁,-d標志為“請勿嘗試從stdin讀取”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.