我的办公环境非常小,我的团队每天都会将创建的pdf发送到sFTP服务器。
有时候,我会接到一个有人无法登录上传文件的电话。
我的正常做法是自己连接到sFTP服务器,运行像ls这样的命令来确定它是否正在响应。
如果发生故障,我希望能够通过通知自动执行此操作:
我在编写批处理文件方面经验有限,但我似乎无法找到一种方法来只获得一个“失败”的文件。 /没有回复发送电子邮件。
任何人都可以帮忙提出想法吗?我想在计划任务中将其作为VB或批处理运行,因为我有一台可以运行的Server 2000计算机。我知道批处理有问题发送电子邮件,但我有另一个批处理文件,使用Blat.exe发送带有传递变量的电子邮件,所以我可以使用它,如果我可以批量发送失败的响应......
答案 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来执行此操作,并且它们确实支持错误级别。