Telnet 输出文件在 Crontab 下无法正常工作

Telnet 输出文件在 Crontab 下无法正常工作

我正在使用 Ubuntu 10.04.4LTS,并且在我的计算机上安装了 Ganglia。

我曾经通过输入以下内容来获取 Gmetad 数据:

telnet localhost 8651 > /test/test.txt

或者创建一个 .sh 文件来运行它。之后我想定期获取 Gmetad 数据。我尝试 Crontab。经过一些简单的测试,我确信 Crontab 在我的 Ubuntu 中可以正常工作。但是,当我尝试通过如下设置让 crontab 获取数据时:

*/5 * * * * root sudo telnet localhost 8651 > /test/test.txt

输出文件将不完整,例如:

3263  2012-07-13 09:28 FromCrontab.txt
44833 2012-07-13 08:14 CorrectOne.txt

CorrectOne.txt 文件包含 44833 个字符,但 Crontab 的输出文件仅包含 3263 个字符。

我尝试使用以下方法来解决这个问题tee

sudo telnet localhost 8651 | tee -i /test/test.txt

或者更改 SHELL:

SHELL=/bin/sh or SHELL=/bin/bash

谁也帮不上忙。

我是 Ubuntu 新手,对 crontab 或 telnet 不熟悉。希望有人能帮我解决这个问题或给我一些学习的方向。

谢谢。

答案1

使用 nc:

 The nc (or netcat) utility is used for just about anything under the sun
 involving TCP or UDP.  It can open TCP connections, send UDP packets,
 listen on arbitrary TCP and UDP ports, do port scanning, and deal with
 both IPv4 and IPv6.  Unlike telnet(1), nc scripts nicely, and separates
 error messages onto standard error instead of sending them to standard
 output, as telnet(1) does with some.

要安装它,请输入sudo apt-get install netcat-openbsd

类似这样的东西应该可以很好地替代你的 telnet 线路(这假设你不必发送或输入任何内容来获取数据;抱歉,我不熟悉 ganglia):

nc localhost 8651 > /test/test.txt

在你的 /etc/crontab 上:

* * * * * root nc localhost 8651 > /test/test.txt

请注意,如果您以 root 身份运行此程序,则不需要 sudo。事实上,即使作为普通用户,您也应该不是需要使用 sudo 来运行 nc。出于安全原因,我建议您避免使用 root 或 sudo,除非绝对必要。

相关内容