Akemi

Python-tk库—图形化管理tomcat服务

2024/12/09
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import time
import paramiko
import tkinter as tk
from tkinter import scrolledtext

# 定义远程主机地址
HOST = "192.168.10.102"
USERNAME = 'root'
PASSSWORD = '1'

# 定义启停tomcat的命令
TOMCAT_START_CMD = '/usr/local/tomcat/bin/catalina.sh start'
TOMCAT_STOP_CMD = '/usr/local/tomcat/bin/catalina.sh stop'
TOMCAT_STATUS_CMD = 'ps -ef | grep tomcat | grep -v grep'

# 定义时间戳
current_timestamp = time.time()
timestamp = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(current_timestamp))

# 创建一个ssh连接并执行命令
def run_command(command):
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 自动添加到known_hosts
try:
ssh.connect(HOST,username=USERNAME,password=PASSSWORD)
stdin,stdout,stderr=ssh.exec_command(command)
output=stdout.read().decode("utf-8")
error=stderr.read().decode("utf-8")
# 检查stderr是否仅包含环境变量设置
if "Picked up JDK_JAVA_OPTIONS" in error:
# 如果仅包含环境变量设置,则视为无错误
error = ""

return output.strip(),error.strip()
except Exception as e:
return "",str(e)
finally:
ssh.close()

# 获取tomcat状态
def get_tomcat_status():
output,error=run_command(TOMCAT_STATUS_CMD)
if error:
log_text.insert(tk.END,f"check tomcat status failed: {error} {timestamp}\n")
else:
if output.strip():
log_text.insert(tk.END,f"Tomcat is running {timestamp}\n")
else:
log_text.insert(tk.END,f"Tomcat is stopped {timestamp}\n")

# 启动tomcat函数
def start_tomcat():
output,error = run_command(TOMCAT_START_CMD)
if error:
log_text.insert(tk.END,f"tomcat start failed{error}\n")
else:
log_text.insert(tk.END,"tomcat started successfully\n")
get_tomcat_status()

# 停止tomcat函数
def stop_tomcat():
output, error = run_command(TOMCAT_STOP_CMD)
if error:
log_text.insert(tk.END, f"tomcat stop failed: {error}\n")
else:
log_text.insert(tk.END, "tomcat stopped successfully\n")
get_tomcat_status()

# 定期检查Tomcat状态并更新日志
def check_tomcat_status():
get_tomcat_status()
root.after(5000, check_tomcat_status)

# 定义主窗口
root = tk.Tk()
root.title("Tomcat管理")

# 定义启动按钮,绑定启动函数
start_button = tk.Button(root, text="启动tomcat",command=start_tomcat,width=20)
start_button.grid(row=0,column=0,padx=10,pady=10)

# 定义停止按钮,绑定停止函数
stop_button = tk.Button(root,text="关闭tomcat",command=stop_tomcat,width=20)
stop_button.grid(row=0,column=1,padx=10,pady=10)

# 定义消息框
log_text = scrolledtext.ScrolledText(root,width=60,height=20)
log_text.grid(row=1,column=0,columnspan=3,padx=10,pady=10)

# 退出按钮
exit_button = tk.Button(root,text="退出",command=root.quit,width=20)
exit_button.grid(row=0,column=3,padx=10,pady=10)

check_tomcat_status()
root.mainloop()

CATALOG