Как мне добавить электронную почту в этот скрипт

#linux #scripting #sftp #expect

#linux #создание сценариев #sftp #ожидать

Вопрос:

Мне нужно выяснить, как добавить уведомление по электронной почте, если файлы были успешно переданы «Передача прошла успешно» или если у них была проблема «Возникла проблема» ……. что я делаю не так…это сообщение, которое я получаю после передачи файлов

 sftp> invalid command name "EOD"  
while executing               
"EOD"                             

#!/usr/bin/expect<<EOD > output.log      
#
spawn sftp -o Port=22 HOSTDNS@HOSTDNS.com    
expect "assword:"                        
send "passwordr"                         
expect "sftp>"                           
send "lcd /usr/lib/basic/TEMP/TRANSr"   
expect "sftp>"                           
send "cd /home/denni/STORAGEr"          
expect "sftp>"                           
send "mput *r"                          
expect "sftp>"                           
send "byer"                             
EOD                                                                             
RC=$?                                                                           
if [[ ${RC} -ne 0 ]]; then                                                      
  cat output.log | mail -s "Errors Received"
"username@somewhere.com"  
else                                                                            
  echo "Success" | mail -s "Transfer Successful"
"username@somewhere.com "                                                                             
fi
  

Комментарии:

1. Добро пожаловать в SO! Этот вопрос не относится конкретно к отправке электронной почты. Это указывает на проблему с добавлением конструкции ‘<<END_MARKER’ в псевдокомментарий сценария оболочки. На самом деле, на мой взгляд, это очень интересно. Но это требует серьезных изменений. Пожалуйста, анализируйте суть проблемы и готовьте минимальный пример каждый раз, когда вы публикуете вопрос.

Ответ №1:

Убедитесь, что у вас есть bash в верхней части скрипта, и что после EOD нет пробелов. У меня это работает. Обратите внимание, что я также удалил #! из начала ожидаемого двоичного файла.

 #!/bin/bash

/usr/bin/expect <<EOD > output.log
spawn sftp username@hostname
expect "assword:"
send "passwordr"
expect "sftp>"
send "lsr"
expect "sftp>"
send "byer"
EOD