我正在使用“测试连接”功能来根据用户输入的配置详细信息测试远程Syslog服务器是否可用。用户提供的基本详细信息是ip
和运行系统日志服务器的port
。指示Syslog服务器是否已启用TLS/SSL
的开关,以及是否启用TLS/SSL
时用于上传Syslog Servers公共证书的地方。
一个被证明是困难的(我认为是不可能的)极端情况是将Syslog服务器配置为使用TLS,但是客户端应用程序在未启用TLS/SSL
的情况下发送了测试消息。只要ip
和port
正确,消息就可以成功发送。 Syslog服务器甚至记录该消息,尽管它没有被加密,但它只是垃圾。
要求是能够检测到这种情况并向用户报告他们需要启用TLS/SSL
。我认为这是不可能的,因为无法从Syslog服务器读取信息(据我所知),并且只要包含该消息的TCP包得到确认,就没有任何依据可以做出该决定。
这是我编写的用于测试连接的快速原型脚本,但是除非Syslog服务器根本不可用,否则我不会导致失败。
def send():
with socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0) as sock:
sock.connect((hostname, 6514))
sock.send('Testing Syslog')
for x in range(10):
send()
time.sleep(1)
我想要的是以下之一:
openssl
命令集。