Сценарий оболочки для отправки результатов запроса SQLPlus по электронной почте с использованием Mailx в AIX - PullRequest
2 голосов
/ 08 июня 2011

У меня есть команды, которые мне нужны.Если я выполню эти команды в командной строке, все будет работать как положено.SQLPlus запускает запрос, экспортирует результат в файл, а затем Mailx отправляет мне этот файл по электронной почте.

sqlplus username/pwd@instance
SPOOL /home/sadmin/sqlmail/spool.out
set linesize 2000
set wrap off
@/home/sadmin/sqlmail/query.sql
SPOOL OFF
exit
mail -s "Subject" email@address.com < /home/sadmin/sqlmail/spool.out

Но я не могу понять, как их поместить в.Sh файл, чтобы я мог запланировать это.Помогите!?И спасибо заранее, я уверен, что это очень глупо.

1 Ответ

2 голосов
/ 09 июня 2011

Использование оболочки «Здесь» - это обычное решение, т. Е.

 cat MyCommand.sh
 #!/bin/bash  # (or ksh, sh, etc)
 PATH=.../path/to/sqlplusdir:${PATH}

sqlplus username/pwd@instance <<EOS
    SPOOL /home/sadmin/sqlmail/spool.out
    set linesize 2000
    set wrap off
    @/home/sadmin/sqlmail/query.sql
    SPOOL OFF
    exit
EOS
mail -s "Subject" email@address.com < /home/sadmin/sqlmail/spool.out

Вам необходимо настроить окружение PATH, указав путь к исполняемому файлу sqlplus.

Затемвам нужен идентификатор пользователя с доступом к средству cron.Вы знаете, как использовать редактор 'vi'?Когда вы звоните crontab, вы будете просматривать запланированные задания текущих пользователей, и вам нужно будет манипулировать файлом с помощью команд 'vi'.(Может быть возможно переопределить, какой редактор использовать, но не рекомендуется)

Вам нужно прочитать справочную страницу для cron, то есть man cron, и вы будете вызывать вышеприведенный полный сценарий.Запись cron будет выглядеть так:

59 23 31 12 * { var=x; export var ; myCommand ; } > /tmp/myWorkDir/myCommand.trace 2>&1 

min
   hr
     day
       mon
          (DayOfWeek)

значения для даты / времени могут быть разделенными запятыми списками (0,15,30,45), разделенными дефисом диапазонами (4-6) или * для обозначения всех допустимых значений.

Это захватывает любые выходные данные, включая stderr, начиная с однократного запуска myCommand в файл в tmpDir.

Минимальная версия вышеупомянутого будет

59 23 12 31 * var=x; export var ; myCommand

и затем любой вывод отправляется в локальный почтовый ящик пользователя.

Надеюсь, это поможет.

...