Выходной файл 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=/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, если это не является строго необходимым.

Другие вопросы по тегам