mongodb 使用python,如何只检查远程mongo服务器是否响应,而不知道任何特定的文档?

eh57zj3b  于 2023-02-11  发布在  Go
关注(0)|答案(1)|浏览(70)

只使用python低级套接字,例如没有PyMongo或MongoEngine,如何只检查远程(局域网上)mongo服务器是否响应?例如,不需要任何特定文档的知识。服务器运行由来自相同客户端和权限的mongo验证:

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('mongodb://192.168.1.2', 27017))
         ...
sock.close()

应至少有一个连接,但异常为:[Errno -2]名称或服务未知

fnvucqvd

fnvucqvd1#

Mark Tolonen回答说,URI是意外的,只需要IP字符串。要验证mongo服务器是否正常运行,请创建一个数据库和集合(注意响应中的'\x01ok'):

op_msg = [
    b'\x5D', b'\x00', b'\x00', b'\x00', # total message size
    b'\x00', b'\x00', b'\x00', b'\x00', # requestID (can be 0)
                  ...
    sock = socket.socket()
    sock.connect(('192.168.1.2', 27017))
    sock.send(b''.join(op_msg))
    data = sock.recv(1024)
    print("bytes: {}".format(data))
    sock.close()
                  ...
bytes: b'-\x00\x00\x00\xcf\x18\x00\x00\x00\x00\x00\x00\xdd
\x07\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x10n\x00
\x01\x00\x00\x00\x01ok\x00\x00\x00\x00\x00\x00\x00\xf0?\x00'

相关问题