如何通过 cURL 使用 AMI?

How can I work with AMI via cURL?

我有一个在端口 8088 上启用了 AMI web 的星号服务器,前缀为 asterisk。所以我的 rawman url 会是 http://myserver:8088/asterisk/rawman

我刚刚尝试用 2 urls
登录和 ping http://myserver:8088/asterisk/rawman?action=login&username=admin&secret=admin
http://myserver:8088/asterisk/rawman?action=ping

当我在网络浏览器中输入 urls 以上的 2 时它起作用,但当我从终端使用 cURL 时它不起作用。

来自终端的结果:
curl 'http://myserver:8088/asterisk/rawman?action=login&username=admin&secret=admin'
Response: Success
Message: Authentication accepted

curl 'http://myserver:8088/asterisk/rawman?action=ping'
Response: Error
Message: Permission denied

Asterisk CLI 错误:(X.X.X.X 是我的 LAN ip 地址)

HTTP Connect attempt from 'X.X.X.X' unable to authenticate

所以我不能像处理 AJAM 时那样执行任何进一步的命令。
如果有人有想法,请帮助我,谢谢。
最好的问候
来党

对于您在浏览器中的第一个请求,您将通过身份验证过程,Asterisk 会使用您的浏览器保留并在进一步请求中使用的 cookie 进行响应。您应该在 AMI 响应中看到它 Set-Cookie header.

但是当您使用 cURL 时不会发生这种情况,它不会为您保存 cookie。您应该明确告诉 cURL 在请求中使用 cookie。请参阅 cURL 手册以查找详细信息 http://curl.haxx.se/docs/http-cookies.html

您可以使用备用 a* 命令为每个请求提供摘要身份验证。例如,您的 ping 操作将如下所示:

curl -v --digest -u admin:admin http://myserver:8088/asterisk/arawman?action=ping

不想回答我自己的问题,但我post这是为了那些会遇到这个麻烦的人

参考http://curl.haxx.se/docs/http-cookies.html简而言之:

登录时存储cookiejar:

curl -c ./cookie-file -v http://myserver:8088/asterisk/rawman?action=login&username=admin&secret=admin

将 cookiejar 与 ping 或其他命令一起使用:

curl -b ./cookie-file -v http://myserver:8088/asterisk/rawman?action=ping

应该可以。

来党

curl -c /path/to/cookiefile http://yourhost/ 写入 cookie 文件并启动引擎并使用 cookie,您可以使用

curl -b /path/to/cookiefile http://yourhost/** 它对我有用