diff --git a/__pycache__/gunicorn_tab.cpython-38.pyc b/__pycache__/gunicorn_tab.cpython-38.pyc index 9be301e..10e6cd3 100644 Binary files a/__pycache__/gunicorn_tab.cpython-38.pyc and b/__pycache__/gunicorn_tab.cpython-38.pyc differ diff --git a/__pycache__/nginx_tab.cpython-38.pyc b/__pycache__/nginx_tab.cpython-38.pyc index c305e35..9df4b12 100644 Binary files a/__pycache__/nginx_tab.cpython-38.pyc and b/__pycache__/nginx_tab.cpython-38.pyc differ diff --git a/__pycache__/remote_commands_tab.cpython-38.pyc b/__pycache__/remote_commands_tab.cpython-38.pyc index 1812a32..a5e61e9 100644 Binary files a/__pycache__/remote_commands_tab.cpython-38.pyc and b/__pycache__/remote_commands_tab.cpython-38.pyc differ diff --git a/app.log b/app.log index ef54ace..035ab45 100644 --- a/app.log +++ b/app.log @@ -3655,3 +3655,1174 @@ Aug 31 20:06:38 statuspage gunicorn[1961]: [2025-08-31 20:06:38 +0800] [1961] [I 2025-08-31 20:33:35.661 | INFO | gunicorn_tab:run:419 - 查看Gunicorn服务日志: bash -c 'echo "xiaji" | sudo -S journalctl -u gunicorn_statuspage -n 100' 2025-08-31 20:33:35.720 | INFO | gunicorn_tab:run:429 - Gunicorn服务日志查看成功 2025-08-31 20:33:35.726 | INFO | gunicorn_tab:on_log_result:961 - Gunicorn服务日志查看成功 +2025-08-31 20:36:31.698 | INFO | __main__::189 - 启动应用程序 +2025-08-31 20:36:31.724 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 20:36:31.731 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 20:36:31.731 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 20:36:31.733 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 20:36:31.733 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 20:36:31.733 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 20:36:31.734 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 20:36:31.735 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 20:36:31.737 | INFO | remote_commands_tab:init_ui:286 - 远程命令标签页UI初始化完成 +2025-08-31 20:36:31.740 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 20:38:53.499 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 20:38:53.591 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 20:38:55.634 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 20:38:55.635 | INFO | gunicorn_tab:set_ssh_client:775 - Gunicorn标签页已设置SSH客户端 +2025-08-31 20:38:55.635 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 20:38:55.636 | INFO | gunicorn_tab:set_username:780 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 20:38:55.636 | INFO | gunicorn_tab:set_project_info:786 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 20:38:55.639 | INFO | gunicorn_tab:update_command_editor:813 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 20:38:55.640 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 20:39:02.955 | INFO | gunicorn_tab:run:388 - Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 20:38:59 CST; 3s ago + Invocation: 7b6b833405e24d548567e5cfa3438de4 + Process: 1991 ExecStart=/usr/bin/gunicorn \ (code=exited, status=3) + Main PID: 1991 (code=exited, status=3) + Mem peak: 26.7M + CPU: 159ms + +2025-08-31 20:39:02.956 | INFO | gunicorn_tab:on_control_result:1135 - Gunicorn服务控制成功: Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 20:38:59 CST; 3s ago + Invocation: 7b6b833405e24d548567e5cfa3438de4 + Process: 1991 ExecStart=/usr/bin/gunicorn \ (code=exited, status=3) + Main PID: 1991 (code=exited, status=3) + Mem peak: 26.7M + CPU: 159ms + +2025-08-31 20:39:14.810 | INFO | gunicorn_tab:run:419 - 查看Gunicorn服务日志: bash -c 'echo "xiaji" | sudo -S journalctl -u gunicorn_statuspage -n 100' +2025-08-31 20:39:14.836 | INFO | gunicorn_tab:run:429 - Gunicorn服务日志查看成功 +2025-08-31 20:39:14.839 | INFO | gunicorn_tab:on_log_result:1076 - Gunicorn服务日志查看成功 +2025-08-31 20:40:14.692 | INFO | __main__::189 - 启动应用程序 +2025-08-31 20:40:14.716 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 20:40:14.721 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 20:40:14.721 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 20:40:14.722 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 20:40:14.723 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 20:40:14.723 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 20:40:14.723 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 20:40:14.725 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 20:40:14.726 | INFO | remote_commands_tab:init_ui:286 - 远程命令标签页UI初始化完成 +2025-08-31 20:40:14.729 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 20:40:20.255 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 20:40:20.341 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 20:40:25.493 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 20:40:25.494 | INFO | gunicorn_tab:set_ssh_client:775 - Gunicorn标签页已设置SSH客户端 +2025-08-31 20:40:25.494 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 20:40:25.494 | INFO | gunicorn_tab:set_username:780 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 20:40:25.494 | INFO | gunicorn_tab:set_project_info:786 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 20:40:25.495 | INFO | gunicorn_tab:update_command_editor:813 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 20:40:25.496 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 20:40:35.452 | INFO | gunicorn_tab:run:419 - 查看Gunicorn服务日志: bash -c 'echo "xiaji" | sudo -S journalctl -u gunicorn_statuspage -n 100' +2025-08-31 20:40:35.477 | INFO | gunicorn_tab:run:429 - Gunicorn服务日志查看成功 +2025-08-31 20:40:35.483 | INFO | gunicorn_tab:on_log_result:1076 - Gunicorn服务日志查看成功 +2025-08-31 20:40:55.359 | INFO | gunicorn_tab:run:454 - 从git_url提取的项目名: webstatus +2025-08-31 20:40:55.359 | INFO | gunicorn_tab:run:461 - 检查日志目录: /home/xiaji/webstatus/logs +2025-08-31 20:40:55.769 | INFO | gunicorn_tab:run:542 - 日志目录和文件创建成功 +2025-08-31 20:40:55.771 | INFO | gunicorn_tab:on_log_check_result:1124 - Gunicorn日志文件检查和创建成功 +2025-08-31 20:41:21.012 | INFO | gunicorn_tab:run:561 - 开始设置服务器时区为Asia/Shanghai +2025-08-31 20:41:21.097 | INFO | gunicorn_tab:run:572 - 开始重启服务器 +2025-08-31 20:41:21.143 | INFO | gunicorn_tab:run:576 - 时区设置成功,服务器正在重启 +2025-08-31 20:41:21.144 | INFO | gunicorn_tab:on_server_control_result:1165 - 服务器控制成功: 时区设置成功,服务器正在重启 +2025-08-31 20:41:38.219 | INFO | __main__::189 - 启动应用程序 +2025-08-31 20:41:38.240 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 20:41:38.246 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 20:41:38.246 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 20:41:38.248 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 20:41:38.248 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 20:41:38.249 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 20:41:38.249 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 20:41:38.251 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 20:41:38.252 | INFO | remote_commands_tab:init_ui:286 - 远程命令标签页UI初始化完成 +2025-08-31 20:41:38.255 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 20:41:46.274 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 20:41:46.428 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 20:43:48.283 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 20:43:48.283 | INFO | gunicorn_tab:set_ssh_client:775 - Gunicorn标签页已设置SSH客户端 +2025-08-31 20:43:48.284 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 20:43:48.284 | INFO | gunicorn_tab:set_username:780 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 20:43:48.284 | INFO | gunicorn_tab:set_project_info:786 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 20:43:48.286 | INFO | gunicorn_tab:update_command_editor:813 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 20:43:48.286 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 20:43:57.031 | INFO | gunicorn_tab:run:419 - 查看Gunicorn服务日志: bash -c 'echo "xiaji" | sudo -S journalctl -u gunicorn_statuspage -n 100' +2025-08-31 20:43:57.091 | INFO | gunicorn_tab:run:429 - Gunicorn服务日志查看成功 +2025-08-31 20:43:57.098 | INFO | gunicorn_tab:on_log_result:1076 - Gunicorn服务日志查看成功 +2025-08-31 20:45:55.659 | INFO | gunicorn_tab:run:454 - 从git_url提取的项目名: webstatus +2025-08-31 20:45:55.659 | INFO | gunicorn_tab:run:461 - 检查日志目录: /home/xiaji/webstatus/logs +2025-08-31 20:45:56.070 | INFO | gunicorn_tab:run:542 - 日志目录和文件创建成功 +2025-08-31 20:45:56.072 | INFO | gunicorn_tab:on_log_check_result:1124 - Gunicorn日志文件检查和创建成功 +2025-08-31 20:52:42.183 | INFO | gunicorn_tab:run:326 - Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 20:52:42.184 | INFO | gunicorn_tab:on_upload_result:919 - Gunicorn服务文件上传成功: Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 20:53:42.814 | INFO | gunicorn_tab:run:326 - Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 20:53:42.814 | INFO | gunicorn_tab:on_upload_result:919 - Gunicorn服务文件上传成功: Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 20:53:47.665 | INFO | gunicorn_tab:run:388 - Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 20:53:44 CST; 2s ago + Invocation: 0f3bd800cf4d4e8e97443770c89e1de7 + Process: 2015 ExecStart=/usr/bin/gunicorn \ (code=exited, status=3) + Main PID: 2015 (code=exited, status=3) + Mem peak: 26.7M + CPU: 164ms + +2025-08-31 20:53:47.667 | INFO | gunicorn_tab:on_control_result:1135 - Gunicorn服务控制成功: Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 20:53:44 CST; 2s ago + Invocation: 0f3bd800cf4d4e8e97443770c89e1de7 + Process: 2015 ExecStart=/usr/bin/gunicorn \ (code=exited, status=3) + Main PID: 2015 (code=exited, status=3) + Mem peak: 26.7M + CPU: 164ms + +2025-08-31 20:53:57.539 | INFO | gunicorn_tab:run:419 - 查看Gunicorn服务日志: bash -c 'echo "xiaji" | sudo -S journalctl -u gunicorn_statuspage -n 100' +2025-08-31 20:53:57.566 | INFO | gunicorn_tab:run:429 - Gunicorn服务日志查看成功 +2025-08-31 20:53:57.569 | INFO | gunicorn_tab:on_log_result:1076 - Gunicorn服务日志查看成功 +2025-08-31 21:01:01.926 | INFO | gunicorn_tab:run:597 - 开始执行Gunicorn命令: /usr/bin/gunicorn \ + --pythonpath /home/xiaji/webstatus \ + --workers 3 \ + --bind unix:/var/run/statuspage/gunicorn.sock \ + --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log \ + --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log \ + statuspage.wsgi:application +2025-08-31 21:01:01.927 | INFO | gunicorn_tab:run:612 - 在目录 /home/xiaji/webstatus/ 中执行命令: cd /home/xiaji/webstatus/ && bash -c 'echo "xiaji" | sudo -S /usr/bin/gunicorn \ + --pythonpath /home/xiaji/webstatus \ + --workers 3 \ + --bind unix:/var/run/statuspage/gunicorn.sock \ + --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log \ + --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log \ + statuspage.wsgi:application' +2025-08-31 21:01:07.072 | ERROR | gunicorn_tab:run:630 - Gunicorn命令执行失败: [sudo] password for xiaji: +2025-08-31 21:01:07.073 | ERROR | gunicorn_tab:on_command_result:1204 - Gunicorn命令执行失败: 命令执行失败 +[sudo] password for xiaji: +2025-08-31 21:01:14.811 | INFO | gunicorn_tab:run:597 - 开始执行Gunicorn命令: /usr/bin/gunicorn \ + --pythonpath /home/xiaji/webstatus \ + --workers 3 \ + --bind unix:/var/run/statuspage/gunicorn.sock \ + --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log \ + --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log \ + statuspage.wsgi:application +2025-08-31 21:01:14.812 | INFO | gunicorn_tab:run:612 - 在目录 /home/xiaji/webstatus/ 中执行命令: cd /home/xiaji/webstatus/ && bash -c 'echo "xiaji" | sudo -S /usr/bin/gunicorn \ + --pythonpath /home/xiaji/webstatus \ + --workers 3 \ + --bind unix:/var/run/statuspage/gunicorn.sock \ + --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log \ + --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log \ + statuspage.wsgi:application' +2025-08-31 21:01:19.957 | ERROR | gunicorn_tab:run:630 - Gunicorn命令执行失败: [sudo] password for xiaji: +2025-08-31 21:01:19.958 | ERROR | gunicorn_tab:on_command_result:1204 - Gunicorn命令执行失败: 命令执行失败 +[sudo] password for xiaji: +2025-08-31 21:01:27.691 | INFO | gunicorn_tab:run:326 - Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 21:01:27.691 | INFO | gunicorn_tab:on_upload_result:919 - Gunicorn服务文件上传成功: Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 21:01:33.334 | INFO | gunicorn_tab:run:561 - 开始设置服务器时区为Asia/Shanghai +2025-08-31 21:01:33.410 | INFO | gunicorn_tab:run:572 - 开始重启服务器 +2025-08-31 21:01:33.459 | INFO | gunicorn_tab:run:576 - 时区设置成功,服务器正在重启 +2025-08-31 21:01:33.459 | INFO | gunicorn_tab:on_server_control_result:1165 - 服务器控制成功: 时区设置成功,服务器正在重启 +2025-08-31 21:01:35.807 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 0 +2025-08-31 21:01:38.638 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:01:42.315 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:01:44.194 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 21:01:44.194 | INFO | gunicorn_tab:set_ssh_client:775 - Gunicorn标签页已设置SSH客户端 +2025-08-31 21:01:44.195 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 21:01:44.195 | INFO | gunicorn_tab:set_username:780 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 21:01:44.195 | INFO | gunicorn_tab:set_project_info:786 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 21:01:44.197 | INFO | gunicorn_tab:update_command_editor:813 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 21:01:44.197 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 21:01:50.073 | INFO | gunicorn_tab:run:388 - Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Mon 2025-09-01 04:01:44 CST; 3s ago + Invocation: 223bef4ec76e411482240c9e9e9b05f8 + Process: 1236 ExecStartPre=/bin/mkdir -p /var/run/statuspage # 启动前创建目录 (code=exited, status=1/FAILURE) + Mem peak: 1.6M + CPU: 9ms + +2025-08-31 21:01:50.074 | INFO | gunicorn_tab:on_control_result:1135 - Gunicorn服务控制成功: Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Mon 2025-09-01 04:01:44 CST; 3s ago + Invocation: 223bef4ec76e411482240c9e9e9b05f8 + Process: 1236 ExecStartPre=/bin/mkdir -p /var/run/statuspage # 启动前创建目录 (code=exited, status=1/FAILURE) + Mem peak: 1.6M + CPU: 9ms + +2025-08-31 21:02:03.348 | INFO | __main__::189 - 启动应用程序 +2025-08-31 21:02:03.371 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 21:02:03.378 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 21:02:03.379 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 21:02:03.380 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 21:02:03.380 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 21:02:03.381 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 21:02:03.381 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 21:02:03.382 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 21:02:03.384 | INFO | remote_commands_tab:init_ui:286 - 远程命令标签页UI初始化完成 +2025-08-31 21:02:03.387 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 21:02:04.793 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:02:04.880 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:02:06.826 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 21:02:06.827 | INFO | gunicorn_tab:set_ssh_client:775 - Gunicorn标签页已设置SSH客户端 +2025-08-31 21:02:06.828 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 21:02:06.828 | INFO | gunicorn_tab:set_username:780 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 21:02:06.828 | INFO | gunicorn_tab:set_project_info:786 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 21:02:06.829 | INFO | gunicorn_tab:update_command_editor:813 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 21:02:06.830 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 21:02:11.173 | INFO | gunicorn_tab:run:419 - 查看Gunicorn服务日志: bash -c 'echo "xiaji" | sudo -S journalctl -u gunicorn_statuspage -n 100' +2025-08-31 21:02:11.232 | INFO | gunicorn_tab:run:429 - Gunicorn服务日志查看成功 +2025-08-31 21:02:11.239 | INFO | gunicorn_tab:on_log_result:1076 - Gunicorn服务日志查看成功 +2025-08-31 21:05:41.483 | INFO | __main__::189 - 启动应用程序 +2025-08-31 21:05:41.510 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 21:05:41.516 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 21:05:41.516 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 21:05:41.517 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 21:05:41.517 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 21:05:41.518 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 21:05:41.518 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 21:05:41.520 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 21:05:41.521 | INFO | remote_commands_tab:init_ui:286 - 远程命令标签页UI初始化完成 +2025-08-31 21:05:41.525 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 21:05:42.786 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:05:42.873 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:05:44.917 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 1 +2025-08-31 21:05:44.917 | INFO | remote_commands_tab:set_ssh_client:309 - 设置SSH客户端 +2025-08-31 21:05:44.918 | INFO | remote_commands_tab:set_server_config:344 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji +2025-08-31 21:05:44.919 | INFO | remote_commands_tab:refresh_directory:472 - 刷新目录列表 +2025-08-31 21:05:44.919 | INFO | remote_commands_tab:refresh_directory:484 - 使用用户输入目录: /home/xiaji +2025-08-31 21:05:44.919 | INFO | remote_commands_tab:set_server_info:290 - 设置服务器信息: {'ip': '192.168.3.157', 'username': 'xiaji', 'password': 'xiaji', 'port': 22, 'project': 'statuspage', 'git_url': 'http://192.168.3.241:3000/xiaji/webstatus.git', 'remote_dir': '/home/xiaji'} +2025-08-31 21:05:44.920 | INFO | __main__:on_tab_changed:88 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 21:05:44.920 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la +2025-08-31 21:05:44.929 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:05:44.931 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: 当前目录: /home/xiaji +2025-08-31 21:05:44.979 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: /home/xiaji +2025-08-31 21:05:44.980 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: total 84 +2025-08-31 21:05:44.980 | INFO | remote_commands_tab:run:123 - 命令执行成功: cd /home/xiaji && pwd && ls -la +2025-08-31 21:05:44.981 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 . +2025-08-31 21:05:44.982 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 17:55 .. +2025-08-31 21:05:44.982 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout +2025-08-31 21:05:44.982 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc +2025-08-31 21:05:44.982 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache +2025-08-31 21:05:44.983 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote +2025-08-31 21:05:44.983 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile +2025-08-31 21:05:44.983 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 17:55 .ssh +2025-08-31 21:05:44.984 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 0 Aug 31 12:39 .sudo_as_admin_successful +2025-08-31 21:05:44.984 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 8 xiaji xiaji 4096 Sep 1 2025 webstatus +2025-08-31 21:05:44.984 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji +2025-08-31 21:05:44.985 | INFO | remote_commands_tab:on_dir_refresh_finished:504 - 目录列表刷新成功 +2025-08-31 21:05:46.580 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 2 +2025-08-31 21:05:46.580 | INFO | django_tab:set_ssh_client:142 - Django标签页已设置SSH客户端 +2025-08-31 21:05:46.580 | INFO | django_tab:set_username:147 - Django标签页已设置用户名: xiaji +2025-08-31 21:05:46.581 | INFO | __main__:on_tab_changed:123 - 状态栏更新为Django项目: statuspage, 目录: /home/xiaji +2025-08-31 21:05:47.371 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 21:05:47.372 | INFO | gunicorn_tab:set_ssh_client:774 - Gunicorn标签页已设置SSH客户端 +2025-08-31 21:05:47.372 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 21:05:47.372 | INFO | gunicorn_tab:set_username:779 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 21:05:47.372 | INFO | gunicorn_tab:set_project_info:785 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 21:05:47.374 | INFO | gunicorn_tab:update_command_editor:812 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 21:05:47.374 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 21:05:59.245 | INFO | gunicorn_tab:run:326 - Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 21:05:59.245 | INFO | gunicorn_tab:on_upload_result:918 - Gunicorn服务文件上传成功: Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 21:06:04.497 | INFO | gunicorn_tab:run:388 - Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 21:06:03 CST; 739ms ago + Invocation: 97a026c461e74c5096ecacd03d16e5b3 + Process: 1626 ExecStartPre=/bin/mkdir -p /var/run/statuspage # 启动前创建目录 (code=exited, status=1/FAILURE) + Mem peak: 1.6M + CPU: 9ms + +2025-08-31 21:06:04.498 | INFO | gunicorn_tab:on_control_result:1134 - Gunicorn服务控制成功: Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 21:06:03 CST; 739ms ago + Invocation: 97a026c461e74c5096ecacd03d16e5b3 + Process: 1626 ExecStartPre=/bin/mkdir -p /var/run/statuspage # 启动前创建目录 (code=exited, status=1/FAILURE) + Mem peak: 1.6M + CPU: 9ms + +2025-08-31 21:06:20.054 | INFO | gunicorn_tab:run:419 - 查看Gunicorn服务日志: bash -c 'echo "xiaji" | sudo -S journalctl -u gunicorn_statuspage -n 100' +2025-08-31 21:06:20.082 | INFO | gunicorn_tab:run:429 - Gunicorn服务日志查看成功 +2025-08-31 21:06:20.085 | INFO | gunicorn_tab:on_log_result:1075 - Gunicorn服务日志查看成功 +2025-08-31 21:06:53.135 | INFO | gunicorn_tab:run:326 - Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 21:06:53.135 | INFO | gunicorn_tab:on_upload_result:918 - Gunicorn服务文件上传成功: Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 21:06:58.859 | INFO | gunicorn_tab:run:388 - Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 21:06:55 CST; 2s ago + Invocation: 4ab27ae05a994e1bbbb03b0af2f3ea58 + Process: 1683 ExecStartPre=/bin/mkdir -p /var/run/statuspage # 启动前创建目录 (code=exited, status=1/FAILURE) + Mem peak: 1.6M + CPU: 9ms + +2025-08-31 21:06:58.860 | INFO | gunicorn_tab:on_control_result:1134 - Gunicorn服务控制成功: Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 21:06:55 CST; 2s ago + Invocation: 4ab27ae05a994e1bbbb03b0af2f3ea58 + Process: 1683 ExecStartPre=/bin/mkdir -p /var/run/statuspage # 启动前创建目录 (code=exited, status=1/FAILURE) + Mem peak: 1.6M + CPU: 9ms + +2025-08-31 21:07:07.285 | INFO | gunicorn_tab:run:419 - 查看Gunicorn服务日志: bash -c 'echo "xiaji" | sudo -S journalctl -u gunicorn_statuspage -n 100' +2025-08-31 21:07:07.313 | INFO | gunicorn_tab:run:429 - Gunicorn服务日志查看成功 +2025-08-31 21:07:07.316 | INFO | gunicorn_tab:on_log_result:1075 - Gunicorn服务日志查看成功 +2025-08-31 21:07:12.472 | INFO | gunicorn_tab:run:561 - 开始设置服务器时区为Asia/Shanghai +2025-08-31 21:07:12.550 | INFO | gunicorn_tab:run:572 - 开始重启服务器 +2025-08-31 21:07:12.598 | INFO | gunicorn_tab:run:576 - 时区设置成功,服务器正在重启 +2025-08-31 21:07:12.599 | INFO | gunicorn_tab:on_server_control_result:1164 - 服务器控制成功: 时区设置成功,服务器正在重启 +2025-08-31 21:07:20.101 | INFO | __main__::189 - 启动应用程序 +2025-08-31 21:07:20.124 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 21:07:20.129 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 21:07:20.129 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 21:07:20.131 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 21:07:20.131 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 21:07:20.131 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 21:07:20.132 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 21:07:20.133 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 21:07:20.135 | INFO | remote_commands_tab:init_ui:286 - 远程命令标签页UI初始化完成 +2025-08-31 21:07:20.138 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 21:07:21.810 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:07:21.991 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:07:24.077 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 21:07:24.078 | INFO | gunicorn_tab:set_ssh_client:774 - Gunicorn标签页已设置SSH客户端 +2025-08-31 21:07:24.078 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 21:07:24.078 | INFO | gunicorn_tab:set_username:779 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 21:07:24.078 | INFO | gunicorn_tab:set_project_info:785 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 21:07:24.080 | INFO | gunicorn_tab:update_command_editor:812 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 21:07:24.080 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 21:07:33.631 | INFO | gunicorn_tab:run:326 - Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 21:07:33.631 | INFO | gunicorn_tab:on_upload_result:918 - Gunicorn服务文件上传成功: Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 21:07:38.607 | INFO | gunicorn_tab:run:388 - Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 21:07:35 CST; 2s ago + Invocation: b49e6a28c85043248b4e0e870d592378 + Process: 1253 ExecStartPre=/bin/mkdir -p /var/run/statuspage # 启动前创建目录 (code=exited, status=1/FAILURE) + Mem peak: 1.6M + CPU: 8ms + +2025-08-31 21:07:38.608 | INFO | gunicorn_tab:on_control_result:1134 - Gunicorn服务控制成功: Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 21:07:35 CST; 2s ago + Invocation: b49e6a28c85043248b4e0e870d592378 + Process: 1253 ExecStartPre=/bin/mkdir -p /var/run/statuspage # 启动前创建目录 (code=exited, status=1/FAILURE) + Mem peak: 1.6M + CPU: 8ms + +2025-08-31 21:07:46.796 | INFO | gunicorn_tab:run:419 - 查看Gunicorn服务日志: bash -c 'echo "xiaji" | sudo -S journalctl -u gunicorn_statuspage -n 100' +2025-08-31 21:07:46.867 | INFO | gunicorn_tab:run:429 - Gunicorn服务日志查看成功 +2025-08-31 21:07:46.869 | INFO | gunicorn_tab:on_log_result:1075 - Gunicorn服务日志查看成功 +2025-08-31 21:10:07.690 | INFO | __main__::189 - 启动应用程序 +2025-08-31 21:10:07.724 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 21:10:07.731 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 21:10:07.732 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 21:10:07.734 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 21:10:07.734 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 21:10:07.734 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 21:10:07.735 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 21:10:07.736 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 21:10:07.738 | INFO | remote_commands_tab:init_ui:286 - 远程命令标签页UI初始化完成 +2025-08-31 21:10:07.740 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 21:10:08.975 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:10:09.066 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:10:10.508 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 21:10:10.508 | INFO | gunicorn_tab:set_ssh_client:767 - Gunicorn标签页已设置SSH客户端 +2025-08-31 21:10:10.508 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 21:10:10.509 | INFO | gunicorn_tab:set_username:772 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 21:10:10.509 | INFO | gunicorn_tab:set_project_info:778 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 21:10:10.510 | INFO | gunicorn_tab:update_command_editor:805 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 21:10:10.511 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 21:10:15.816 | INFO | gunicorn_tab:run:326 - Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 21:10:15.816 | INFO | gunicorn_tab:on_upload_result:911 - Gunicorn服务文件上传成功: Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 21:10:20.971 | INFO | gunicorn_tab:on_control_result:1127 - Gunicorn服务控制成功: Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 21:10:18 CST; 2s ago + Invocation: e08926caf69349e7bd569f64c2038181 + Process: 1489 ExecStartPre=/bin/mkdir -p /var/run/statuspage # 启动前创建目录 (code=exited, status=1/FAILURE) + Mem peak: 1.6M + CPU: 9ms + +2025-08-31 21:10:20.971 | INFO | gunicorn_tab:run:388 - Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn daemon for myproject + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: activating (auto-restart) (Result: exit-code) since Sun 2025-08-31 21:10:18 CST; 2s ago + Invocation: e08926caf69349e7bd569f64c2038181 + Process: 1489 ExecStartPre=/bin/mkdir -p /var/run/statuspage # 启动前创建目录 (code=exited, status=1/FAILURE) + Mem peak: 1.6M + CPU: 9ms + +2025-08-31 21:10:27.609 | INFO | gunicorn_tab:run:419 - 查看Gunicorn服务日志: bash -c 'echo "xiaji" | sudo -S journalctl -u gunicorn_statuspage -n 100' +2025-08-31 21:10:27.637 | INFO | gunicorn_tab:run:429 - Gunicorn服务日志查看成功 +2025-08-31 21:10:27.639 | INFO | gunicorn_tab:on_log_result:1068 - Gunicorn服务日志查看成功 +2025-08-31 21:11:00.782 | INFO | gunicorn_tab:run:561 - 开始设置服务器时区为Asia/Shanghai +2025-08-31 21:11:00.872 | INFO | gunicorn_tab:run:572 - 开始重启服务器 +2025-08-31 21:11:00.921 | INFO | gunicorn_tab:run:576 - 时区设置成功,服务器正在重启 +2025-08-31 21:11:00.921 | INFO | gunicorn_tab:on_server_control_result:1157 - 服务器控制成功: 时区设置成功,服务器正在重启 +2025-08-31 21:11:05.488 | INFO | __main__::189 - 启动应用程序 +2025-08-31 21:11:05.514 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 21:11:05.520 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 21:11:05.521 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 21:11:05.522 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 21:11:05.522 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 21:11:05.523 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 21:11:05.523 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 21:11:05.525 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 21:11:05.526 | INFO | remote_commands_tab:init_ui:286 - 远程命令标签页UI初始化完成 +2025-08-31 21:11:05.529 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 21:11:07.951 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:11:10.040 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:11:11.582 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 21:11:11.582 | INFO | gunicorn_tab:set_ssh_client:767 - Gunicorn标签页已设置SSH客户端 +2025-08-31 21:11:11.583 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 21:11:11.583 | INFO | gunicorn_tab:set_username:772 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 21:11:11.583 | INFO | gunicorn_tab:set_project_info:778 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 21:11:11.585 | INFO | gunicorn_tab:update_command_editor:805 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 21:11:11.585 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 21:11:18.955 | INFO | gunicorn_tab:run:326 - Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 21:11:18.956 | INFO | gunicorn_tab:on_upload_result:911 - Gunicorn服务文件上传成功: Gunicorn服务文件上传成功: gunicorn_statuspage.service +2025-08-31 21:11:23.227 | INFO | gunicorn_tab:run:388 - Gunicorn服务状态查询成功: gunicorn_statuspage +× gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: failed (Result: exit-code) since Sun 2025-08-31 21:11:08 CST; 14s ago + Invocation: 4729e6b87ffb4189a21ac1334a92d89f + Process: 908 ExecStartPre=/bin/rm -f /home/xiaji/webstatus/sock/gunicorn.sock (code=exited, status=0/SUCCESS) + Process: 935 ExecStartPre=/bin/mkdir -p /home/xiaji/webstatus/sock (code=exited, status=0/SUCCESS) + Process: 966 ExecStart=/usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application (code=exited, status=1/FAILURE) + Main PID: 966 (code=exited, status=1/FAILURE) + Mem peak: 23.8M + CPU: 162ms + +Aug 31 21:11:08 statuspage systemd[1]: Starting gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project... +Sep 01 04:11:06 statuspage systemd[1]: Started gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project. +Aug 31 21:11:08 statuspage gunicorn[966]: Error: Error: '/home/xiaji/webstatus/logs/gunicorn_error.log' isn't writable [PermissionError(13, 'Permission denied')] +Aug 31 21:11:08 statuspage systemd[1]: gunicorn_statuspage.service: Main process exited, code=exited, status=1/FAILURE +Aug 31 21:11:08 statuspage systemd[1]: gunicorn_statuspage.service: Failed with result 'exit-code'. + +2025-08-31 21:11:23.229 | INFO | gunicorn_tab:on_control_result:1127 - Gunicorn服务控制成功: Gunicorn服务状态查询成功: gunicorn_statuspage +× gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: failed (Result: exit-code) since Sun 2025-08-31 21:11:08 CST; 14s ago + Invocation: 4729e6b87ffb4189a21ac1334a92d89f + Process: 908 ExecStartPre=/bin/rm -f /home/xiaji/webstatus/sock/gunicorn.sock (code=exited, status=0/SUCCESS) + Process: 935 ExecStartPre=/bin/mkdir -p /home/xiaji/webstatus/sock (code=exited, status=0/SUCCESS) + Process: 966 ExecStart=/usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application (code=exited, status=1/FAILURE) + Main PID: 966 (code=exited, status=1/FAILURE) + Mem peak: 23.8M + CPU: 162ms + +Aug 31 21:11:08 statuspage systemd[1]: Starting gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project... +Sep 01 04:11:06 statuspage systemd[1]: Started gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project. +Aug 31 21:11:08 statuspage gunicorn[966]: Error: Error: '/home/xiaji/webstatus/logs/gunicorn_error.log' isn't writable [PermissionError(13, 'Permission denied')] +Aug 31 21:11:08 statuspage systemd[1]: gunicorn_statuspage.service: Main process exited, code=exited, status=1/FAILURE +Aug 31 21:11:08 statuspage systemd[1]: gunicorn_statuspage.service: Failed with result 'exit-code'. + +2025-08-31 21:11:30.599 | INFO | gunicorn_tab:run:419 - 查看Gunicorn服务日志: bash -c 'echo "xiaji" | sudo -S journalctl -u gunicorn_statuspage -n 100' +2025-08-31 21:11:30.667 | INFO | gunicorn_tab:run:429 - Gunicorn服务日志查看成功 +2025-08-31 21:11:30.670 | INFO | gunicorn_tab:on_log_result:1068 - Gunicorn服务日志查看成功 +2025-08-31 21:12:09.596 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 1 +2025-08-31 21:12:09.596 | INFO | remote_commands_tab:set_ssh_client:309 - 设置SSH客户端 +2025-08-31 21:12:09.596 | INFO | remote_commands_tab:set_server_config:344 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji +2025-08-31 21:12:09.597 | INFO | remote_commands_tab:refresh_directory:472 - 刷新目录列表 +2025-08-31 21:12:09.597 | INFO | remote_commands_tab:refresh_directory:484 - 使用用户输入目录: /home/xiaji +2025-08-31 21:12:09.597 | INFO | remote_commands_tab:set_server_info:290 - 设置服务器信息: {'ip': '192.168.3.157', 'username': 'xiaji', 'password': 'xiaji', 'port': 22, 'project': 'statuspage', 'git_url': 'http://192.168.3.241:3000/xiaji/webstatus.git', 'remote_dir': '/home/xiaji'} +2025-08-31 21:12:09.598 | INFO | __main__:on_tab_changed:88 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 21:12:09.599 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la +2025-08-31 21:12:09.606 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:12:09.607 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: 当前目录: /home/xiaji +2025-08-31 21:12:09.656 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: /home/xiaji +2025-08-31 21:12:09.658 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: total 84 +2025-08-31 21:12:09.658 | INFO | remote_commands_tab:run:123 - 命令执行成功: cd /home/xiaji && pwd && ls -la +2025-08-31 21:12:09.659 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 . +2025-08-31 21:12:09.660 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 17:55 .. +2025-08-31 21:12:09.661 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout +2025-08-31 21:12:09.661 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc +2025-08-31 21:12:09.661 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache +2025-08-31 21:12:09.661 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote +2025-08-31 21:12:09.662 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile +2025-08-31 21:12:09.662 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 17:55 .ssh +2025-08-31 21:12:09.662 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 0 Aug 31 12:39 .sudo_as_admin_successful +2025-08-31 21:12:09.663 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: drwxrwxr-x 9 xiaji xiaji 4096 Sep 1 2025 webstatus +2025-08-31 21:12:09.663 | INFO | remote_commands_tab:append_dir_output:498 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji +2025-08-31 21:12:09.663 | INFO | remote_commands_tab:on_dir_refresh_finished:504 - 目录列表刷新成功 +2025-08-31 21:17:14.760 | INFO | __main__::189 - 启动应用程序 +2025-08-31 21:17:14.783 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 21:17:14.789 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 21:17:14.789 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 21:17:14.790 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 21:17:14.791 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 21:17:14.791 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 21:17:14.792 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 21:17:14.793 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 21:17:14.794 | INFO | remote_commands_tab:init_ui:284 - 远程命令标签页UI初始化完成 +2025-08-31 21:17:14.799 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 21:17:15.819 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:17:15.907 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:17:17.811 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 21:17:17.811 | INFO | gunicorn_tab:set_ssh_client:767 - Gunicorn标签页已设置SSH客户端 +2025-08-31 21:17:17.811 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 21:17:17.812 | INFO | gunicorn_tab:set_username:772 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 21:17:17.812 | INFO | gunicorn_tab:set_project_info:778 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 21:17:17.814 | INFO | gunicorn_tab:update_command_editor:805 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 21:17:17.814 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 21:17:20.628 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 1 +2025-08-31 21:17:20.629 | INFO | remote_commands_tab:set_ssh_client:307 - 设置SSH客户端 +2025-08-31 21:17:20.629 | INFO | remote_commands_tab:set_server_config:342 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji +2025-08-31 21:17:20.630 | INFO | remote_commands_tab:refresh_directory:470 - 刷新目录列表 +2025-08-31 21:17:20.630 | INFO | remote_commands_tab:refresh_directory:482 - 使用用户输入目录: /home/xiaji +2025-08-31 21:17:20.630 | INFO | remote_commands_tab:set_server_info:288 - 设置服务器信息: {'ip': '192.168.3.157', 'username': 'xiaji', 'password': 'xiaji', 'port': 22, 'project': 'statuspage', 'git_url': 'http://192.168.3.241:3000/xiaji/webstatus.git', 'remote_dir': '/home/xiaji'} +2025-08-31 21:17:20.630 | INFO | __main__:on_tab_changed:88 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 21:17:20.631 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la +2025-08-31 21:17:20.640 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:17:20.641 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: 当前目录: /home/xiaji +2025-08-31 21:17:20.689 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: /home/xiaji +2025-08-31 21:17:20.692 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: total 84 +2025-08-31 21:17:20.692 | INFO | remote_commands_tab:run:123 - 命令执行成功: cd /home/xiaji && pwd && ls -la +2025-08-31 21:17:20.693 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 . +2025-08-31 21:17:20.694 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 17:55 .. +2025-08-31 21:17:20.694 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout +2025-08-31 21:17:20.695 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc +2025-08-31 21:17:20.695 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache +2025-08-31 21:17:20.695 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote +2025-08-31 21:17:20.696 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile +2025-08-31 21:17:20.696 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 17:55 .ssh +2025-08-31 21:17:20.696 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 0 Aug 31 12:39 .sudo_as_admin_successful +2025-08-31 21:17:20.696 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: drwxrwxr-x 9 xiaji xiaji 4096 Sep 1 2025 webstatus +2025-08-31 21:17:20.697 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji +2025-08-31 21:17:20.697 | INFO | remote_commands_tab:on_dir_refresh_finished:502 - 目录列表刷新成功 +2025-08-31 21:17:29.209 | INFO | remote_commands_tab:execute_custom_command:521 - 执行自定义命令 +2025-08-31 21:17:29.212 | INFO | remote_commands_tab:run:53 - 执行远程命令: touch /home/xiaji/webstatus/logs/gunicorn_access.log +2025-08-31 21:17:29.220 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:17:29.272 | ERROR | remote_commands_tab:run:126 - 命令执行失败,退出状态: 1 +2025-08-31 21:17:55.942 | INFO | __main__::189 - 启动应用程序 +2025-08-31 21:17:55.964 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 21:17:55.972 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 21:17:55.972 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 21:17:55.973 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 21:17:55.974 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 21:17:55.974 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 21:17:55.975 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 21:17:55.976 | INFO | remote_commands_tab:__init__:145 - 初始化远程命令标签页 +2025-08-31 21:17:55.977 | INFO | remote_commands_tab:init_ui:284 - 远程命令标签页UI初始化完成 +2025-08-31 21:17:55.981 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 21:17:57.367 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 1 +2025-08-31 21:17:57.367 | INFO | remote_commands_tab:set_ssh_client:307 - 设置SSH客户端 +2025-08-31 21:17:57.368 | INFO | remote_commands_tab:set_server_config:342 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji +2025-08-31 21:17:57.369 | INFO | remote_commands_tab:refresh_directory:470 - 刷新目录列表 +2025-08-31 21:17:58.523 | INFO | remote_commands_tab:set_server_info:288 - 设置服务器信息: {'ip': '192.168.3.157', 'username': 'xiaji', 'password': 'xiaji', 'port': 22, 'project': 'statuspage', 'git_url': 'http://192.168.3.241:3000/xiaji/webstatus.git', 'remote_dir': '/home/xiaji'} +2025-08-31 21:17:58.524 | INFO | __main__:on_tab_changed:88 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 21:17:59.066 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 0 +2025-08-31 21:17:59.849 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:17:59.940 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:18:01.386 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 1 +2025-08-31 21:18:01.386 | INFO | remote_commands_tab:set_ssh_client:307 - 设置SSH客户端 +2025-08-31 21:18:01.386 | INFO | remote_commands_tab:set_server_config:342 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji +2025-08-31 21:18:01.387 | INFO | remote_commands_tab:refresh_directory:470 - 刷新目录列表 +2025-08-31 21:18:01.387 | INFO | remote_commands_tab:refresh_directory:482 - 使用用户输入目录: /home/xiaji +2025-08-31 21:18:01.387 | INFO | remote_commands_tab:set_server_info:288 - 设置服务器信息: {'ip': '192.168.3.157', 'username': 'xiaji', 'password': 'xiaji', 'port': 22, 'project': 'statuspage', 'git_url': 'http://192.168.3.241:3000/xiaji/webstatus.git', 'remote_dir': '/home/xiaji'} +2025-08-31 21:18:01.387 | INFO | __main__:on_tab_changed:88 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 21:18:01.388 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la +2025-08-31 21:18:01.396 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:18:01.397 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: 当前目录: /home/xiaji +2025-08-31 21:18:01.447 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: /home/xiaji +2025-08-31 21:18:01.448 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: total 84 +2025-08-31 21:18:01.448 | INFO | remote_commands_tab:run:123 - 命令执行成功: cd /home/xiaji && pwd && ls -la +2025-08-31 21:18:01.449 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 . +2025-08-31 21:18:01.450 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 17:55 .. +2025-08-31 21:18:01.450 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout +2025-08-31 21:18:01.451 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc +2025-08-31 21:18:01.451 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache +2025-08-31 21:18:01.451 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote +2025-08-31 21:18:01.452 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile +2025-08-31 21:18:01.452 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 17:55 .ssh +2025-08-31 21:18:01.452 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 0 Aug 31 12:39 .sudo_as_admin_successful +2025-08-31 21:18:01.453 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: drwxrwxr-x 9 xiaji xiaji 4096 Sep 1 2025 webstatus +2025-08-31 21:18:01.453 | INFO | remote_commands_tab:append_dir_output:496 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji +2025-08-31 21:18:01.453 | INFO | remote_commands_tab:on_dir_refresh_finished:502 - 目录列表刷新成功 +2025-08-31 21:18:08.461 | INFO | remote_commands_tab:execute_custom_command:521 - 执行自定义命令 +2025-08-31 21:18:08.463 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo touch /home/xiaji/webstatus/logs/gunicorn_access.log +2025-08-31 21:18:08.470 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:19:18.030 | INFO | __main__::189 - 启动应用程序 +2025-08-31 21:19:18.053 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 21:19:18.060 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 21:19:18.061 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 21:19:18.062 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 21:19:18.062 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 21:19:18.063 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 21:19:18.063 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 21:19:18.065 | INFO | remote_commands_tab:__init__:151 - 初始化远程命令标签页 +2025-08-31 21:19:18.067 | INFO | remote_commands_tab:init_ui:290 - 远程命令标签页UI初始化完成 +2025-08-31 21:19:18.071 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 21:19:19.960 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:19:20.049 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:19:21.553 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 1 +2025-08-31 21:19:21.554 | INFO | remote_commands_tab:set_ssh_client:313 - 设置SSH客户端 +2025-08-31 21:19:21.554 | INFO | remote_commands_tab:set_server_config:348 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji +2025-08-31 21:19:21.555 | INFO | remote_commands_tab:refresh_directory:476 - 刷新目录列表 +2025-08-31 21:19:21.555 | INFO | remote_commands_tab:refresh_directory:488 - 使用用户输入目录: /home/xiaji +2025-08-31 21:19:21.555 | INFO | remote_commands_tab:set_server_info:294 - 设置服务器信息: {'ip': '192.168.3.157', 'username': 'xiaji', 'password': 'xiaji', 'port': 22, 'project': 'statuspage', 'git_url': 'http://192.168.3.241:3000/xiaji/webstatus.git', 'remote_dir': '/home/xiaji'} +2025-08-31 21:19:21.555 | INFO | __main__:on_tab_changed:88 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 21:19:21.555 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la +2025-08-31 21:19:21.563 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:19:21.565 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: 当前目录: /home/xiaji +2025-08-31 21:19:21.614 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: /home/xiaji +2025-08-31 21:19:21.616 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: total 84 +2025-08-31 21:19:21.616 | INFO | remote_commands_tab:run:129 - 命令执行成功: cd /home/xiaji && pwd && ls -la +2025-08-31 21:19:21.617 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 . +2025-08-31 21:19:21.617 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 17:55 .. +2025-08-31 21:19:21.618 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout +2025-08-31 21:19:21.618 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc +2025-08-31 21:19:21.618 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache +2025-08-31 21:19:21.619 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote +2025-08-31 21:19:21.619 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile +2025-08-31 21:19:21.619 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 17:55 .ssh +2025-08-31 21:19:21.619 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 0 Aug 31 12:39 .sudo_as_admin_successful +2025-08-31 21:19:21.620 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxrwxr-x 9 xiaji xiaji 4096 Sep 1 2025 webstatus +2025-08-31 21:19:21.621 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji +2025-08-31 21:19:21.621 | INFO | remote_commands_tab:on_dir_refresh_finished:508 - 目录列表刷新成功 +2025-08-31 21:19:30.505 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:19:30.506 | INFO | remote_commands_tab:execute_custom_command:543 - 检测到sudo命令,预先请求密码 +2025-08-31 21:19:35.654 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo touch /home/xiaji/webstatus/logs/gunicorn_access.log +2025-08-31 21:19:35.662 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:19:35.708 | INFO | remote_commands_tab:run:84 - 使用预先设置的密码 +2025-08-31 21:19:35.723 | INFO | remote_commands_tab:run:129 - 命令执行成功: sudo touch /home/xiaji/webstatus/logs/gunicorn_access.log +2025-08-31 21:19:44.270 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:19:44.270 | INFO | remote_commands_tab:execute_custom_command:543 - 检测到sudo命令,预先请求密码 +2025-08-31 21:19:49.034 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo touch /home/xiaji/webstatus/logs/gunicorn_error.log +2025-08-31 21:19:49.045 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:19:49.092 | INFO | remote_commands_tab:run:84 - 使用预先设置的密码 +2025-08-31 21:19:49.108 | INFO | remote_commands_tab:run:129 - 命令执行成功: sudo touch /home/xiaji/webstatus/logs/gunicorn_error.log +2025-08-31 21:20:06.849 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:20:06.850 | INFO | remote_commands_tab:execute_custom_command:543 - 检测到sudo命令,预先请求密码 +2025-08-31 21:20:10.984 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo chown xiaji:xiaji /home/xiaji/webstatus/logs/*.log +2025-08-31 21:20:10.991 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:20:11.037 | INFO | remote_commands_tab:run:84 - 使用预先设置的密码 +2025-08-31 21:20:11.053 | INFO | remote_commands_tab:run:129 - 命令执行成功: sudo chown xiaji:xiaji /home/xiaji/webstatus/logs/*.log +2025-08-31 21:20:21.931 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:20:21.932 | INFO | remote_commands_tab:execute_custom_command:543 - 检测到sudo命令,预先请求密码 +2025-08-31 21:20:25.030 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo chmod 660 /home/xiaji/webstatus/logs/*.log +2025-08-31 21:20:25.048 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:20:25.096 | INFO | remote_commands_tab:run:84 - 使用预先设置的密码 +2025-08-31 21:20:25.111 | INFO | remote_commands_tab:run:129 - 命令执行成功: sudo chmod 660 /home/xiaji/webstatus/logs/*.log +2025-08-31 21:20:37.533 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:20:37.534 | INFO | remote_commands_tab:execute_custom_command:543 - 检测到sudo命令,预先请求密码 +2025-08-31 21:20:40.235 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo systemctl restart gunicorn_statuspage +2025-08-31 21:20:40.243 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:20:40.290 | INFO | remote_commands_tab:run:84 - 使用预先设置的密码 +2025-08-31 21:20:40.346 | INFO | remote_commands_tab:run:129 - 命令执行成功: sudo systemctl restart gunicorn_statuspage +2025-08-31 21:24:07.529 | INFO | __main__::189 - 启动应用程序 +2025-08-31 21:24:07.552 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 21:24:07.560 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 21:24:07.560 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 21:24:07.562 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 21:24:07.562 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 21:24:07.562 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 21:24:07.563 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 21:24:07.564 | INFO | remote_commands_tab:__init__:151 - 初始化远程命令标签页 +2025-08-31 21:24:07.566 | INFO | remote_commands_tab:init_ui:290 - 远程命令标签页UI初始化完成 +2025-08-31 21:24:07.569 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 21:24:08.762 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 21:24:08.763 | INFO | gunicorn_tab:set_ssh_client:767 - Gunicorn标签页已设置SSH客户端 +2025-08-31 21:24:08.764 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 21:24:08.764 | INFO | gunicorn_tab:set_username:772 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 21:24:08.764 | INFO | gunicorn_tab:set_project_info:778 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 21:24:08.767 | INFO | gunicorn_tab:update_command_editor:805 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 21:24:08.767 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 21:24:12.370 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 0 +2025-08-31 21:24:13.096 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:24:13.188 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:24:14.869 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 21:24:14.870 | INFO | gunicorn_tab:set_ssh_client:767 - Gunicorn标签页已设置SSH客户端 +2025-08-31 21:24:14.870 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 21:24:14.870 | INFO | gunicorn_tab:set_username:772 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 21:24:14.871 | INFO | gunicorn_tab:set_project_info:778 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 21:24:14.873 | INFO | gunicorn_tab:update_command_editor:805 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 21:24:14.874 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 21:24:18.553 | INFO | gunicorn_tab:run:388 - Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: active (running) since Sun 2025-08-31 21:20:40 CST; 3min 38s ago + Invocation: 01738874ff4740d9be3477544edbbc22 + Process: 1537 ExecStartPre=/bin/rm -f /home/xiaji/webstatus/sock/gunicorn.sock (code=exited, status=0/SUCCESS) + Process: 1539 ExecStartPre=/bin/mkdir -p /home/xiaji/webstatus/sock (code=exited, status=0/SUCCESS) + Main PID: 1541 (gunicorn) + Tasks: 4 (limit: 1846) + Memory: 102.7M (peak: 103.2M) + CPU: 816ms + CGroup: /system.slice/gunicorn_statuspage.service + ├─1541 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + ├─1542 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + ├─1543 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + └─1544 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + +Aug 31 21:20:40 statuspage systemd[1]: Starting gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project... +Aug 31 21:20:40 statuspage systemd[1]: Started gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project. + +2025-08-31 21:24:18.556 | INFO | gunicorn_tab:on_control_result:1127 - Gunicorn服务控制成功: Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: active (running) since Sun 2025-08-31 21:20:40 CST; 3min 38s ago + Invocation: 01738874ff4740d9be3477544edbbc22 + Process: 1537 ExecStartPre=/bin/rm -f /home/xiaji/webstatus/sock/gunicorn.sock (code=exited, status=0/SUCCESS) + Process: 1539 ExecStartPre=/bin/mkdir -p /home/xiaji/webstatus/sock (code=exited, status=0/SUCCESS) + Main PID: 1541 (gunicorn) + Tasks: 4 (limit: 1846) + Memory: 102.7M (peak: 103.2M) + CPU: 816ms + CGroup: /system.slice/gunicorn_statuspage.service + ├─1541 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + ├─1542 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + ├─1543 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + └─1544 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + +Aug 31 21:20:40 statuspage systemd[1]: Starting gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project... +Aug 31 21:20:40 statuspage systemd[1]: Started gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project. + +2025-08-31 21:24:26.779 | INFO | gunicorn_tab:run:561 - 开始设置服务器时区为Asia/Shanghai +2025-08-31 21:24:26.865 | INFO | gunicorn_tab:run:572 - 开始重启服务器 +2025-08-31 21:24:26.916 | INFO | gunicorn_tab:run:576 - 时区设置成功,服务器正在重启 +2025-08-31 21:24:26.917 | INFO | gunicorn_tab:on_server_control_result:1157 - 服务器控制成功: 时区设置成功,服务器正在重启 +2025-08-31 21:24:29.291 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 0 +2025-08-31 21:24:30.782 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:24:37.996 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:24:39.449 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 21:24:39.450 | INFO | gunicorn_tab:set_ssh_client:767 - Gunicorn标签页已设置SSH客户端 +2025-08-31 21:24:39.450 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 21:24:39.450 | INFO | gunicorn_tab:set_username:772 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 21:24:39.450 | INFO | gunicorn_tab:set_project_info:778 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 21:24:39.451 | INFO | gunicorn_tab:update_command_editor:805 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 21:24:39.452 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 21:24:42.852 | INFO | gunicorn_tab:run:388 - Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: active (running) since Mon 2025-09-01 04:24:32 CST; 7s ago + Invocation: 70dfe2c51f4f4268bea968648c5c4688 + Process: 876 ExecStartPre=/bin/rm -f /home/xiaji/webstatus/sock/gunicorn.sock (code=exited, status=0/SUCCESS) + Process: 906 ExecStartPre=/bin/mkdir -p /home/xiaji/webstatus/sock (code=exited, status=0/SUCCESS) + Main PID: 927 (gunicorn) + Tasks: 4 (limit: 1846) + Memory: 113.5M (peak: 113.7M) + CPU: 805ms + CGroup: /system.slice/gunicorn_statuspage.service + ├─ 927 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + ├─1033 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + ├─1034 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + └─1035 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + +Aug 31 21:24:34 statuspage systemd[1]: Starting gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project... +Sep 01 04:24:32 statuspage systemd[1]: Started gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project. + +2025-08-31 21:24:42.853 | INFO | gunicorn_tab:on_control_result:1127 - Gunicorn服务控制成功: Gunicorn服务状态查询成功: gunicorn_statuspage +● gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project + Loaded: loaded (/etc/systemd/system/gunicorn_statuspage.service; enabled; preset: enabled) + Active: active (running) since Mon 2025-09-01 04:24:32 CST; 7s ago + Invocation: 70dfe2c51f4f4268bea968648c5c4688 + Process: 876 ExecStartPre=/bin/rm -f /home/xiaji/webstatus/sock/gunicorn.sock (code=exited, status=0/SUCCESS) + Process: 906 ExecStartPre=/bin/mkdir -p /home/xiaji/webstatus/sock (code=exited, status=0/SUCCESS) + Main PID: 927 (gunicorn) + Tasks: 4 (limit: 1846) + Memory: 113.5M (peak: 113.7M) + CPU: 805ms + CGroup: /system.slice/gunicorn_statuspage.service + ├─ 927 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + ├─1033 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + ├─1034 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + └─1035 /usr/bin/python3 /usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application + +Aug 31 21:24:34 statuspage systemd[1]: Starting gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project... +Sep 01 04:24:32 statuspage systemd[1]: Started gunicorn_statuspage.service - Gunicorn Daemon for statuspage Project. + +2025-08-31 21:24:49.244 | INFO | gunicorn_tab:run:419 - 查看Gunicorn服务日志: bash -c 'echo "xiaji" | sudo -S journalctl -u gunicorn_statuspage -n 100' +2025-08-31 21:24:49.325 | INFO | gunicorn_tab:run:429 - Gunicorn服务日志查看成功 +2025-08-31 21:24:49.329 | INFO | gunicorn_tab:on_log_result:1068 - Gunicorn服务日志查看成功 +2025-08-31 21:25:33.715 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 4 +2025-08-31 21:25:33.715 | INFO | nginx_tab:set_ssh_client:461 - Nginx标签页已设置SSH客户端 +2025-08-31 21:25:33.715 | INFO | nginx_tab:set_username:466 - Nginx标签页已设置用户名: xiaji +2025-08-31 21:25:33.716 | INFO | nginx_tab:set_project_info:472 - Nginx标签页已设置项目信息: statuspage, 192.168.3.157 +2025-08-31 21:25:33.718 | INFO | __main__:on_tab_changed:185 - 状态栏更新为Nginx服务: nginx, 项目: statuspage +2025-08-31 21:26:08.579 | INFO | nginx_tab:run:219 - 开始处理Nginx站点配置: statuspage, 操作: create +2025-08-31 21:26:08.653 | INFO | nginx_tab:run:245 - 站点配置文件创建成功: /etc/nginx/sites-available/statuspage +2025-08-31 21:26:08.655 | INFO | nginx_tab:on_create_site_config_result:626 - Nginx站点配置创建成功: 站点配置文件创建成功: /etc/nginx/sites-available/statuspage +2025-08-31 21:26:13.856 | INFO | nginx_tab:run:170 - 开始执行Nginx服务操作: configtest +2025-08-31 21:26:13.883 | INFO | nginx_tab:run:195 - Nginx configtest 操作成功 +2025-08-31 21:26:13.883 | INFO | nginx_tab:on_create_configtest_result:652 - Nginx站点配置文件创建后语法检查通过 +2025-08-31 21:26:19.910 | INFO | nginx_tab:run:219 - 开始处理Nginx站点配置: statuspage, 操作: enable +2025-08-31 21:26:19.932 | ERROR | nginx_tab:run:263 - 站点配置启用失败: [sudo] password for xiaji: ln: failed to create symbolic link '/etc/nginx/sites-enabled/statuspage': File exists + +2025-08-31 21:26:19.932 | ERROR | nginx_tab:on_enable_site_config_result:704 - Nginx站点配置启用失败: 站点配置启用失败: [sudo] password for xiaji: ln: failed to create symbolic link '/etc/nginx/sites-enabled/statuspage': File exists + +2025-08-31 21:27:16.842 | INFO | __main__::189 - 启动应用程序 +2025-08-31 21:27:16.866 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 21:27:16.873 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 21:27:16.873 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 21:27:16.874 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 21:27:16.875 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 21:27:16.875 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 21:27:16.875 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 21:27:16.877 | INFO | remote_commands_tab:__init__:151 - 初始化远程命令标签页 +2025-08-31 21:27:16.879 | INFO | remote_commands_tab:init_ui:290 - 远程命令标签页UI初始化完成 +2025-08-31 21:27:16.882 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 21:27:18.377 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:27:18.464 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:27:19.754 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 4 +2025-08-31 21:27:19.754 | INFO | nginx_tab:set_ssh_client:479 - Nginx标签页已设置SSH客户端 +2025-08-31 21:27:19.754 | INFO | nginx_tab:set_username:484 - Nginx标签页已设置用户名: xiaji +2025-08-31 21:27:19.755 | INFO | nginx_tab:set_project_info:490 - Nginx标签页已设置项目信息: statuspage, 192.168.3.157 +2025-08-31 21:27:19.757 | INFO | __main__:on_tab_changed:185 - 状态栏更新为Nginx服务: nginx, 项目: statuspage +2025-08-31 21:27:40.461 | INFO | nginx_tab:run:219 - 开始处理Nginx站点配置: statuspage, 操作: create +2025-08-31 21:27:40.533 | INFO | nginx_tab:run:245 - 站点配置文件创建成功: /etc/nginx/sites-available/statuspage +2025-08-31 21:27:40.534 | INFO | nginx_tab:on_create_site_config_result:644 - Nginx站点配置创建成功: 站点配置文件创建成功: /etc/nginx/sites-available/statuspage +2025-08-31 21:27:46.507 | INFO | nginx_tab:run:170 - 开始执行Nginx服务操作: configtest +2025-08-31 21:27:46.537 | INFO | nginx_tab:run:195 - Nginx configtest 操作成功 +2025-08-31 21:27:46.537 | INFO | nginx_tab:on_create_configtest_result:670 - Nginx站点配置文件创建后语法检查通过 +2025-08-31 21:27:52.829 | INFO | nginx_tab:run:219 - 开始处理Nginx站点配置: statuspage, 操作: enable +2025-08-31 21:27:52.981 | INFO | nginx_tab:run:277 - 站点配置启用成功: statuspage +2025-08-31 21:27:52.982 | INFO | nginx_tab:on_enable_site_config_result:703 - Nginx站点配置启用成功: 站点配置启用成功: statuspage +2025-08-31 21:27:56.802 | INFO | nginx_tab:run:170 - 开始执行Nginx服务操作: configtest +2025-08-31 21:27:56.830 | INFO | nginx_tab:run:195 - Nginx configtest 操作成功 +2025-08-31 21:27:56.831 | INFO | nginx_tab:on_enable_configtest_result:729 - Nginx站点配置启用后语法检查通过 +2025-08-31 21:28:00.808 | INFO | nginx_tab:run:170 - 开始执行Nginx服务操作: configtest +2025-08-31 21:28:00.837 | INFO | nginx_tab:run:195 - Nginx configtest 操作成功 +2025-08-31 21:28:04.377 | INFO | nginx_tab:run:170 - 开始执行Nginx服务操作: restart +2025-08-31 21:28:04.484 | INFO | nginx_tab:run:195 - Nginx restart 操作成功 +2025-08-31 21:28:04.487 | INFO | nginx_tab:on_control_result:798 - Nginx服务控制成功: Nginx restart 操作成功 + +2025-08-31 21:29:15.918 | INFO | nginx_tab:run:219 - 开始处理Nginx站点配置: statuspage, 操作: create +2025-08-31 21:29:15.992 | INFO | nginx_tab:run:245 - 站点配置文件创建成功: /etc/nginx/sites-available/statuspage +2025-08-31 21:29:15.992 | INFO | nginx_tab:on_create_site_config_result:644 - Nginx站点配置创建成功: 站点配置文件创建成功: /etc/nginx/sites-available/statuspage +2025-08-31 21:29:36.928 | INFO | nginx_tab:run:219 - 开始处理Nginx站点配置: statuspage, 操作: create +2025-08-31 21:29:37.004 | INFO | nginx_tab:run:245 - 站点配置文件创建成功: /etc/nginx/sites-available/statuspage +2025-08-31 21:29:37.005 | INFO | nginx_tab:on_create_site_config_result:644 - Nginx站点配置创建成功: 站点配置文件创建成功: /etc/nginx/sites-available/statuspage +2025-08-31 21:29:39.188 | INFO | nginx_tab:run:170 - 开始执行Nginx服务操作: configtest +2025-08-31 21:29:39.217 | INFO | nginx_tab:run:195 - Nginx configtest 操作成功 +2025-08-31 21:29:39.217 | INFO | nginx_tab:on_create_configtest_result:670 - Nginx站点配置文件创建后语法检查通过 +2025-08-31 21:29:41.479 | INFO | nginx_tab:run:219 - 开始处理Nginx站点配置: statuspage, 操作: enable +2025-08-31 21:29:41.627 | INFO | nginx_tab:run:277 - 站点配置启用成功: statuspage +2025-08-31 21:29:41.628 | INFO | nginx_tab:on_enable_site_config_result:703 - Nginx站点配置启用成功: 站点配置启用成功: statuspage +2025-08-31 21:29:43.614 | INFO | nginx_tab:run:170 - 开始执行Nginx服务操作: configtest +2025-08-31 21:29:43.642 | INFO | nginx_tab:run:195 - Nginx configtest 操作成功 +2025-08-31 21:29:43.643 | INFO | nginx_tab:on_enable_configtest_result:729 - Nginx站点配置启用后语法检查通过 +2025-08-31 21:29:46.466 | INFO | nginx_tab:run:170 - 开始执行Nginx服务操作: configtest +2025-08-31 21:29:46.496 | INFO | nginx_tab:run:195 - Nginx configtest 操作成功 +2025-08-31 21:29:47.889 | INFO | nginx_tab:run:170 - 开始执行Nginx服务操作: restart +2025-08-31 21:29:47.990 | INFO | nginx_tab:run:195 - Nginx restart 操作成功 +2025-08-31 21:29:47.991 | INFO | nginx_tab:on_control_result:798 - Nginx服务控制成功: Nginx restart 操作成功 + +2025-08-31 21:29:51.344 | INFO | nginx_tab:run:170 - 开始执行Nginx服务操作: status +2025-08-31 21:29:51.376 | INFO | nginx_tab:run:195 - Nginx status 操作成功 +2025-08-31 21:29:51.377 | INFO | nginx_tab:on_control_result:798 - Nginx服务控制成功: Nginx status 操作成功 +● nginx.service - A high performance web server and a reverse proxy server + Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled) + Active: active (running) since Sun 2025-08-31 21:29:47 CST; 3s ago + Invocation: 713ffff67faf4a6fa11cd0c2595d94b6 + Docs: man:nginx(8) + Process: 1471 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) + Process: 1473 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) + Main PID: 1474 (nginx) + Tasks: 3 (limit: 1846) + Memory: 2.7M (peak: 3.1M) + CPU: 23ms + CGroup: /system.slice/nginx.service + ├─1474 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;" + ├─1475 "nginx: worker process" + └─1476 "nginx: worker process" + +Aug 31 21:29:47 statuspage systemd[1]: Starting nginx.service - A high performance web server and a reverse proxy server... +Aug 31 21:29:47 statuspage systemd[1]: Started nginx.service - A high performance web server and a reverse proxy server. + +2025-08-31 21:30:54.713 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 21:30:54.713 | INFO | gunicorn_tab:set_ssh_client:767 - Gunicorn标签页已设置SSH客户端 +2025-08-31 21:30:54.714 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 21:30:54.714 | INFO | gunicorn_tab:set_username:772 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 21:30:54.714 | INFO | gunicorn_tab:set_project_info:778 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 21:30:54.715 | INFO | gunicorn_tab:update_command_editor:805 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 21:30:54.716 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 21:31:12.561 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 4 +2025-08-31 21:31:12.562 | INFO | nginx_tab:set_ssh_client:479 - Nginx标签页已设置SSH客户端 +2025-08-31 21:31:12.562 | INFO | nginx_tab:set_username:484 - Nginx标签页已设置用户名: xiaji +2025-08-31 21:31:12.563 | INFO | nginx_tab:set_project_info:490 - Nginx标签页已设置项目信息: statuspage, 192.168.3.157 +2025-08-31 21:31:12.567 | INFO | __main__:on_tab_changed:185 - 状态栏更新为Nginx服务: nginx, 项目: statuspage +2025-08-31 21:31:31.455 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 1 +2025-08-31 21:31:31.455 | INFO | remote_commands_tab:set_ssh_client:313 - 设置SSH客户端 +2025-08-31 21:31:31.456 | INFO | remote_commands_tab:set_server_config:348 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji +2025-08-31 21:31:31.456 | INFO | remote_commands_tab:refresh_directory:476 - 刷新目录列表 +2025-08-31 21:31:31.456 | INFO | remote_commands_tab:refresh_directory:488 - 使用用户输入目录: /home/xiaji +2025-08-31 21:31:31.457 | INFO | remote_commands_tab:set_server_info:294 - 设置服务器信息: {'ip': '192.168.3.157', 'username': 'xiaji', 'password': 'xiaji', 'port': 22, 'project': 'statuspage', 'git_url': 'http://192.168.3.241:3000/xiaji/webstatus.git', 'remote_dir': '/home/xiaji'} +2025-08-31 21:31:31.457 | INFO | __main__:on_tab_changed:88 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 21:31:31.457 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la +2025-08-31 21:31:31.467 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:31:31.468 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: 当前目录: /home/xiaji +2025-08-31 21:31:31.516 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: /home/xiaji +2025-08-31 21:31:31.517 | INFO | remote_commands_tab:run:129 - 命令执行成功: cd /home/xiaji && pwd && ls -la +2025-08-31 21:31:31.517 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: total 84 +2025-08-31 21:31:31.518 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 . +2025-08-31 21:31:31.518 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 17:55 .. +2025-08-31 21:31:31.519 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout +2025-08-31 21:31:31.519 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc +2025-08-31 21:31:31.520 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache +2025-08-31 21:31:31.520 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote +2025-08-31 21:31:31.520 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile +2025-08-31 21:31:31.521 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 17:55 .ssh +2025-08-31 21:31:31.521 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 0 Aug 31 12:39 .sudo_as_admin_successful +2025-08-31 21:31:31.521 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxrwxr-x 9 xiaji xiaji 4096 Sep 1 2025 webstatus +2025-08-31 21:31:31.522 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji +2025-08-31 21:31:31.522 | INFO | remote_commands_tab:on_dir_refresh_finished:508 - 目录列表刷新成功 +2025-08-31 21:31:35.438 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:31:35.439 | INFO | remote_commands_tab:execute_custom_command:543 - 检测到sudo命令,预先请求密码 +2025-08-31 21:31:39.644 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo tail -n 20 /var/log/nginx/error.log +2025-08-31 21:31:39.652 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:31:39.700 | INFO | remote_commands_tab:run:84 - 使用预先设置的密码 +2025-08-31 21:31:39.717 | INFO | remote_commands_tab:run:129 - 命令执行成功: sudo tail -n 20 /var/log/nginx/error.log +2025-08-31 21:34:21.907 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 4 +2025-08-31 21:34:21.907 | INFO | nginx_tab:set_ssh_client:479 - Nginx标签页已设置SSH客户端 +2025-08-31 21:34:21.908 | INFO | nginx_tab:set_username:484 - Nginx标签页已设置用户名: xiaji +2025-08-31 21:34:21.908 | INFO | nginx_tab:set_project_info:490 - Nginx标签页已设置项目信息: statuspage, 192.168.3.157 +2025-08-31 21:34:21.912 | INFO | __main__:on_tab_changed:185 - 状态栏更新为Nginx服务: nginx, 项目: statuspage +2025-08-31 21:39:23.365 | INFO | __main__::189 - 启动应用程序 +2025-08-31 21:39:23.388 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 21:39:23.397 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 21:39:23.397 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 21:39:23.399 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 21:39:23.399 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 21:39:23.400 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 21:39:23.400 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 21:39:23.401 | INFO | remote_commands_tab:__init__:151 - 初始化远程命令标签页 +2025-08-31 21:39:23.403 | INFO | remote_commands_tab:init_ui:290 - 远程命令标签页UI初始化完成 +2025-08-31 21:39:23.405 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 21:39:24.703 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:39:24.792 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:39:26.152 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 4 +2025-08-31 21:39:26.152 | INFO | nginx_tab:set_ssh_client:529 - Nginx标签页已设置SSH客户端 +2025-08-31 21:39:26.152 | INFO | nginx_tab:set_username:534 - Nginx标签页已设置用户名: xiaji +2025-08-31 21:39:26.153 | INFO | nginx_tab:set_project_info:540 - Nginx标签页已设置项目信息: statuspage, 192.168.3.157 +2025-08-31 21:39:26.156 | INFO | __main__:on_tab_changed:185 - 状态栏更新为Nginx服务: nginx, 项目: statuspage +2025-08-31 21:39:28.836 | INFO | nginx_tab:set_permissions:883 - 从配置文件获取用户名: xiaji, 项目名: webstatus +2025-08-31 21:39:32.351 | INFO | nginx_tab:run:218 - 开始执行Nginx权限设置操作 +2025-08-31 21:39:32.352 | INFO | nginx_tab:run:222 - 执行命令 1/5: sudo chmod g+x /home/xiaji/ +2025-08-31 21:39:32.368 | ERROR | nginx_tab:run:235 - 命令执行失败: sudo chmod g+x /home/xiaji/ +错误信息: sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper +sudo: a password is required + +2025-08-31 21:39:32.369 | ERROR | nginx_tab:on_permissions_result:922 - 权限设置失败: 命令执行失败: sudo chmod g+x /home/xiaji/ +错误信息: sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper +sudo: a password is required + +2025-08-31 21:40:08.738 | INFO | __main__::189 - 启动应用程序 +2025-08-31 21:40:08.765 | INFO | __main__:__init__:17 - 初始化主窗口 +2025-08-31 21:40:08.770 | INFO | __main__:__init__:32 - 设置状态栏显示当前目录: C:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署 +2025-08-31 21:40:08.770 | INFO | server_connection_tab:__init__:14 - 初始化服务器连接标签页 +2025-08-31 21:40:08.772 | INFO | server_connection_tab:init_ui:93 - 服务器连接标签页UI初始化完成 +2025-08-31 21:40:08.772 | INFO | server_connection_tab:load_config:96 - 加载配置文件 +2025-08-31 21:40:08.773 | INFO | server_connection_tab:load_config:103 - 成功加载配置文件: c:\Users\xiaji\Documents\个人文件夹\夏骥\桌面部署\config.json +2025-08-31 21:40:08.773 | INFO | server_connection_tab:on_alias_changed:122 - 选择别名: 测试机 +2025-08-31 21:40:08.774 | INFO | remote_commands_tab:__init__:151 - 初始化远程命令标签页 +2025-08-31 21:40:08.776 | INFO | remote_commands_tab:init_ui:290 - 远程命令标签页UI初始化完成 +2025-08-31 21:40:08.779 | INFO | __main__:__init__:57 - 主窗口初始化完成 +2025-08-31 21:40:10.294 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:40:10.383 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:40:11.762 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 4 +2025-08-31 21:40:11.763 | INFO | nginx_tab:set_ssh_client:530 - Nginx标签页已设置SSH客户端 +2025-08-31 21:40:11.763 | INFO | nginx_tab:set_username:535 - Nginx标签页已设置用户名: xiaji +2025-08-31 21:40:11.763 | INFO | nginx_tab:set_project_info:541 - Nginx标签页已设置项目信息: statuspage, 192.168.3.157 +2025-08-31 21:40:11.767 | INFO | __main__:on_tab_changed:185 - 状态栏更新为Nginx服务: nginx, 项目: statuspage +2025-08-31 21:40:12.833 | INFO | nginx_tab:set_permissions:884 - 从配置文件获取用户名: xiaji, 项目名: webstatus +2025-08-31 21:40:15.304 | INFO | nginx_tab:run:218 - 开始执行Nginx权限设置操作 +2025-08-31 21:40:15.304 | INFO | nginx_tab:run:222 - 执行命令 1/5: sudo chmod g+x /home/xiaji/ +2025-08-31 21:40:15.332 | INFO | nginx_tab:run:239 - 命令执行成功: sudo chmod g+x /home/xiaji/ +2025-08-31 21:40:15.332 | INFO | nginx_tab:run:222 - 执行命令 2/5: sudo chown -R xiaji:www-data /home/xiaji/webstatus +2025-08-31 21:40:15.408 | INFO | nginx_tab:run:239 - 命令执行成功: sudo chown -R xiaji:www-data /home/xiaji/webstatus +2025-08-31 21:40:15.408 | INFO | nginx_tab:run:222 - 执行命令 3/5: sudo chmod g+x /home/xiaji/webstatus +2025-08-31 21:40:15.480 | INFO | nginx_tab:run:239 - 命令执行成功: sudo chmod g+x /home/xiaji/webstatus +2025-08-31 21:40:15.481 | INFO | nginx_tab:run:222 - 执行命令 4/5: sudo chown -R xiaji:www-data /home/xiaji/webstatus/sock +2025-08-31 21:40:15.551 | INFO | nginx_tab:run:239 - 命令执行成功: sudo chown -R xiaji:www-data /home/xiaji/webstatus/sock +2025-08-31 21:40:15.551 | INFO | nginx_tab:run:222 - 执行命令 5/5: sudo chmod -R 770 /home/xiaji/webstatus/sock +2025-08-31 21:40:15.627 | INFO | nginx_tab:run:239 - 命令执行成功: sudo chmod -R 770 /home/xiaji/webstatus/sock +2025-08-31 21:40:15.628 | INFO | nginx_tab:run:244 - 所有权限设置命令执行成功 +2025-08-31 21:40:15.628 | INFO | nginx_tab:on_permissions_result:919 - 权限设置成功: 所有权限设置命令执行成功 +2025-08-31 21:40:20.259 | INFO | nginx_tab:run:171 - 开始执行Nginx服务操作: configtest +2025-08-31 21:40:20.287 | INFO | nginx_tab:run:196 - Nginx configtest 操作成功 +2025-08-31 21:40:23.040 | INFO | nginx_tab:run:171 - 开始执行Nginx服务操作: restart +2025-08-31 21:40:23.134 | INFO | nginx_tab:run:196 - Nginx restart 操作成功 +2025-08-31 21:40:23.135 | INFO | nginx_tab:on_control_result:849 - Nginx服务控制成功: Nginx restart 操作成功 + +2025-08-31 21:40:27.115 | INFO | nginx_tab:run:171 - 开始执行Nginx服务操作: status +2025-08-31 21:40:27.145 | INFO | nginx_tab:run:196 - Nginx status 操作成功 +2025-08-31 21:40:27.146 | INFO | nginx_tab:on_control_result:849 - Nginx服务控制成功: Nginx status 操作成功 +● nginx.service - A high performance web server and a reverse proxy server + Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled) + Active: active (running) since Sun 2025-08-31 21:40:22 CST; 4s ago + Invocation: 9b940790b0a84c5fa74a1e0432bbaf22 + Docs: man:nginx(8) + Process: 1690 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) + Process: 1693 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) + Main PID: 1694 (nginx) + Tasks: 3 (limit: 1846) + Memory: 2.7M (peak: 3.1M) + CPU: 24ms + CGroup: /system.slice/nginx.service + ├─1694 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;" + ├─1695 "nginx: worker process" + └─1696 "nginx: worker process" + +Aug 31 21:40:22 statuspage systemd[1]: Starting nginx.service - A high performance web server and a reverse proxy server... +Aug 31 21:40:22 statuspage systemd[1]: Started nginx.service - A high performance web server and a reverse proxy server. + +2025-08-31 21:41:11.466 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 21:41:11.466 | INFO | gunicorn_tab:set_ssh_client:767 - Gunicorn标签页已设置SSH客户端 +2025-08-31 21:41:11.467 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 21:41:11.467 | INFO | gunicorn_tab:set_username:772 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 21:41:11.467 | INFO | gunicorn_tab:set_project_info:778 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 21:41:11.468 | INFO | gunicorn_tab:update_command_editor:805 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 21:41:11.469 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 21:41:16.266 | INFO | gunicorn_tab:run:561 - 开始设置服务器时区为Asia/Shanghai +2025-08-31 21:41:16.355 | INFO | gunicorn_tab:run:572 - 开始重启服务器 +2025-08-31 21:41:16.403 | INFO | gunicorn_tab:run:576 - 时区设置成功,服务器正在重启 +2025-08-31 21:41:16.403 | INFO | gunicorn_tab:on_server_control_result:1157 - 服务器控制成功: 时区设置成功,服务器正在重启 +2025-08-31 21:41:20.092 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 0 +2025-08-31 21:41:26.565 | INFO | server_connection_tab:connect_to_server:188 - 尝试连接服务器 +2025-08-31 21:41:30.013 | INFO | server_connection_tab:connect_to_server:207 - 成功连接到服务器: 192.168.3.157 +2025-08-31 21:41:32.673 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 1 +2025-08-31 21:41:32.674 | INFO | remote_commands_tab:set_ssh_client:313 - 设置SSH客户端 +2025-08-31 21:41:32.674 | INFO | remote_commands_tab:set_server_config:348 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji +2025-08-31 21:41:32.675 | INFO | remote_commands_tab:refresh_directory:476 - 刷新目录列表 +2025-08-31 21:41:32.675 | INFO | remote_commands_tab:refresh_directory:488 - 使用用户输入目录: /home/xiaji +2025-08-31 21:41:32.676 | INFO | remote_commands_tab:set_server_info:294 - 设置服务器信息: {'ip': '192.168.3.157', 'username': 'xiaji', 'password': 'xiaji', 'port': 22, 'project': 'statuspage', 'git_url': 'http://192.168.3.241:3000/xiaji/webstatus.git', 'remote_dir': '/home/xiaji'} +2025-08-31 21:41:32.676 | INFO | __main__:on_tab_changed:88 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 21:41:32.677 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la +2025-08-31 21:41:32.686 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:41:32.686 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: 当前目录: /home/xiaji +2025-08-31 21:41:32.735 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: /home/xiaji +2025-08-31 21:41:32.736 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: total 84 +2025-08-31 21:41:32.736 | INFO | remote_commands_tab:run:129 - 命令执行成功: cd /home/xiaji && pwd && ls -la +2025-08-31 21:41:32.737 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxr-x--- 6 xiaji xiaji 4096 Aug 31 12:39 . +2025-08-31 21:41:32.737 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 17:55 .. +2025-08-31 21:41:32.738 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout +2025-08-31 21:41:32.738 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc +2025-08-31 21:41:32.738 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache +2025-08-31 21:41:32.739 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote +2025-08-31 21:41:32.739 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile +2025-08-31 21:41:32.739 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 17:55 .ssh +2025-08-31 21:41:32.739 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 0 Aug 31 12:39 .sudo_as_admin_successful +2025-08-31 21:41:32.740 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxrwxr-x 9 xiaji www-data 4096 Sep 1 04:11 webstatus +2025-08-31 21:41:32.740 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji +2025-08-31 21:41:32.740 | INFO | remote_commands_tab:on_dir_refresh_finished:508 - 目录列表刷新成功 +2025-08-31 21:41:37.831 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:41:37.833 | INFO | remote_commands_tab:run:53 - 执行远程命令: ls -l /home/xiaji/webstatus/sock/gunicorn.sock +2025-08-31 21:41:37.840 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:41:37.893 | INFO | remote_commands_tab:run:129 - 命令执行成功: ls -l /home/xiaji/webstatus/sock/gunicorn.sock +2025-08-31 21:42:01.772 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:42:01.772 | INFO | remote_commands_tab:execute_custom_command:543 - 检测到sudo命令,预先请求密码 +2025-08-31 21:42:04.501 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo tail -n 20 /var/log/nginx/error.log +2025-08-31 21:42:04.510 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:42:04.556 | INFO | remote_commands_tab:run:84 - 使用预先设置的密码 +2025-08-31 21:42:04.577 | INFO | remote_commands_tab:run:129 - 命令执行成功: sudo tail -n 20 /var/log/nginx/error.log +2025-08-31 21:43:05.140 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:43:05.141 | INFO | remote_commands_tab:run:53 - 执行远程命令: # 1. 查看/home/xiaji目录权限 +ls -ld /home/xiaji/ + +# 2. 查看/home/xiaji/webstatus目录权限 +ls -ld /home/xiaji/webstatus/ + +# 3. 查看/home/xiaji/webstatus/sock目录权限 +ls -ld /home/xiaji/webstatus/sock/ + +# 4. 查看socket文件权限 +ls -l /home/xiaji/webstatus/sock/gunicorn.sock + +# 5. 查看www-data用户的组信息 +id www-data +2025-08-31 21:43:05.151 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:43:05.208 | INFO | remote_commands_tab:run:129 - 命令执行成功: # 1. 查看/home/xiaji目录权限 +ls -ld /home/xiaji/ + +# 2. 查看/home/xiaji/webstatus目录权限 +ls -ld /home/xiaji/webstatus/ + +# 3. 查看/home/xiaji/webstatus/sock目录权限 +ls -ld /home/xiaji/webstatus/sock/ + +# 4. 查看socket文件权限 +ls -l /home/xiaji/webstatus/sock/gunicorn.sock + +# 5. 查看www-data用户的组信息 +id www-data +2025-08-31 21:44:04.171 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:44:04.172 | INFO | remote_commands_tab:execute_custom_command:543 - 检测到sudo命令,预先请求密码 +2025-08-31 21:44:06.766 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo chmod o+x /home/xiaji/ +2025-08-31 21:44:06.774 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:44:06.823 | INFO | remote_commands_tab:run:84 - 使用预先设置的密码 +2025-08-31 21:44:06.838 | INFO | remote_commands_tab:run:129 - 命令执行成功: sudo chmod o+x /home/xiaji/ +2025-08-31 21:44:21.920 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:44:21.921 | INFO | remote_commands_tab:execute_custom_command:543 - 检测到sudo命令,预先请求密码 +2025-08-31 21:44:24.662 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo ls -al /home/xiaji/ +2025-08-31 21:44:24.670 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:44:24.716 | INFO | remote_commands_tab:run:84 - 使用预先设置的密码 +2025-08-31 21:44:24.731 | INFO | remote_commands_tab:run:129 - 命令执行成功: sudo ls -al /home/xiaji/ +2025-08-31 21:44:40.822 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:44:40.823 | INFO | remote_commands_tab:execute_custom_command:543 - 检测到sudo命令,预先请求密码 +2025-08-31 21:44:45.244 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo chown xiaji:www-data /home/xiaji/webstatus/sock/gunicorn.sock +2025-08-31 21:44:45.251 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:44:45.297 | INFO | remote_commands_tab:run:84 - 使用预先设置的密码 +2025-08-31 21:44:45.314 | INFO | remote_commands_tab:run:129 - 命令执行成功: sudo chown xiaji:www-data /home/xiaji/webstatus/sock/gunicorn.sock +2025-08-31 21:45:02.027 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:45:02.028 | INFO | remote_commands_tab:run:53 - 执行远程命令: ls -al /home/xiaji/webstatus/sock/gunicorn.sock +2025-08-31 21:45:02.036 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:45:02.086 | INFO | remote_commands_tab:run:129 - 命令执行成功: ls -al /home/xiaji/webstatus/sock/gunicorn.sock +2025-08-31 21:45:18.844 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:45:18.845 | INFO | remote_commands_tab:execute_custom_command:543 - 检测到sudo命令,预先请求密码 +2025-08-31 21:45:21.053 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo chmod 660 /home/xiaji/webstatus/sock/gunicorn.sock +2025-08-31 21:45:21.060 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:45:21.107 | INFO | remote_commands_tab:run:84 - 使用预先设置的密码 +2025-08-31 21:45:21.123 | INFO | remote_commands_tab:run:129 - 命令执行成功: sudo chmod 660 /home/xiaji/webstatus/sock/gunicorn.sock +2025-08-31 21:45:26.161 | INFO | remote_commands_tab:execute_custom_command:527 - 执行自定义命令 +2025-08-31 21:45:26.161 | INFO | remote_commands_tab:execute_custom_command:543 - 检测到sudo命令,预先请求密码 +2025-08-31 21:45:29.715 | INFO | remote_commands_tab:run:53 - 执行远程命令: sudo chmod 660 /home/xiaji/webstatus/sock/gunicorn.sock +sudo systemctl restart nginx +2025-08-31 21:45:29.724 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 21:45:29.771 | INFO | remote_commands_tab:run:84 - 使用预先设置的密码 +2025-08-31 22:01:24.029 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 1 +2025-08-31 22:01:24.030 | INFO | remote_commands_tab:set_ssh_client:313 - 设置SSH客户端 +2025-08-31 22:01:24.030 | INFO | remote_commands_tab:set_server_config:348 - 设置服务器配置: git_url=http://192.168.3.241:3000/xiaji/webstatus.git, remote_dir=/home/xiaji +2025-08-31 22:01:24.030 | INFO | remote_commands_tab:refresh_directory:476 - 刷新目录列表 +2025-08-31 22:01:24.030 | INFO | remote_commands_tab:refresh_directory:488 - 使用用户输入目录: /home/xiaji +2025-08-31 22:01:24.032 | INFO | remote_commands_tab:set_server_info:294 - 设置服务器信息: {'ip': '192.168.3.157', 'username': 'xiaji', 'password': 'xiaji', 'port': 22, 'project': 'statuspage', 'git_url': 'http://192.168.3.241:3000/xiaji/webstatus.git', 'remote_dir': '/home/xiaji'} +2025-08-31 22:01:24.032 | INFO | __main__:on_tab_changed:88 - 状态栏更新为远程服务器目录: 测试机: /home/xiaji +2025-08-31 22:01:24.032 | INFO | remote_commands_tab:run:53 - 执行远程命令: cd /home/xiaji && pwd && ls -la +2025-08-31 22:01:24.042 | INFO | remote_commands_tab:run:73 - 当前目录: /home/xiaji +2025-08-31 22:01:24.043 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: 当前目录: /home/xiaji +2025-08-31 22:01:24.092 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: /home/xiaji +2025-08-31 22:01:24.094 | INFO | remote_commands_tab:run:129 - 命令执行成功: cd /home/xiaji && pwd && ls -la +2025-08-31 22:01:24.094 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: total 84 +2025-08-31 22:01:24.095 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxr-x--x 6 xiaji xiaji 4096 Aug 31 12:39 . +2025-08-31 22:01:24.095 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxr-xr-x 3 root root 4096 Aug 31 17:55 .. +2025-08-31 22:01:24.096 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 220 Aug 20 2024 .bash_logout +2025-08-31 22:01:24.096 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 3771 Aug 20 2024 .bashrc +2025-08-31 22:01:24.097 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 10:56 .cache +2025-08-31 22:01:24.097 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxrwxr-x 3 xiaji xiaji 4096 Aug 31 10:59 django.remote +2025-08-31 22:01:24.098 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 807 Aug 20 2024 .profile +2025-08-31 22:01:24.098 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwx------ 2 xiaji xiaji 4096 Aug 31 17:55 .ssh +2025-08-31 22:01:24.099 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-r--r-- 1 xiaji xiaji 0 Aug 31 12:39 .sudo_as_admin_successful +2025-08-31 22:01:24.099 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: drwxrwxr-x 9 xiaji www-data 4096 Sep 1 2025 webstatus +2025-08-31 22:01:24.099 | INFO | remote_commands_tab:append_dir_output:502 - 目录列表信息: -rw-rw-r-- 1 xiaji xiaji 47664 Aug 31 11:33 xiaji +2025-08-31 22:01:24.099 | INFO | remote_commands_tab:on_dir_refresh_finished:508 - 目录列表刷新成功 +2025-08-31 22:01:25.136 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 2 +2025-08-31 22:01:25.137 | INFO | django_tab:set_ssh_client:142 - Django标签页已设置SSH客户端 +2025-08-31 22:01:25.137 | INFO | django_tab:set_username:147 - Django标签页已设置用户名: xiaji +2025-08-31 22:01:25.137 | INFO | __main__:on_tab_changed:123 - 状态栏更新为Django项目: statuspage, 目录: /home/xiaji +2025-08-31 22:01:25.869 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 3 +2025-08-31 22:01:25.870 | INFO | gunicorn_tab:set_ssh_client:767 - Gunicorn标签页已设置SSH客户端 +2025-08-31 22:01:25.870 | INFO | __main__:on_tab_changed:158 - 构建的Django路径: /home/xiaji/webstatus/, 项目名: statuspage +2025-08-31 22:01:25.871 | INFO | gunicorn_tab:set_username:772 - Gunicorn标签页已设置用户名: xiaji +2025-08-31 22:01:25.871 | INFO | gunicorn_tab:set_project_info:778 - Gunicorn标签页已设置项目信息: statuspage, /home/xiaji/webstatus/ +2025-08-31 22:01:25.873 | INFO | gunicorn_tab:update_command_editor:805 - Gunicorn命令编辑器已更新项目名称: statuspage +2025-08-31 22:01:25.873 | INFO | __main__:on_tab_changed:165 - 状态栏更新为Gunicorn服务: gunicorn_statuspage, 目录: /home/xiaji/webstatus/ +2025-08-31 22:01:27.014 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 4 +2025-08-31 22:01:27.015 | INFO | nginx_tab:set_ssh_client:530 - Nginx标签页已设置SSH客户端 +2025-08-31 22:01:27.015 | INFO | nginx_tab:set_username:535 - Nginx标签页已设置用户名: xiaji +2025-08-31 22:01:27.015 | INFO | nginx_tab:set_project_info:541 - Nginx标签页已设置项目信息: statuspage, 192.168.3.157 +2025-08-31 22:01:27.018 | INFO | __main__:on_tab_changed:185 - 状态栏更新为Nginx服务: nginx, 项目: statuspage +2025-08-31 22:01:37.276 | INFO | __main__:on_tab_changed:60 - 标签页切换到: 0 diff --git a/gunicorn_tab.py b/gunicorn_tab.py index ac610a9..4a2e919 100644 --- a/gunicorn_tab.py +++ b/gunicorn_tab.py @@ -436,6 +436,116 @@ class GunicornLogThread(QThread): self.result_ready.emit(False, error_msg) logger.error(f"Gunicorn服务日志查看异常: {error_msg}") +class GunicornLogCheckThread(QThread): + """检查并创建Gunicorn日志文件目录和文件的线程""" + result_ready = Signal(bool, str) + + def __init__(self, ssh_client, username, git_url, password): + super().__init__() + self.ssh_client = ssh_client + self.username = username + self.git_url = git_url + self.password = password + + def run(self): + try: + # 从git_url中提取项目名(去掉.git后缀) + project_name = self.git_url.split('/')[-1].replace('.git', '') + logger.info(f"从git_url提取的项目名: {project_name}") + + # 构建日志目录路径 + log_dir = f"/home/{self.username}/{project_name}/logs" + access_log_path = f"{log_dir}/gunicorn_access.log" + error_log_path = f"{log_dir}/gunicorn_error.log" + + logger.info(f"检查日志目录: {log_dir}") + + # 检查并创建日志目录 + check_dir_cmd = f"bash -c 'echo \"{self.password}\" | sudo -S mkdir -p {log_dir}'" + stdin, stdout, stderr = self.ssh_client.exec_command(check_dir_cmd) + exit_status = stdout.channel.recv_exit_status() + + if exit_status != 0: + error = stderr.read().decode() + self.result_ready.emit(False, f"创建日志目录失败: {error}") + logger.error(f"创建日志目录失败: {error}") + return + + # 设置日志目录权限 + chmod_cmd = f"bash -c 'echo \"{self.password}\" | sudo -S chmod 755 {log_dir}'" + stdin, stdout, stderr = self.ssh_client.exec_command(chmod_cmd) + exit_status = stdout.channel.recv_exit_status() + + if exit_status != 0: + error = stderr.read().decode() + self.result_ready.emit(False, f"设置日志目录权限失败: {error}") + logger.error(f"设置日志目录权限失败: {error}") + return + + # 检查并创建访问日志文件 + check_access_log_cmd = f"bash -c 'echo \"{self.password}\" | sudo -S touch {access_log_path}'" + stdin, stdout, stderr = self.ssh_client.exec_command(check_access_log_cmd) + exit_status = stdout.channel.recv_exit_status() + + if exit_status != 0: + error = stderr.read().decode() + self.result_ready.emit(False, f"创建访问日志文件失败: {error}") + logger.error(f"创建访问日志文件失败: {error}") + return + + # 设置访问日志文件权限 + chmod_access_cmd = f"bash -c 'echo \"{self.password}\" | sudo -S chmod 644 {access_log_path}'" + stdin, stdout, stderr = self.ssh_client.exec_command(chmod_access_cmd) + exit_status = stdout.channel.recv_exit_status() + + if exit_status != 0: + error = stderr.read().decode() + self.result_ready.emit(False, f"设置访问日志文件权限失败: {error}") + logger.error(f"设置访问日志文件权限失败: {error}") + return + + # 检查并创建错误日志文件 + check_error_log_cmd = f"bash -c 'echo \"{self.password}\" | sudo -S touch {error_log_path}'" + stdin, stdout, stderr = self.ssh_client.exec_command(check_error_log_cmd) + exit_status = stdout.channel.recv_exit_status() + + if exit_status != 0: + error = stderr.read().decode() + self.result_ready.emit(False, f"创建错误日志文件失败: {error}") + logger.error(f"创建错误日志文件失败: {error}") + return + + # 设置错误日志文件权限 + chmod_error_cmd = f"bash -c 'echo \"{self.password}\" | sudo -S chmod 644 {error_log_path}'" + stdin, stdout, stderr = self.ssh_client.exec_command(chmod_error_cmd) + exit_status = stdout.channel.recv_exit_status() + + if exit_status != 0: + error = stderr.read().decode() + self.result_ready.emit(False, f"设置错误日志文件权限失败: {error}") + logger.error(f"设置错误日志文件权限失败: {error}") + return + + # 设置日志文件所有者为用户 + chown_cmd = f"bash -c 'echo \"{self.password}\" | sudo -S chown -R {self.username}:{self.username} {log_dir}'" + stdin, stdout, stderr = self.ssh_client.exec_command(chown_cmd) + exit_status = stdout.channel.recv_exit_status() + + if exit_status != 0: + error = stderr.read().decode() + self.result_ready.emit(False, f"设置日志文件所有者失败: {error}") + logger.error(f"设置日志文件所有者失败: {error}") + return + + result_msg = f"日志目录和文件创建成功:\n目录: {log_dir}\n访问日志: {access_log_path}\n错误日志: {error_log_path}" + self.result_ready.emit(True, result_msg) + logger.info("日志目录和文件创建成功") + + except Exception as e: + error_msg = str(e) + self.result_ready.emit(False, error_msg) + logger.error(f"检查并创建日志文件异常: {error_msg}") + class ServerControlThread(QThread): """控制服务器设置的线程""" result_ready = Signal(bool, str) @@ -578,6 +688,11 @@ class GunicornTab(QWidget): self.view_logs_btn.clicked.connect(self.view_service_logs) service_btn_layout.addWidget(self.view_logs_btn) + # 检查日志文件按钮 + self.check_log_files_btn = QPushButton("检查日志文件") + self.check_log_files_btn.clicked.connect(self.check_log_files) + service_btn_layout.addWidget(self.check_log_files_btn) + service_layout.addLayout(service_btn_layout) layout.addLayout(service_layout) @@ -628,27 +743,19 @@ class GunicornTab(QWidget): def init_service_content(self): """初始化服务文件内容""" default_content = "[Unit]\n" - default_content += "Description=Gunicorn daemon for myproject\n" + default_content += "Description=Gunicorn Daemon for statuspage Project\n" default_content += "After=network.target\n\n" default_content += "[Service]\n" - default_content += "User=【用户名】\n" - default_content += "Group=【用户名】\n" - default_content += "WorkingDirectory=【Django路径】\n" - default_content += "# 所有Gunicorn参数直接在这里配置\n" - default_content += "ExecStart=/usr/bin/gunicorn \\ \n" - default_content += " --pythonpath 【Django路径】 \\ \n" - default_content += " --bind 127.0.0.1:8000 \\ \n" - default_content += " --workers $(nproc) \\ \n" - default_content += " --worker-class sync \\ \n" - default_content += " --timeout 60 \\ \n" - default_content += " --name 【项目名】 \\ \n" - default_content += " --access-logfile 【Django路径】/logs/gunicorn_access.log \\ \n" - default_content += " --error-logfile 【Django路径】/logs/gunicorn_error.log \\ \n" - default_content += " --log-level info \\ \n" - default_content += " 【项目名】.wsgi:application\n" - default_content += "Restart=on-failure\n" - default_content += "RestartSec=5s\n" - default_content += "PrivateTmp=true\n\n" + default_content += "# 以xiaji用户运行(确保对/home/xiaji有完全权限)\n" + default_content += "User=xiaji\n" + default_content += "Group=xiaji\n" + default_content += "# 项目工作目录\n" + default_content += "WorkingDirectory=/home/xiaji/webstatus\n\n" + default_content += "# 启动前预处理:先删除旧socket(避免残留),再创建目录(如果不存在)\n" + default_content += "ExecStartPre=/bin/rm -f /home/xiaji/webstatus/sock/gunicorn.sock\n" + default_content += "ExecStartPre=/bin/mkdir -p /home/xiaji/webstatus/sock\n\n" + default_content += "# 单行ExecStart(无反斜杠,避免格式错误)\n" + default_content += "ExecStart=/usr/bin/gunicorn --pythonpath /home/xiaji/webstatus --workers 3 --bind unix:/home/xiaji/webstatus/sock/gunicorn.sock --access-logfile /home/xiaji/webstatus/logs/gunicorn_access.log --error-logfile /home/xiaji/webstatus/logs/gunicorn_error.log statuspage.wsgi:application\n\n" default_content += "[Install]\n" default_content += "WantedBy=multi-user.target" @@ -964,6 +1071,55 @@ class GunicornTab(QWidget): logger.error(f"Gunicorn服务日志查看失败: {message}") QMessageBox.warning(self, "错误", f"Gunicorn服务日志查看失败: {message}") + def check_log_files(self): + """检查并创建Gunicorn日志文件目录和文件""" + if not self.ssh_client: + self.append_output("错误: 未连接到服务器") + return + + if not self.username: + self.append_output("错误: 未设置用户名") + return + + # 读取config.json获取git_url + try: + import json + with open('config.json', 'r', encoding='utf-8') as f: + config = json.load(f) + # 获取第一个服务器的配置 + server_config = next(iter(config.values())) + git_url = server_config.get('git_url', '') + if not git_url: + self.append_output("错误: config.json中未找到git_url") + return + except Exception as e: + self.append_output(f"错误: 读取config.json失败: {str(e)}") + return + + # 请求用户输入sudo密码 + dialog = PasswordDialog(self) + if dialog.exec_() == QDialog.Accepted: + password = dialog.get_password() + self.append_output("正在检查并创建Gunicorn日志文件目录和文件...") + + # 创建并启动日志检查线程 + self.log_check_thread = GunicornLogCheckThread(self.ssh_client, self.username, git_url, password) + self.log_check_thread.result_ready.connect(self.on_log_check_result) + self.log_check_thread.start() + else: + self.append_output("用户取消了密码输入") + + def on_log_check_result(self, success, message): + """处理日志检查结果""" + if success: + self.append_output(message) + logger.info("Gunicorn日志文件检查和创建成功") + QMessageBox.information(self, "成功", "Gunicorn日志文件检查和创建成功") + else: + self.append_output(f"检查并创建日志文件失败: {message}") + logger.error(f"Gunicorn日志文件检查和创建失败: {message}") + QMessageBox.warning(self, "错误", f"Gunicorn日志文件检查和创建失败: {message}") + def on_control_result(self, success, message): """处理控制结果""" if success: diff --git a/nginx_tab.py b/nginx_tab.py index 512a942..6892207 100644 --- a/nginx_tab.py +++ b/nginx_tab.py @@ -1,5 +1,6 @@ import os import sys +import json from PySide6.QtWidgets import (QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QLabel, QTextEdit, QFileDialog, QMessageBox, QLineEdit, QDialog, QDialogButtonBox) @@ -202,6 +203,51 @@ class NginxControlThread(QThread): self.result_ready.emit(False, error_msg) logger.error(f"Nginx服务控制异常: {error_msg}") +class NginxPermissionsThread(QThread): + """设置Nginx权限的线程""" + result_ready = Signal(bool, str) + + def __init__(self, ssh_client, commands, password): + super().__init__() + self.ssh_client = ssh_client + self.commands = commands # 命令列表 + self.password = password + + def run(self): + try: + logger.info("开始执行Nginx权限设置操作") + + # 执行所有命令 + for i, command in enumerate(self.commands): + logger.info(f"执行命令 {i+1}/{len(self.commands)}: {command}") + + # 使用bash -c将命令组合在一起,确保密码对所有sudo命令有效 + # 使用-S选项让sudo从标准输入读取密码 + full_command = f"bash -c 'echo \"{self.password}\" | sudo -S {command}'" + stdin, stdout, stderr = self.ssh_client.exec_command(full_command) + exit_status = stdout.channel.recv_exit_status() + + output = stdout.read().decode() + error = stderr.read().decode() + + if exit_status != 0: + error_msg = f"命令执行失败: {command}\n错误信息: {error}" + self.result_ready.emit(False, error_msg) + logger.error(error_msg) + return + + logger.info(f"命令执行成功: {command}") + + # 所有命令执行成功 + success_msg = "所有权限设置命令执行成功" + self.result_ready.emit(True, success_msg) + logger.info(success_msg) + + except Exception as e: + error_msg = str(e) + self.result_ready.emit(False, error_msg) + logger.error(f"Nginx权限设置异常: {error_msg}") + class NginxSiteThread(QThread): """处理Nginx站点配置的线程""" result_ready = Signal(bool, str) @@ -250,6 +296,24 @@ class NginxSiteThread(QThread): elif self.operation == "enable": # 启用站点配置 + # 首先检查目标链接是否存在,如果存在则先删除 + check_cmd = f"bash -c 'echo \"{self.password}\" | sudo -S test -f /etc/nginx/sites-enabled/{self.site_name}'" + stdin, stdout, stderr = self.ssh_client.exec_command(check_cmd) + check_status = stdout.channel.recv_exit_status() + + if check_status == 0: + # 目标链接存在,先删除 + remove_cmd = f"bash -c 'echo \"{self.password}\" | sudo -S rm -f /etc/nginx/sites-enabled/{self.site_name}'" + stdin, stdout, stderr = self.ssh_client.exec_command(remove_cmd) + remove_status = stdout.channel.recv_exit_status() + + if remove_status != 0: + error = stderr.read().decode() + self.result_ready.emit(False, f"删除现有符号链接失败: {error}") + logger.error(f"删除现有符号链接失败: {error}") + return + + # 创建符号链接 enable_cmd = f"bash -c 'echo \"{self.password}\" | sudo -S ln -s /etc/nginx/sites-available/{self.site_name} /etc/nginx/sites-enabled/'" stdin, stdout, stderr = self.ssh_client.exec_command(enable_cmd) exit_status = stdout.channel.recv_exit_status() @@ -352,6 +416,11 @@ class NginxTab(QWidget): self.check_nginx_status_btn.clicked.connect(self.check_nginx_status) control_layout.addWidget(self.check_nginx_status_btn) + # 一键赋予权限按钮 + self.set_permissions_btn = QPushButton("一键赋予权限") + self.set_permissions_btn.clicked.connect(self.set_permissions) + control_layout.addWidget(self.set_permissions_btn) + layout.addLayout(control_layout) # 输出区域 @@ -782,4 +851,74 @@ http { else: self.append_output(f"操作失败: {message}") logger.error(f"Nginx服务控制失败: {message}") - QMessageBox.warning(self, "错误", f"Nginx服务控制失败: {message}") \ No newline at end of file + QMessageBox.warning(self, "错误", f"Nginx服务控制失败: {message}") + + def set_permissions(self): + """一键赋予权限""" + if not self.ssh_client: + self.append_output("错误: 未连接到服务器") + return + + # 读取config.json文件获取username和git_url + try: + with open('config.json', 'r', encoding='utf-8') as f: + config = json.load(f) + + # 获取第一个服务器配置(假设只有一个服务器配置) + server_config = next(iter(config.values())) + username = server_config.get('username', '') + git_url = server_config.get('git_url', '') + + # 从git_url中提取项目名(.git前的值) + if git_url: + # 提取git_url中最后一个/和.git之间的部分 + if '/' in git_url: + project_name = git_url.split('/')[-1] + if project_name.endswith('.git'): + project_name = project_name[:-4] # 移除.git后缀 + else: + project_name = 'webstatus' # 默认值 + else: + project_name = 'webstatus' # 默认值 + + logger.info(f"从配置文件获取用户名: {username}, 项目名: {project_name}") + + except Exception as e: + error_msg = str(e) + self.append_output(f"读取配置文件失败: {error_msg}") + logger.error(f"读取配置文件失败: {error_msg}") + QMessageBox.warning(self, "错误", f"读取配置文件失败: {error_msg}") + return + + # 请求用户输入sudo密码 + dialog = PasswordDialog(self) + if dialog.exec_() == QDialog.Accepted: + password = dialog.get_password() + self.append_output("正在设置权限...") + + # 构建命令序列 + commands = [ + f"sudo chmod g+x /home/{username}/", + f"sudo chown -R {username}:www-data /home/{username}/{project_name}", + f"sudo chmod g+x /home/{username}/{project_name}", + f"sudo chown -R {username}:www-data /home/{username}/{project_name}/sock", + f"sudo chmod -R 770 /home/{username}/{project_name}/sock" + ] + + # 创建并启动权限设置线程 + self.permissions_thread = NginxPermissionsThread(self.ssh_client, commands, password) + self.permissions_thread.result_ready.connect(self.on_permissions_result) + self.permissions_thread.start() + else: + self.append_output("用户取消了密码输入") + + def on_permissions_result(self, success, message): + """处理权限设置结果""" + if success: + self.append_output(f"权限设置成功: {message}") + logger.info(f"权限设置成功: {message}") + QMessageBox.information(self, "成功", message) + else: + self.append_output(f"权限设置失败: {message}") + logger.error(f"权限设置失败: {message}") + QMessageBox.warning(self, "错误", f"权限设置失败: {message}") \ No newline at end of file diff --git a/remote_commands_tab.py b/remote_commands_tab.py index 9517498..89f9104 100644 --- a/remote_commands_tab.py +++ b/remote_commands_tab.py @@ -79,27 +79,33 @@ class RemoteCommandThread(QThread): command_with_sudo = self.command.replace("sudo", "sudo -S") stdin, stdout, stderr = self.ssh_client.exec_command(command_with_sudo) - # 检查是否需要密码 - password_prompt = False - for line in stderr: - self.output_signal.emit(line) - if "password for" in line.lower() or "密码" in line: - password_prompt = True - break - - # 如果需要密码,请求用户输入 - if password_prompt: - self.waiting_for_password = True - self.password_request_signal.emit() + # 如果预先设置了密码,直接发送 + if self.password: + logger.info("使用预先设置的密码") + stdin.write(self.password + "\n") + stdin.flush() + else: + # 检查是否需要密码 + password_prompt = False + for line in stderr: + self.output_signal.emit(line) + if "password for" in line.lower() or "密码" in line: + password_prompt = True + break - # 等待密码输入 - while self.waiting_for_password: - self.msleep(100) - - # 发送密码 - if self.password: - stdin.write(self.password + "\n") - stdin.flush() + # 如果需要密码,请求用户输入 + if password_prompt: + self.waiting_for_password = True + self.password_request_signal.emit() + + # 等待密码输入 + while self.waiting_for_password: + self.msleep(100) + + # 发送密码 + if self.password: + stdin.write(self.password + "\n") + stdin.flush() else: stdin, stdout, stderr = self.ssh_client.exec_command(self.command) @@ -194,26 +200,24 @@ class RemoteCommandsTab(QWidget): system_group = QGroupBox("系统管理") system_layout = QVBoxLayout() - # 时区设置 - timezone_layout = QHBoxLayout() - self.set_timezone_button = QPushButton("设置时区为北京时区") - self.set_timezone_button.clicked.connect(self.set_timezone) - timezone_layout.addWidget(self.set_timezone_button) - timezone_layout.addStretch() - system_layout.addLayout(timezone_layout) + # 自定义命令执行区域 + custom_command_layout = QVBoxLayout() + custom_command_layout.addWidget(QLabel("自定义命令:")) - # 服务器重启 - reboot_layout = QHBoxLayout() - self.reboot_button = QPushButton("重启服务器") - self.reboot_button.clicked.connect(self.reboot_server) - reboot_layout.addWidget(self.reboot_button) - reboot_layout.addStretch() - system_layout.addLayout(reboot_layout) + # 命令输入框 + self.custom_command_input = QTextEdit() + self.custom_command_input.setMaximumHeight(100) + custom_command_layout.addWidget(self.custom_command_input) - # 配置sudo免密按钮 - self.sudo_nopasswd_button = QPushButton("配置sudo免密") - self.sudo_nopasswd_button.clicked.connect(self.configure_sudo_nopasswd) - system_layout.addWidget(self.sudo_nopasswd_button) + # 执行按钮 + execute_button_layout = QHBoxLayout() + self.execute_command_button = QPushButton("执行命令") + self.execute_command_button.clicked.connect(self.execute_custom_command) + execute_button_layout.addWidget(self.execute_command_button) + execute_button_layout.addStretch() + custom_command_layout.addLayout(execute_button_layout) + + system_layout.addLayout(custom_command_layout) system_group.setLayout(system_layout) main_layout.addWidget(system_group) @@ -519,92 +523,57 @@ class RemoteCommandsTab(QWidget): logger.error(f"刷新目录列表失败: {message}") QMessageBox.warning(self, "错误", f"刷新目录列表失败: {message}") - def set_timezone(self): - logger.info("设置时区为北京时区") + def execute_custom_command(self): + logger.info("执行自定义命令") if not self.ssh_client: QMessageBox.warning(self, "警告", "请先连接到服务器") return - # 确认操作 - reply = QMessageBox.question(self, "确认设置时区", - "确定要将服务器时区设置为北京时区吗?", - QMessageBox.Yes | QMessageBox.No, QMessageBox.No) - - if reply == QMessageBox.No: + command = self.custom_command_input.toPlainText().strip() + if not command: + QMessageBox.warning(self, "警告", "请输入要执行的命令") return self.output_text.clear() - self.status_label.setText("正在设置时区...") + self.status_label.setText("正在执行命令...") + + # 如果命令以sudo开头,预先请求密码 + if command.startswith("sudo "): + logger.info("检测到sudo命令,预先请求密码") + # 创建密码输入对话框 + dialog = PasswordDialog(self) + if dialog.exec() == QDialog.Accepted: + password = dialog.get_password() + if not password: + QMessageBox.warning(self, "警告", "未输入密码,取消执行命令") + return + else: + QMessageBox.warning(self, "警告", "已取消输入密码") + return # 创建并启动线程执行命令 - command = "sudo timedatectl set-timezone Asia/Shanghai" self.command_thread = RemoteCommandThread(self.ssh_client, command) self.command_thread.output_signal.connect(self.append_output) - self.command_thread.finished_signal.connect(self.on_timezone_set) + self.command_thread.finished_signal.connect(self.on_custom_command_finished) self.command_thread.password_request_signal.connect(self.request_password) + + # 如果是sudo命令且已获取密码,预先设置密码 + if command.startswith("sudo ") and password: + self.command_thread.set_password(password) + self.output_text.append("密码已设置\n") + self.command_thread.start() - def on_timezone_set(self, success, message): + def on_custom_command_finished(self, success, message): if success: - self.status_label.setText("时区设置成功") + self.status_label.setText("命令执行成功") self.status_label.setStyleSheet("color: green;") - QMessageBox.information(self, "成功", "服务器时区已设置为北京时区") - - # 显示当前时区 - self.show_current_timezone() + self.output_text.append(f"\n=== 命令执行成功 ===\n{message}") else: - self.status_label.setText("时区设置失败") + self.status_label.setText("命令执行失败") self.status_label.setStyleSheet("color: red;") - QMessageBox.warning(self, "错误", f"设置时区失败: {message}") - - def show_current_timezone(self): - logger.info("显示当前时区") - - if not self.ssh_client: - return - - command = "timedatectl status" - self.command_thread = RemoteCommandThread(self.ssh_client, command) - self.command_thread.output_signal.connect(self.append_output) - self.command_thread.finished_signal.connect(lambda success, message: None) - self.command_thread.start() - - def reboot_server(self): - logger.info("重启服务器") - - if not self.ssh_client: - QMessageBox.warning(self, "警告", "请先连接到服务器") - return - - # 确认操作 - reply = QMessageBox.question(self, "确认重启", - "确定要重启服务器吗?\n此操作将导致服务器临时不可用!", - QMessageBox.Yes | QMessageBox.No, QMessageBox.No) - - if reply == QMessageBox.No: - return - - self.output_text.clear() - self.status_label.setText("正在重启服务器...") - - # 创建并启动线程执行命令 - command = "sudo reboot" - self.command_thread = RemoteCommandThread(self.ssh_client, command) - self.command_thread.output_signal.connect(self.append_output) - self.command_thread.finished_signal.connect(self.on_reboot_initiated) - self.command_thread.password_request_signal.connect(self.request_password) - self.command_thread.start() - - def on_reboot_initiated(self, success, message): - if success: - self.status_label.setText("服务器重启命令已发送") - self.status_label.setStyleSheet("color: green;") - QMessageBox.information(self, "重启已启动", "服务器重启命令已发送,服务器将在几秒后重启。\n请等待服务器重启完成后重新连接。") - else: - self.status_label.setText("服务器重启失败") - self.status_label.setStyleSheet("color: red;") - QMessageBox.warning(self, "错误", f"服务器重启失败: {message}") + self.output_text.append(f"\n=== 命令执行失败 ===\n{message}") def delete_directory(self): logger.info("删除目录") @@ -640,42 +609,7 @@ class RemoteCommandsTab(QWidget): self.command_thread.finished_signal.connect(self.on_command_finished) self.command_thread.start() - def configure_sudo_nopasswd(self): - logger.info("配置sudo免密") - - if not self.ssh_client: - QMessageBox.warning(self, "警告", "请先连接到服务器") - return - - # 确认操作 - reply = QMessageBox.question(self, "确认配置sudo免密", - "确定要配置sudo免密吗?\n此操作将允许当前用户无需密码执行sudo命令,请谨慎操作!", - QMessageBox.Yes | QMessageBox.No, QMessageBox.No) - - if reply == QMessageBox.No: - return - - self.output_text.clear() - self.status_label.setText("正在配置sudo免密...") - - # 创建并启动线程执行命令 - # 首先获取当前用户名,然后配置sudo免密 - command = "whoami && echo '\n' | sudo -S visudo -c && (echo '\n' | sudo -S visudo -f /etc/sudoers.d/nopasswd && echo '$(whoami) ALL=(ALL) NOPASSWD: ALL' | sudo -S tee /etc/sudoers.d/nopasswd && sudo -S chmod 440 /etc/sudoers.d/nopasswd)" - self.command_thread = RemoteCommandThread(self.ssh_client, command) - self.command_thread.output_signal.connect(self.append_output) - self.command_thread.finished_signal.connect(self.on_sudo_nopasswd_configured) - self.command_thread.password_request_signal.connect(self.request_password) - self.command_thread.start() - - def on_sudo_nopasswd_configured(self, success, message): - if success: - self.status_label.setText("sudo免密配置成功") - self.status_label.setStyleSheet("color: green;") - QMessageBox.information(self, "成功", "sudo免密配置成功!\n当前用户现在可以无需密码执行sudo命令。") - else: - self.status_label.setText("sudo免密配置失败") - self.status_label.setStyleSheet("color: red;") - QMessageBox.warning(self, "错误", f"sudo免密配置失败: {message}") + def check_ssh_connection(self): """检查SSH连接是否有效"""