从python为一些服务器监控HTTP / FTP / IMAP / POP3 / SMTP等服务的最佳方法是什么? 使用套接字并尝试连接到服务端口http-80,ftp-21等...如果连接成功则假定服务正常或使用python libs连接到指定的服务并处理异常/返回代码/等...... < / p>
例如对于ftp来说,最好是
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.connect(("ftp.domain.tld", 21))
print "ok"
except:
print "failed"
s.close()
或
from ftplib import FTP
try:
ftp = FTP('ftp.domain.tld')
print "FTP service OK"
ftp.close()
except:
print "FTP err"
其余部分,socket vs urllib2,imaplib等... 如果我采用lib方式,我该如何测试smtp?
答案 0 :(得分:2)
更新1:
实际上,在您的代码中,两个选项(在FTP中)没有区别。对于代码可读性,第二个选项应该是首选。但是不能登录到ftp服务器,也许还能看一些文件?
更新0:
监控时,测试完整堆栈更好。因为否则你可能会错过在套接字级别没有表现出来的问题。可以使用smtplib测试smtp。最好的方法是用它发送邮件。并使用imaplib从目标中读取它。或者,您可以使用smtplib与smtp服务器进行通信。做整个端到端的事情会更好。但是应该考虑开发和配置资源以防止丢失问题的影响。