airmole
发表于 2020-2-12 15:02:26
启用(/site?action=SiteStart)、停用网站(/site?action=SiteStop)的API报以下错误,其他的API接口没问题。
<h1>抱歉,程序异常</h1>
<p>您请求的页面因发生异常而中断!</p>
WYstudio
发表于 2020-4-7 11:24:06
希望宝塔尽快完善API文档,有一些接口会返回一些API文档上没有标注过的新参数!希望宝塔尽快完善API文档!
宝塔用户_cetjla
发表于 2020-4-11 11:35:54
有个问题,请教下各位大神,我在用python去添加网站的时候总是报500错误,其他像获取系统信息,获取LOG日志等都正常的。python文件如下,python本版:3.7.0
#coding: utf-8
# +-------------------------------------------------------------------
# | 宝塔Linux面板
# +-------------------------------------------------------------------
# | Copyright (c) 2015-2099 宝塔软件() All rights reserved.
# +-------------------------------------------------------------------
# | Author: 黄文良 <2879625666@qq.com>
# +-------------------------------------------------------------------
#------------------------------
# API-Demo of Python
#------------------------------
import time,hashlib,sys,os,json
class bt_api:
__BT_KEY = '***'
__BT_PANEL = '***'
#如果希望多台面板,可以在实例化对象时,将面板地址与密钥传入
def __init__(self,bt_panel = None,bt_key = None):
if bt_panel:
self.__BT_PANEL = bt_panel
self.__BT_KEY = bt_key
#取面板日志
def get_logs(self):
#拼接URL地址
url = self.__BT_PANEL + '/data?action=getData'
#准备POST数据
p_data = self.__get_key_data()#取签名
p_data['table'] = 'logs'
p_data['limit'] = 10
p_data['tojs'] = 'test'
#请求面板接口
result = self.__http_post_cookie(url,p_data)
#解析JSON数据
return json.loads(result)
#取系统状态
def sysstatus(self):
#拼接URL地址
url = self.__BT_PANEL + '/system?action=GetSystemTotal'
#准备POST数据
p_data = self.__get_key_data()#取签名
#请求面板接口
result = self.__http_post_cookie(url,p_data)
#解析JSON数据
return json.loads(result)
#获取磁盘信息
def diskinfo(self):
#拼接URL地址
url = self.__BT_PANEL + '/system?action=GetDiskInfo'
#准备POST数据
p_data = self.__get_key_data()#取签名
#请求面板接口
result = self.__http_post_cookie(url,p_data)
#解析JSON数据
return json.loads(result)
def addsite(self):
#拼接URL地址
url = self.__BT_PANEL + '/site?action=AddSite'
#准备POST数据
p_data = self.__get_key_data()#取签名
# p_data['tojs'] = 'test'
# p_data={}
p_data['webname'] = {"domain":'test.com',"domainlist":[],"count":0}
p_data['path'] = '/www/wwwroot/test.com'
p_data['type_id'] = 0
p_data['type'] = 'PHP'
p_data['version'] = 72
p_data['port'] = 80
p_data['ps'] = 'test'
p_data['ftp'] = False
p_data['ftp_username'] = 'testtest'
p_data['ftp_password'] = 'testtest'
p_data['sql'] = False
p_data['coding'] = 'utf8'
p_data['datauser'] = 'testtest'
p_data['datapassword'] = 'testtesttesttest'
#请求面板接口
result = self.__http_post_cookie(url,p_data)
#解析JSON数据
return json.loads(result)
#计算MD5
def __get_md5(self,s):
m = hashlib.md5()
m.update(s.encode('utf-8'))
return m.hexdigest()
#构造带有签名的关联数组
def __get_key_data(self):
now_time = int(time.time())
p_data = {
'request_token':self.__get_md5(str(now_time) + '' + self.__get_md5(self.__BT_KEY)),
'request_time':now_time
}
return p_data
#发送POST请求并保存Cookie
#@url 被请求的URL地址(必需)
#@data POST参数,可以是字符串或字典(必需)
#@timeout 超时时间默认1800秒
#return string
def __http_post_cookie(self,url,p_data,timeout=18000):
cookie_file = './' + self.__get_md5(self.__BT_PANEL) + '.cookie'
with open(cookie_file,"a") as file:
file.write("# Netscape HTTP Cookie File\n")
if sys.version_info == 2:
#Python2
import urllib,urllib2,ssl,cookielib
#创建cookie对象
cookie_obj = cookielib.MozillaCookieJar(cookie_file)
#加载已保存的cookie
if os.path.exists(cookie_file):cookie_obj.load(cookie_file,ignore_discard=True,ignore_expires=True)
ssl._create_default_https_context = ssl._create_unverified_context
data = urllib.urlencode(p_data)
req = urllib2.Request(url, data)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie_obj))
response = opener.open(req,timeout=timeout)
#保存cookie
cookie_obj.save(ignore_discard=True, ignore_expires=True)
return response.read()
else:
#Python3
import urllib.request,ssl,http.cookiejar
cookie_obj = http.cookiejar.MozillaCookieJar(cookie_file)
if os.path.exists(cookie_file):
cookie_obj.load(cookie_file,ignore_discard=True,ignore_expires=True)
# cookie_obj.load(cookie_file,ignore_discard=True,ignore_expires=True)
handler = urllib.request.HTTPCookieProcessor(cookie_obj)
data = urllib.parse.urlencode(p_data).encode('utf-8')
print(data)
req = urllib.request.Request(url, data)
opener = urllib.request.build_opener(handler)
response = opener.open(req,timeout = timeout)
cookie_obj.save(ignore_discard=True, ignore_expires=True)
result = response.read()
if type(result) == bytes: result = result.decode('utf-8')
return result
if __name__ == '__main__':
#实例化宝塔API对象
my_api = bt_api()
domain = 'test.laojihost.com'
username = str(domain)
# 调用get_logs方法
r_data = my_api.get_logs()
# r_sys = my_api.sysstatus()
# r_disk = my_api.diskinfo()
r_add_site = my_api.addsite()
#打印响应数据
print(r_data)
# print(r_sys)
# print(r_disk)
print(r_add_site)
运行报错如下:
Traceback (most recent call last):
File "demo.py", line 169, in <module>
r_add_site = my_api.addsite()
File "demo.py", line 91, in addsite
result = self.__http_post_cookie(url,p_data)
File "demo.py", line 136, in __http_post_cookie
response = opener.open(req,timeout=timeout)
File "/usr/lib64/python2.7/urllib2.py", line 437, in open
response = meth(req, response)
File "/usr/lib64/python2.7/urllib2.py", line 550, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib64/python2.7/urllib2.py", line 475, in error
return self._call_chain(*args)
File "/usr/lib64/python2.7/urllib2.py", line 409, in _call_chain
result = func(*args)
File "/usr/lib64/python2.7/urllib2.py", line 558, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 500: INTERNAL SERVER ERROR
asun
发表于 2020-4-12 13:59:47
有安全里的屏蔽IP的接口吗?
宝塔用户_yubdgc
发表于 2020-4-25 17:37:18
IP校验失败,您的访问IP为
宝塔用户_yubdgc
发表于 2020-4-28 11:06:41
楼主,我配置了api ip白名单还是返回IP校验失败,您的访问IP为....有可能是什么问题
宝塔用户_nyyslq
发表于 2020-5-1 21:34:11
反向代理考虑下啊,这样就可以拿宝塔做cdn了
东方郁闷
发表于 2020-5-10 04:04:41
api的pdf文档加个目录,方便一眼能看到api都有哪些功能,也便于开发者一目了然的知道是否能实现自己的需求
沈国安
发表于 2020-5-29 10:35:14
镖客若水 发表于 2019-9-10 16:57
windows什么时候能提供啊
本机测试,已经可以了使用这个API了
木芽博客
发表于 2020-6-30 15:19:39
计划任务什么时候有接口,接口文档都两年还没有出网页版吗
宝塔用户_iszlap
发表于 2020-8-7 14:40:37
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">\n<title>Redirecting...</title>\n<h1>Redirecting...</h1>\n<p>You should be redirected automatically to target URL: <a href=\"/login\">/login</a>.If not click the link.",
出现这种情况后我的原因是没有传递文档中签名算法的接口参数request_time和request_token,加上参数就好了;还有可能是因为没有在面板设置的APi接口中配置ip白名单。
宝塔用户_fvixed
发表于 2020-8-7 15:26:21
宝塔用户_cetjla 发表于 2020-4-11 11:35
有个问题,请教下各位大神,我在用python去添加网站的时候总是报500错误,其他像获取系统信息,获取LOG日志 ...
addsite中数据提交格式:
def addsite(self):
# 拼接URL地址
url = self.__BT_PANEL + '/site?action=AddSite'
# 准备POST数据
p_data = self.__get_key_data()# 取签名
# p_data['tojs'] = 'test'
# p_data={}
p_data['webname'] = json.dumps({'domain': '', 'domainlist': [''], 'count': 0})
p_data['path'] = '/www/wwwroot/abc.com'
p_data['type_id'] = '0'
p_data['type'] = 'PHP'
p_data['version'] = '00'
p_data['port'] = '80'
p_data['ps'] = 'test'
p_data['ftp'] = "False"
p_data['ftp_username'] = 'testtest'
p_data['ftp_password'] = 'testtest'
p_data['sql'] = "FALSE"
p_data['codeing'] = 'utf8'
p_data['datauser'] = 'testtest'
p_data['datapassword'] = 'testtesttesttest'
# 请求面板接口
result = self.__http_post_cookie(url, p_data)
# 解析JSON数据
return json.loads(result)
无奈的三哥
发表于 2020-9-10 12:24:19
删除域名老是提示请选择域名是什么情况
大松
发表于 2020-9-28 14:04:42
CNAME解析后,进行网站子目录绑定。绑定成功后只返回{"status": true, "msg": "\u6dfb\u52a0\u6210\u529f"}这个。可是不返回id,怎么进行后面的删除呢??或者怎么获取添加的这个子目录绑定网站的id呢??
alanstars
发表于 2020-10-13 18:06:18
您好,调用接口提示{"status": false, "msg": "指定参数无效!"}
请求的接口是/data?action=GetSystemTotal
这个都没有入参,怎么会提示指定参数无效呢,其中request_token和request_time绝对没有错
页:
1
2
3
4
[5]
6
7
8
9
10
11