ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Proxmox VE api python调用测试

2022-01-20 12:59:09  阅读:452  来源: 互联网

标签:VE get python self url json pve Proxmox password


官方api文档:
https://pve.proxmox.com/pve-docs/api-viewer

# -*- coding:utf-8 -*-
'''
@Author: XGL
@File: pvehttp.py
@CreateTime: 2022/1/20 9:43
'''

import requests
from requests.cookies import cookiejar_from_dict
from time import sleep
import urllib3

urllib3.disable_warnings()

class Pvehttp():
    def __init__(self, host, username, password):
        self.host = host
        self.username = username
        self.password = password
        self.base_url = 'https://' + host + ':8006/'
        self.header = {'content-type': 'application/json'}
        self.request_data = {
            'username': self.username,
            'password': self.password,
            'realm': 'pam'
        }
        self.csrftoken = self.baseauth().get('data').get('CSRFPreventionToken')
        self.ticket = self.baseauth().get('data').get('ticket')
        self.cookies = cookiejar_from_dict({"PVEAuthCookie": self.ticket})
        self.post_header = {
            'Cookie': 'PVEAuthCookie={}'.format(self.ticket),
            'CSRFPreventionToken': self.csrftoken,
        }

    def baseauth(self):
        url = self.base_url + 'api2/json/access/ticket'
        response = requests.post(url, headers=self.header, json=self.request_data, verify=False).json()
        return response

    def req(self, method, apiurl, **kwargs):
        url = self.base_url + apiurl
        try:
            if method == 'get':
                response = requests.get(url, **kwargs)
                return response.json()
            elif method == 'post':
                response = requests.post(url, **kwargs)
                return response.json()
        except Exception as f:
            return f


    def getstatus(self, apiurl):
        return self.req('get', apiurl, cookies=self.cookies, verify=False)

    def poststatus(self, apiurl):
        return self.req('post',apiurl, headers=self.post_header, verify=False)


if __name__ == '__main__':
    data = {
        'username': 'root',
        'password': 'password',
        'host': '192.168.16.36'
    }
    pve = Pvehttp(**data)
    # print(pve.getstatus('api2/json/cluster/tasks'))
    print(pve.poststatus('api2/extjs/nodes/pve/qemu/101/status/start'))
    sleep(5)
	print(pve.getstatus('api2/json/nodes/pve/qemu/101/status/current'))

虚拟机开机测试

在这里插入图片描述

标签:VE,get,python,self,url,json,pve,Proxmox,password
来源: https://blog.csdn.net/qq_39438868/article/details/122599178

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有