Подавить вывод ftp в сценарии оболочки при выполнении задания cron - PullRequest
0 голосов
/ 20 декабря 2018

Каждый вечер я запускаю сценарий резервного копирования, где я собираю некоторые данные, а затем отправляю их на другой сервер по sftp.Поскольку это действительно важные данные, я бы хотел, чтобы их заметили по электронной почте, если что-то пойдет не так.Вот почему я решил получать уведомления, если в задании cron (на управляемом сервере) возникают ошибки.

Вот так выглядит соединение sftp:

sftp -i ~/.ssh/id_rsa server.com <<EOF
put $file
rm $file_old
EOF

К сожалению, сейчас я получаюmail каждый раз, когда запускается скрипт, показывая вывод соединения sftp следующим образом:

Connected to server.com.
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                               Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0

Скрипт работает и файлы передаются.Есть ли способ скрыть вывод соединения sftp, но показать возможные ошибки скрипта?Любая помощь с благодарностью!

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

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

sftp -q -i ~/.ssh/id_rsa server.com <<EOF
put $file
rm $file_old
EOF

И эта команда отобразит ошибки на STDERR

0 голосов
/ 20 декабря 2018

Вы можете перенаправить вывод sftp:

sftp -i ~/.ssh/id_rsa server.com > /dev/null 2>&1 <<EOF

Таким образом, вы не увидите вывод.

Затем, если вы хотите увидеть возможные ошибки, вы можете использовать:

sftp -i ~/.ssh/id_rsa server.com > /dev/null 2>&1 <<EOF
put $file
rm $file_old
EOF
sftp_status=$?
case $sftp_status in
    0) sftp_error="";;
    1) sftp_error="Error 1: Generic error - Undetermined error in file copy";;
    2) sftp_error="Error 2: Remote host connection failure";;
    3) sftp_error="Error 3: Destination is not directory, but it should be";;
    4) sftp_error="Error 4: Connecting to host failed";;
    5) sftp_error="Error 5: Connection lost for some reason";;
    6) sftp_error="Error 6: File does not exist";;
    7) sftp_error="Error 7: No permission to access file";;
    8) sftp_error="Error 8: Undetermined error from sshfilexfer";;
    9) sftp_error="Error 9: File transfer protocol mismatch";;
    65) sftp_error="Error 65: Host not allowed to connect";;
    66) sftp_error="Error 66: Protocol error";;
    67) sftp_error="Error 67: Key exchange failed";;
    68) sftp_error="Error 68: Host authentication failed";;
    69) sftp_error="Error 69: MAC error";;
    70) sftp_error="Error 70: Compression error (not used in SSH2)";;
    71) sftp_error="Error 71: Service not available";;
    72) sftp_error="Error 72: Protocol version not supported";;
    73) sftp_error="Error 73: Host key not verifiable";;
    74) sftp_error="Error 74: Connection lost";;
    75) sftp_error="Error 75: Disconnected by application";;
    76) sftp_error="Error 76: Too many connections";;
    77) sftp_error="Error 77: Cancelled by user";;
    78) sftp_error="Error 78: No more auth methods available";;
    79) sftp_error="Error 79: Illegal user name";;
    255) sftp_error="Error 255: Error occurred in SSH";;
    *) sftp_error="Unknown sftp Error";;
esac
echo $sftp_error

Коды состояния основаны на этом списке: https://support2.microfocus.com/techdocs/2487.html

...