验证rabbitmq凭据是否有效

Lor*_*ein 25 python rabbitmq

我想编写一个在部署后运行的简单冒烟测试,以验证RabbitMQ凭证是否有效.检查rabbitmq用户名/密码/ vhost有效的最简单方法是什么?

编辑: 最好使用bash脚本进行检查.或者,使用Python脚本.

cce*_*lar 44

由于您没有提供有关语言等的任何细节:

您只需向管理API发出HTTP GET请求即可.

$ curl -i -u guest:guest http://localhost:15672/api/whoami
Run Code Online (Sandbox Code Playgroud)

请参阅RabbitMQ Management HTTP API

  • 区分"原因":"登录失败"和"原因":"不管理用户"`你可以判断凭证是否有效,即使用户不是管理员 (5认同)
  • 不幸的是,这仅适用于管理员用户 (3认同)

Lor*_*ein 25

这是一种使用Python检查的方法:

#!/usr/bin/env python
import socket
from kombu import Connection
host = "localhost"
port = 5672
user = "guest"
password = "guest"
vhost = "/"
url = 'amqp://{0}:{1}@{2}:{3}/{4}'.format(user, password, host, port, vhost)
with Connection(url) as c:
    try:
        c.connect()
    except socket.error:
        raise ValueError("Received socket.error, "
                         "rabbitmq server probably isn't running")
    except IOError:
        raise ValueError("Received IOError, probably bad credentials")
    else:
        print "Credentials are valid"
Run Code Online (Sandbox Code Playgroud)


Bar*_*ray 7

你可以尝试用rabbitmqctl为好,

rabbitmqctl authenticate_user username password
Run Code Online (Sandbox Code Playgroud)

并检查 Bash 中的返回码。


tul*_*per 5

使用Python:

>>> import pika
>>> URL = 'amqp://guest:guest@localhost:5672/%2F'
>>> parameters = pika.URLParameters(URL)
>>> connection = pika.BlockingConnection(parameters)
>>> connection.is_open
True
>>> connection.close()
Run Code Online (Sandbox Code Playgroud)