URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8953
[ Назад ]

Исходное сообщение
"Использование expect в shell-скриптах"

Отправлено Shaylin87 , 07-Дек-10 17:01 
Всем привет! Люди, помогите....

У меня ОС SCO unix 6.0

Хочу написать скрипт, который бы, отправлял мне сообщения с unix сервера на мой Outlook...
Так вот, набрасал вот такой скрипт, но он что не хочет работать... Вероятнее всего, я expect - ом не правильно пользуюсь, т.к. прочитал небольщую статью по нему и там был кое какой пример, ну я исходя из примера решил себе скриптец навоять..., помогите написать правильно:

#!/usr/gnu/bin/expect

set ff [open /err_mail/mess.txt r+]
set ttext [read $ff]
close $ff

spawn telnet -r указываю_IP_сервера_Exchange 25
expect "%"
send "helo\r"
expect "%"
send "MAIL FROM: электронный адрес от кого\r"
expect "%"
send "RCPT TO: электронный адрес кому\r"
expect "%"
send "Date\r"
expect "%"
send "Subject: указываю тему сообщения\r"
expect "%"
send $ttext\r
expect "%"
send ".\r"
expect "%"
send "quit\r"
expect eof

Я пробовал просто отправить сообщение в ручную с этого сервера, все отправлется нормально!
ОТправлял так:
1) Соединился с по telnet c сервером Exchange:
#telnet -r 10.10.10.10 25
2) Управление передалось серверу Exchange и я последовательно ввожу такие команды (каждая команда с новой строки должна вводится):
helo
MAIL FROM: электронный адрес от кого
RCPT TO: электронный адрес кому
Date
Subject: указываю тему сообщения
Пишу текст своего сообщения
.                     // точка означает конец текстового сообщения
quit
После этого управление опять передается командной строке Unix и через пол минуты на мой Outlook прилетает это сообщение...

Вообще, моя цель, написать скрипт, который таким способом, который я чуть выше описал, отправлял мне сообщение, причем брал текст сообщения из опрделенного файла из определенной дирректории...

Помогите, пожалуйста.


Содержание

Сообщения в этом обсуждении
"Использование expect в shell-скриптах"
Отправлено rakis , 07-Дек-10 18:34 
а зачем все так сложно? почему нельзя по старинке?

cat /path/file | mail -s test user@domain.tld

P.S. Синтаксис на SCO может немного отличаться, но принцип тот же.


"Использование expect в shell-скриптах"
Отправлено Konstantin , 08-Дек-10 09:58 
а если так
#!/usr/gnu/bin/expect

set ff [open /err_mail/mess.txt r+]
set ttext [read $ff]
close $ff

spawn telnet -r указываю_IP_сервера_Exchange 25
expect ""
send "helo server_namer\r"
expect ""
send "MAIL FROM: электронный адрес от кого\r"
expect ""
send "RCPT TO: электронный адрес кому\r"
expect ""
send "Data\r"
expect ""
send "Subject: указываю тему сообщения\r"
expect ""
send $ttext\r
expect ""
send ".\r"
expect ""
send "quit\r"
expect eof


"Использование expect в shell-скриптах"
Отправлено Shaylin87 , 08-Дек-10 10:18 
>[оверквотинг удален]
> .          
>          // точка
> означает конец текстового сообщения
> quit
> После этого управление опять передается командной строке Unix и через пол минуты
> на мой Outlook прилетает это сообщение...
> Вообще, моя цель, написать скрипт, который таким способом, который я чуть выше
> описал, отправлял мне сообщение, причем брал текст сообщения из опрделенного файла
> из определенной дирректории...
> Помогите, пожалуйста.

Большое спасибо, тем кто не остался равнодушен к моей проблеме :-)
Я разабрался сам... Мой скрипт полноценно рабочий, просто я сам реально тупанул :-) Я запускал его не так... Запускал его sh exch.sh, а надо было так: expect exch.sh и все заработало!!!!