666 / app /script.py
BG5's picture
Upload 2 files
97b602d verified
#!venv/bin/python3
import os
import time
import pexpect
import argparse
def get_input() -> dict:
'''
获取终端的输入
'''
parser = argparse.ArgumentParser(description='manual to this script')
parser.add_argument('-port', type=str, default = None)
parser.add_argument('-username', type=str, default = None)
parser.add_argument('-password', type=str, default = None)
args = parser.parse_args()
data = {}
data['port'] = args.port
data['username'] = args.username
data['password'] = args.password
return data
def bt_init(port: str, username: str, password: str) -> bool:
'''
初始化宝塔,设置 端口号,用户名,密码
'''
#改面板端口
print('正在设置面板端口')
try:
child = pexpect.spawn('bt')
child.expect('.*:'.encode('utf-8'))
child.sendline('8')
child.expect('面板端口:'.encode('utf-8'))
child.sendline(port)
child.expect('已将面板端口修改'.encode('utf-8'))
except:
pass
#改面板用户名
print('正在设置面板用户名')
child = pexpect.spawn('bt')
child.expect('.*:'.encode('utf-8'))
child.sendline('6')
child.expect('面板用户名'.encode('utf-8'))
child.sendline(username)
child.expect('新用户名'.encode('utf-8'))
#改面板密码
print('正在设置面板密码')
child = pexpect.spawn('bt')
child.expect('.*:'.encode('utf-8'))
child.sendline('5')
child.expect('面板密码:'.encode('utf-8'))
child.sendline(password)
child.expect('新密码'.encode('utf-8'))
return True
def main():
data = get_input()
#检测端口是否合法
try:
port = int(data['port'])
if 0 <= port <= 65535:
port = str(port)
except:
print('您输入的端口号有误,请重新创建 Docker 容器并输入正确端口号')
return False
#检测用户名是否合法
if len(data['username']) < 3:
print('密码长度不能小于 3 位,请重新创建 Docker 容器并输入正确用户名')
return False
#检测密码是否合法
if len(data['password']) < 5:
print('密码长度不能小于 5 位,请重新创建 Docker 容器并输入正确密码')
return False
#判断是否是第一次初始化
if not os.path.isfile('init.txt'):
bt_init(data['port'], data['username'], data['password'])
os.system('touch init.txt')
print('设置成功\n')
os.system('/etc/init.d/bt start')
print('\n宝塔面板已启动\n')
result = os.popen('echo "$(ping ${HOSTNAME} -c 1 | grep -o -E [0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+ | head -n 1)"')
ip = result.read().replace('\n', '')
print('面板链接: http://' + ip + ':' + data['port'])
print('用户名: ' + data['username'])
print('密码: ' + data['password'])
while True:
time.sleep(60 * 60 * 24 * 365 * 100)
if __name__ == '__main__':
main()