Отправить уведомление по электронной почте, когда не удается установить соединение sFTP? - PullRequest
1 голос
/ 22 марта 2012

У меня очень маленькая офисная среда, и моя команда ежедневно отправляет созданные pdf-файлы на sFTP-сервер.

Иногда мне звонят, что кто-то не может войти, чтобы загрузить файлы.

Обычно я сам подключаюсь к серверу sFTP, запускаю команду вроде ls, чтобы определить, что она отвечает.

Я хотел бы иметь возможность автоматизировать это с уведомлением в случае сбоя:

  1. Вход на сервер sFTP (с учетными данными).
  2. Запустите команду LS
  3. Электронная почта, если время соединения истекло или произошел сбой входа.

У меня ограниченный опыт написания пакетных файлов, но я не могу найти способ получить только «неудачный» / отсутствие ответа на отправку электронного письма.

Может ли кто-нибудь помочь с идеями?Я хотел бы запустить это как VB или пакет в запланированных задачах, так как у меня есть компьютер с Server 2000, на котором он может работать.Я знаю, что у пакета есть проблема с отправкой электронной почты, но у меня есть другой пакетный файл, который использует Blat.exe для отправки электронного письма с переданными переменными, поэтому я мог бы использовать это, если бы я мог получить пакет для отправки неудачных ответов ...

Ответы [ 2 ]

0 голосов
/ 23 марта 2012

Вы должны сделать это с помощью командного файла.

Создайте файл с именем logon.ftp. Этот файл содержит скрипт входа в систему FTP. Шахта содержит:

open Ftp_server
ftpuser
ftppassword
ls -l
quit

Файл testftp.bat:

ftp.exe < logon.ftp | grep "Not connected" > nul && call :alert_someone
@echo Logon successful
goto exit

:alert_someone

@echo %date% %time% > alert.txt
@echo ftp_server appears to not be taking logins. >> alert.txt
blat alert.txt -to you -from ftp_watcher -subject "alert %date% %time% ftp_server not taking logins"

:exit

Вам понадобится получить blat и grep, чтобы вы могли проверить строку. Мой winxp ftp не поддерживает уровни ошибок, поэтому я использую уровень ошибок, возвращаемый при очистке строки «Не подключен», чтобы выяснить, сработало ли это или нет.

Вы также можете использовать wget или curl, и они поддерживают уровни ошибок.

0 голосов
/ 22 марта 2012

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

Если вы были в состоянии и хотите экспериментировать с языком программирования Python (http://www.python.org) и дополнительно установить модуль Paramiko(http://www.lag.net/paramiko/) тогда можно было бы написать сценарий в соответствии с ...

import paramiko

try:
    t = paramiko.Transport(('TheHostname', 22))
    t.connect(username='MyUsername', password='MyPassword')
    sftp = paramiko.SFTPClient.from_transport(t)
    dirlist = sftp.listdir('.')
except:
    print "It's Broken"
    #Send e-mails and such here

, который можно было бы запланировать для регулярной работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...