ECS:如何使用 API curl 命令
Summary: 如何将应用程序编程接口 (API) curl 命令与 GET 和 PUT 示例配合使用。
Instructions
本知识库文章介绍如何使用 curl 命令来使用 ECS API。
在《ECS 管理指南》或《数据访问指南》等用户指南中,提供了通过 curl 命令使用 API 的示例。
这将显示如何在 API 上使用 curl 命令执行 GET 和 PUT。在此示例中,每 KB ECS 的 LDAPS 证书 API:如何在 ECS 上通过 LDAPS 设置和接受所有证书。
Curl 示例 — LDAPS 证书 API 示例:
LDAPS 证书 API 使用管理 IP,不允许 emcmonitor 访问,但允许 root 用户访问。这是 ECS API 用法的一个示例,LDAPS 证书 API 位于 "/vdc/truststore"。您的 API 可能有所不同,并且位于不同的位置。
要检查有关 LDAPS 证书设置的 ECS 设置,请首先获取要使用的节点管理 IP。如果 UI 管理存在网络分离,则”getrackinfo -n“具有”mgmt“值。使用节点 public.mgmt IP 地址,这些步骤不需要复制和数据网络分离:
# getrackinfo -n Named networks ============== Node ID Network Ip Address Netmask Gateway VLAN Interface 1 repl 10.xxx.xxx.11 255.255.254.0 xxx.xxx.xxx.xxx 14 public 1 mgmt 10.xxx.xxx.21 255.255.254.0 xxx.xxx.xxx.xxx 13 public 1 data 10.xxx.xxx.31 255.255.254.0 xxx.xxx.xxx.xxx 15 public 2 repl 10.xxx.xxx.12 255.255.254.0 xxx.xxx.xxx.xxx 14 public 2 mgmt 10.xxx.xxx.22 255.255.254.0 xxx.xxx.xxx.xxx 13 public 2 data 10.xxx.xxx.32 255.255.254.0 xxx.xxx.xxx.xxx 15 public 3 repl 10.xxx.xxx.13 255.255.254.0 xxx.xxx.xxx.xxx 14 public 3 mgmt 10.xxx.xxx.23 255.255.254.0 xxx.xxx.xxx.xxx 13 public 3 data 10.xxx.xxx.33 255.255.254.0 xxx.xxx.xxx.xxx 15 public 4 repl 10.xxx.xxx.14 255.255.254.0 xxx.xxx.xxx.xxx 14 public 4 mgmt 10.xxx.xxx.24 255.255.254.0 xxx.xxx.xxx.xxx 13 public 4 data 10.xxx.xxx.34 255.255.254.0 xxx.xxx.xxx.xxx 15 public
如果 VDC 上没有网络 public.mgmt 分离,请改用节点的公用 IP 地址。请注意,如果设置了 public.mgmt 网络分离地址,则优先。
# getrackinfo Node private Node Public BMC Ip Address Id Status Mac Ip Address Mac Ip Address Node Name =============== ====== ====== ================= ================= ================= ================= ========= 192.1XX.2XX.1 1 MA a4:bf:xx:xx:xx:74 10.xx.xx.1 a4:bf:xx:xx:xx 192.1XX.2XX.101 provo-red 192.1XX.2XX.2 2 SA a4:bf:xx:xx:xx:c8 10.xx.xx.2 a4:bf:xx:xx:xx 192.1XX.2XX.102 sandy-red 192.1XX.2XX.3 3 SA a4:bf:xx:xx:xx:e0 10.xx.xx.3 a4:bf:xx:xx:xx 192.1XX.2XX.103 orem-red 192.1XX.2XX.4 4 SA a4:bf:xx:xx:xx:56 10.xx.xx.4 a4:bf:xx:xx:xx 192.168.219.104 ogden-red
使用获得的管理 IP 地址以获取 root 用户令牌,此操作需要 root 用户密码:
# curl -s -k -v -u root https://<NodeManagementIP>:4443/login 2>&1
示例:
# curl -s -k -v -u root https://10.xxx.xxx.21:4443/login 2>&1 Enter host password for user 'root': ...... < HTTP/1.1 200 OK < Date: Thu, 14 Jan 2021 13:51:24 GMT < Content-Type: application/xml < Content-Length: 93 < Connection: keep-alive < X-SDS-AUTH-TOKEN: BAAcdWhGbnVRVjd1WlpmR0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxAgAC0A8= < X-SDS-AUTH-USERNAME: root < X-SDS-AUTH-MAX-AGE: 28800 < * Connection #0 to host 10.xxx.xxx.21 left intact root
如果输出不是“HTTP/1.1 200 OK”,请检查密码和 IP 地址,检查 UI 管理网络是否与命令分离”getrackinfo -n”。使用 root 用户令牌创建一个令牌变量,如果在新的 CLI 会话中,则必须更新有效的令牌:
# export TOKEN='X-SDS-AUTH-TOKEN: BAAcdWhGbnVRVjd1WlpmR0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxAgAC0A8='
要测试令牌的值,您可以运行 curl 命令:
# curl -k -X GET -H "$TOKEN" https://10.xxx.xxx.21:4443/object/capacity | xmllint --format - % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 176 100 176 0 0 249 0 --:--:-- --:--:-- --:--:-- 250 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <cluster_capacity> <totalFree_gb>100657</totalFree_gb> <totalProvisioned_gb>447005</totalProvisioned_gb> </cluster_capacity>
上述步骤的目的是使用 root 用户令牌获得对 ECS UI 信任库的 curl 访问权限。有关“添加自定义 LDAP 证书”的详细信息,请参见ECS 管理员指南。在此 ECS API 用法示例中,LDAPS 证书 API 位于 "/vdc/truststore"。您的 API 可能位于不同的位置。
Curl GET 示例:
使用 curl GET 命令获取信任库设置:
# curl -s -k -X GET -H Content-Type:application/json -H "$TOKEN" -H ACCEPT:application/json https://<NodeManagementIP>:4443/vdc/truststore/settings
示例:
# curl -s -k -X GET -H Content-Type:application/json -H "$TOKEN" -H ACCEPT:application/json https://10.xxx.xxx.21:4443/vdc/truststore/settings
{"accept_all_certificates":false}
在上面的示例中,信任库 "accept_all_certificates" 设置为 false。这意味着只有与 AD/LDAP 服务器证书匹配的上传的 LDAPS 证书才能受到 ECS 的信任。用户可能希望此设置为 true 或 false,具体取决于他们的需要。要测试 LDAPS 连接,请将其设置为 true 并测试用户可以验证的用户登录。
创建一个 json 文件,以通过带有 json 有效负载的 curl 命令更改信任库设置:
# sudo vi truststoresettings.json
# sudo cat truststoresettings.json
{"accept_all_certificates": "true"}
python 上的 json.tool 模块可以验证 json 文件格式。如果出现错误,则该文件可能不是 json 文件。在此示例中,没有任何错误,并且输出文件,因此它是格式化的 json 文件:
# python -m json.tool truststoresettings.json
{
"accept_all_certificates": "true"
}
Curl PUT 示例:
使用 curl PUT 命令,以 json 文件作为有效负载运行 curl 命令:
# curl -s -k -X PUT -H Content-Type:application/json -H "$TOKEN" -H ACCEPT:application/json https://:4443/vdc/truststore/settings -d @truststoresettings.json
要检查它是否已更新,请运行 curl GET 命令:
# curl -s -k -X GET -H Content-Type:application/json -H "$TOKEN" -H ACCEPT:application/json https://10.xxx.xxx.21:4443/vdc/truststore/settings
{"accept_all_certificates":true}