これまでのapiの取得方法だとapiのauth認証の問題によりエラーが発生。
chatGPTと粘って会話したところ以下の方法にて成功したので、メモをする
python3 コマンドにて実行可能
hosts_get.py
import requests
import json
url = "https://yourdomain/zabbix/api_jsonrpc.php"
headers = {
'Authorization': 'Bearer apitoken',
'Content-Type': 'application/json-rpc'
}
# host.get リクエスト
def get_hosts():
payload = {
"jsonrpc": "2.0",
"method": "host.get",
"params": {
"output": ["hostid", "host", "name"],
"sortfield": "name" # 名前順にソート
},
"id": 1
}
# リクエストを送信
response = requests.post(url, headers=headers, data=json.dumps(payload))
data = response.json()
# 結果を見やすく表示
if 'result' in data:
with open("hosts.txt", "w") as file:
for host in data['result']:
line = f"Host ID: {host['hostid']}, Host: {host['host']}, Name: {host['name']}\n"
print(line.strip()) # コンソールにも出力
file.write(line) # ファイルに書き込み
print("✅ ホスト一覧を 'hosts.txt' に出力しました。")
else:
print(f"Error: {data.get('error', 'Unknown error')}")
# 実行
if __name__ == "__main__":
get_hosts()