无法访问sFTP连接时通过电子邮件发送提醒?

时间:2012-03-22 17:26:50

标签: email batch-file notifications sftp

我的办公环境非常小,我的团队每天都会将创建的pdf发送到sFTP服务器。

有时候,我会接到一个有人无法登录上传文件的电话。

我的正常做法是自己连接到sFTP服务器,运行像ls这样的命令来确定它是否正在响应。

如果发生故障,我希望能够通过通知自动执行此操作:

  1. 登录sFTP服务器(带凭据)。
  2. 运行LS命令
  3. 如果连接超时或登录失败,则发送电子邮件。
  4. 我在编写批处理文件方面经验有限,但我似乎无法找到一种方法来只获得一个“失败”的文件。 /没有回复发送电子邮件。

    任何人都可以帮忙提出想法吗?我想在计划任务中将其作为VB或批处理运行,因为我有一台可以运行的Server 2000计算机。我知道批处理有问题发送电子邮件,但我有另一个批处理文件,使用Blat.exe发送带有传递变量的电子邮件,所以我可以使用它,如果我可以批量发送失败的响应......

2 个答案:

答案 0 :(得分:0)

对于这类事情,批处理文件可能有点过于基本。

如果您能够并且愿意尝试使用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

然后您可以安排定期运行。

答案 1 :(得分:0)

您应该可以使用批处理文件执行此操作。

创建一个名为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不支持错误级别,所以我使用grepping“未连接”字符串返回的错误级别来判断这是否有效。

您也可以使用wget或curl来执行此操作,并且它们确实支持错误级别。