python脚本通过登重启录ambari页面开启关闭各服务,参数传入服务名称和操作
时间: 2023-12-20 08:06:13 浏览: 77
可以使用以下代码实现:
```python
import requests
import json
AMBARI_URL = "http://<ambari-server>:8080/api/v1/clusters/<cluster-name>/services/{0}"
AMBARI_AUTH = ("<username>", "<password>")
def start_stop_service(service_name, operation):
url = AMBARI_URL.format(service_name)
data = {"RequestInfo": {"context": operation + " " + service_name}, "Body": {"ServiceInfo": {"state": operation}}}
headers = {"X-Requested-By": "ambari", "Content-Type": "application/json"}
response = requests.put(url, auth=AMBARI_AUTH, headers=headers, data=json.dumps(data))
response_json = response.json()
if "Requests" in response_json:
request_id = response_json["Requests"]["id"]
print("Request ID: {0}".format(request_id))
else:
print(response_json)
# example usage
start_stop_service("HDFS", "START")
start_stop_service("YARN", "STOP")
```
这个脚本通过向 Ambari REST API 发送 PUT 请求来启动或停止指定的服务。在 `AMBARI_URL` 中,`{0}` 会在运行时被替换为服务名称。`data` 字典包含请求的正文。其中,`RequestInfo` 中的 `context` 字段用于描述请求的上下文,`Body` 中的 `ServiceInfo` 字段用于定义服务的状态。最后,`headers` 包含必需的请求标头,`auth` 参数用于传递 Ambari 的用户名和密码。在函数调用中,传递服务名称和操作("START" 或 "STOP")作为参数。函数将返回 Ambari 请求的 ID,以便您可以跟踪进度。
阅读全文