Gunicorn测试完成,里程碑是服务注册成功,服务器自启动的时候也能正常运行
This commit is contained in:
@@ -64,6 +64,16 @@ class RemoteCommandThread(QThread):
|
||||
self.finished_signal.emit(False, f"SSH连接已断开,请重新连接服务器")
|
||||
return
|
||||
|
||||
# 在执行命令前,先输出当前目录
|
||||
try:
|
||||
pwd_stdin, pwd_stdout, pwd_stderr = self.ssh_client.exec_command("pwd")
|
||||
pwd_output = pwd_stdout.read().decode().strip()
|
||||
if pwd_output:
|
||||
self.output_signal.emit(f"当前目录: {pwd_output}")
|
||||
logger.info(f"当前目录: {pwd_output}")
|
||||
except Exception as e:
|
||||
logger.error(f"获取当前目录失败: {str(e)}")
|
||||
|
||||
# 如果命令包含sudo,修改为使用-S选项从标准输入读取密码
|
||||
if "sudo" in self.command:
|
||||
command_with_sudo = self.command.replace("sudo", "sudo -S")
|
||||
@@ -219,7 +229,7 @@ class RemoteCommandsTab(QWidget):
|
||||
# 允许用户输入当前目录路径
|
||||
# self.current_dir_display.setReadOnly(True)
|
||||
# 添加回车键刷新目录功能
|
||||
self.current_dir_display.returnPressed.connect(self.refresh_directory)
|
||||
self.current_dir_display.returnPressed.connect(self.on_current_dir_entered)
|
||||
current_dir_layout.addWidget(self.current_dir_display)
|
||||
|
||||
# 刷新目录按钮
|
||||
@@ -275,6 +285,26 @@ class RemoteCommandsTab(QWidget):
|
||||
self.setLayout(main_layout)
|
||||
logger.info("远程命令标签页UI初始化完成")
|
||||
|
||||
def set_server_info(self, server_info):
|
||||
"""设置服务器信息"""
|
||||
logger.info(f"设置服务器信息: {server_info}")
|
||||
self.server_info = server_info
|
||||
|
||||
# 更新主窗口状态栏显示当前目录
|
||||
try:
|
||||
main_window = self.parent().parent()
|
||||
if hasattr(main_window, 'status_bar') and self.ssh_client:
|
||||
current_dir = self.current_dir_display.text().strip()
|
||||
server_host = self.server_info.get('host', '未知')
|
||||
if current_dir:
|
||||
main_window.status_bar.showMessage(f"远程服务器 {server_host}: {current_dir}")
|
||||
logger.info(f"主窗口状态栏更新为远程服务器目录: {server_host}: {current_dir}")
|
||||
else:
|
||||
main_window.status_bar.showMessage(f"远程服务器: {server_host}")
|
||||
logger.info(f"主窗口状态栏更新为远程服务器: {server_host}")
|
||||
except Exception as e:
|
||||
logger.error(f"更新主窗口状态栏失败: {str(e)}")
|
||||
|
||||
def set_ssh_client(self, ssh_client):
|
||||
logger.info("设置SSH客户端")
|
||||
self.ssh_client = ssh_client
|
||||
@@ -282,9 +312,33 @@ class RemoteCommandsTab(QWidget):
|
||||
if self.ssh_client:
|
||||
self.status_label.setText("已连接到服务器")
|
||||
self.status_label.setStyleSheet("color: green;")
|
||||
|
||||
# 更新主窗口状态栏显示当前目录
|
||||
try:
|
||||
main_window = self.parent().parent()
|
||||
if hasattr(main_window, 'status_bar'):
|
||||
current_dir = self.current_dir_display.text().strip()
|
||||
server_host = self.server_info.get('host', '未知') if hasattr(self, 'server_info') else '未知'
|
||||
if current_dir:
|
||||
main_window.status_bar.showMessage(f"远程服务器 {server_host}: {current_dir}")
|
||||
logger.info(f"主窗口状态栏更新为远程服务器目录: {server_host}: {current_dir}")
|
||||
else:
|
||||
main_window.status_bar.showMessage(f"远程服务器: {server_host}")
|
||||
logger.info(f"主窗口状态栏更新为远程服务器: {server_host}")
|
||||
except Exception as e:
|
||||
logger.error(f"更新主窗口状态栏失败: {str(e)}")
|
||||
else:
|
||||
self.status_label.setText("未连接到服务器")
|
||||
self.status_label.setStyleSheet("color: red;")
|
||||
|
||||
# 更新主窗口状态栏显示未连接状态
|
||||
try:
|
||||
main_window = self.parent().parent()
|
||||
if hasattr(main_window, 'status_bar'):
|
||||
main_window.status_bar.showMessage("未连接到远程服务器")
|
||||
logger.info("主窗口状态栏更新为未连接状态")
|
||||
except Exception as e:
|
||||
logger.error(f"更新主窗口状态栏失败: {str(e)}")
|
||||
|
||||
def set_server_config(self, git_url, remote_dir):
|
||||
logger.info(f"设置服务器配置: git_url={git_url}, remote_dir={remote_dir}")
|
||||
@@ -295,6 +349,16 @@ class RemoteCommandsTab(QWidget):
|
||||
if remote_dir:
|
||||
self.current_dir_display.setText(remote_dir)
|
||||
self.refresh_directory()
|
||||
|
||||
# 更新主窗口状态栏显示当前目录
|
||||
try:
|
||||
main_window = self.parent().parent()
|
||||
if hasattr(main_window, 'status_bar'):
|
||||
server_host = self.server_info['host'] if hasattr(self, 'server_info') and 'host' in self.server_info else '未知'
|
||||
main_window.status_bar.showMessage(f"远程服务器 {server_host}: {remote_dir}")
|
||||
logger.info(f"主窗口状态栏更新为远程服务器目录: {server_host}: {remote_dir}")
|
||||
except Exception as e:
|
||||
logger.error(f"更新主窗口状态栏失败: {str(e)}")
|
||||
|
||||
def install_git(self):
|
||||
logger.info("安装Git")
|
||||
@@ -385,6 +449,25 @@ class RemoteCommandsTab(QWidget):
|
||||
else:
|
||||
QMessageBox.warning(self, "错误", message)
|
||||
|
||||
def on_current_dir_entered(self):
|
||||
"""处理用户输入目录路径并按回车键的情况"""
|
||||
logger.info("用户输入目录路径并按回车键")
|
||||
|
||||
# 更新主窗口状态栏显示当前目录
|
||||
try:
|
||||
main_window = self.parent().parent()
|
||||
if hasattr(main_window, 'status_bar'):
|
||||
current_dir = self.current_dir_display.text().strip()
|
||||
server_host = self.server_info['host'] if hasattr(self, 'server_info') and 'host' in self.server_info else '未知'
|
||||
if current_dir:
|
||||
main_window.status_bar.showMessage(f"远程服务器 {server_host}: {current_dir}")
|
||||
logger.info(f"主窗口状态栏更新为远程服务器目录: {server_host}: {current_dir}")
|
||||
except Exception as e:
|
||||
logger.error(f"更新主窗口状态栏失败: {str(e)}")
|
||||
|
||||
# 刷新目录列表
|
||||
self.refresh_directory()
|
||||
|
||||
def refresh_directory(self):
|
||||
logger.info("刷新目录列表")
|
||||
|
||||
@@ -419,6 +502,17 @@ class RemoteCommandsTab(QWidget):
|
||||
self.status_label.setText("目录列表已刷新")
|
||||
self.status_label.setStyleSheet("color: green;")
|
||||
logger.info("目录列表刷新成功")
|
||||
|
||||
# 更新主窗口状态栏显示当前目录
|
||||
try:
|
||||
main_window = self.parent().parent()
|
||||
if hasattr(main_window, 'status_bar'):
|
||||
current_dir = self.current_dir_display.text()
|
||||
server_host = self.server_info['host'] if hasattr(self, 'server_info') and 'host' in self.server_info else '未知'
|
||||
main_window.status_bar.showMessage(f"远程服务器 {server_host}: {current_dir}")
|
||||
logger.info(f"主窗口状态栏更新为远程服务器目录: {server_host}: {current_dir}")
|
||||
except Exception as e:
|
||||
logger.error(f"更新主窗口状态栏失败: {str(e)}")
|
||||
else:
|
||||
self.status_label.setText("刷新目录列表失败")
|
||||
self.status_label.setStyleSheet("color: red;")
|
||||
|
||||
Reference in New Issue
Block a user