如何通过 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/**
它对我有用
我有一个在端口 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/** 它对我有用