Проблема с /dev/tcp в задании скрипта по cron

На доскональное знание данной темы, не может претендовать, пожалуй ни один спец, из ныне живущих на земле. ;-)
Так поможем друг другу.

Модераторы: Trinity admin`s, Free-lance moderator`s

Ответить
weih
member
Сообщения: 26
Зарегистрирован: 12 дек 2004, 10:48

Проблема с /dev/tcp в задании скрипта по cron

Сообщение weih » 26 май 2006, 11:53

ОС: Solaris 9

есть такой вот скрипт:

# cat mail.sh
#/usr/bin/bash

TCP_HOST=172.16.10.20
TCP_PORT=25
NET_DEV=/dev/tcp

MAIL_FROM="root@sol1"
RCPT_TO="admin@d1.ru"
SUBJ="Report from sol1"

{ echo "HELO"; sleep 1;
 echo "MAIL FROM: $MAIL_FROM"; sleep 1;
 echo "RCPT TO: $RCPT_TO"; sleep 1;
 echo "DATA"; sleep 1;
 echo "From: $MAIL_FROM <$MAIL_FROM>"; sleep 1;
 echo "To: $RCPT_TO <$RCPT_TO>"; sleep 1;
 echo "Subject: $SUBJ"; sleep 1;
 echo "Report:"; sleep 1;

 metastat; sleep 1;

 echo "."; sleep 1;
 echo "QUIT";
}  > $NET_DEV/${TCP_HOST}/${TCP_PORT}

когда я его запускаю из своего сеанса, т.е. в своем шелл, то скрипт отрабатывает без проблем, почта шлется. Когда я запихиваю его в cron, то получаю на рутовую почту следующее письмо:

Your "cron" job on sol1
/export/home/scripts/mail.sh

produced the following output:

/export/home/scripts/mail.sh: /dev/tcp/172.16.10.20/25: cannot create

я знаю, что в cron нету своих переменных среды, поэтому я пробовал добавлять в скрипт все переменные которые были в моем сеансе:

PWD=/export/home/scripts
TZ=Europe/Moscow
HZ=
HOSTNAME=sol1
MACHTYPE=sparc-sun-solaris2.9
MAIL=/var/mail/root
OLDPWD=/var/cron
EDITOR=vi
LOGNAME=root
SHLVL=1
SHELL=/sbin/sh
HOSTTYPE=sparc
OSTYPE=solaris2.9
HOME=/
TERM=xterm
PATH=/usr/sbin:/usr/bin:/usr/dt/bin:/usr/openwin/bin:/bin:/usr/ucb:/opt/sfw/gcc-3/bin
_=/usr/bin/env

и это тоже не помогло.

Почему не срабатывает скрипт по крону?

спасибо заранее!

Аватара пользователя
CrazyFrog
Advanced member
Сообщения: 210
Зарегистрирован: 16 авг 2005, 23:09
Откуда: Мурманск

Re: Проблема с /dev/tcp в задании скрипта по cron

Сообщение CrazyFrog » 29 май 2006, 14:43

WeiH писал(а): #/usr/bin/bash
Здесь пропущен !:

Код: Выделить всё

#!/usr/bin/bash
WeiH писал(а): { echo "HELO"; sleep 1;

}  > $NET_DEV/${TCP_HOST}/${TCP_PORT}
на что люди не идут лишь бы sendmail не настроить.
WeiH писал(а): я знаю, что в cron нету своих переменных среды, поэтому я пробовал добавлять в скрипт все переменные которые были в моем сеансе:
Дело не в переменных, дело в шелле: если не указано #!/bin/blahabla скрипт запускается через обычный шелл, который /dev/tcp не поддурживает.

btw, для мониторинга метадевайсов лучше юзать скрипт metacheck, чем постоянно присылать вывод metastat. От него у операторов глаз замылиывается и они не видят проблем. Был опыт.
http://docs.sun.com/app/docs/doc/816-45 ... epg?a=view

weih
member
Сообщения: 26
Зарегистрирован: 12 дек 2004, 10:48

Сообщение weih » 02 июн 2006, 13:47

Спасибо!

вот у меня то как раз глаз то и замылился, если я в шабанге умудрился пропустить "!"  :lol:

Ответить

Вернуться в «Серверы - ПО, Unix подобные системы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 25 гостей