#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