当前位置: 首页 > news >正文

服务器信息获取工具

功能介绍
  • SSH连接到远程服务器:
  • 用户可以输入目标服务器的IP地址、用户名、密码以及SSH端口(默认22)。
  • 工具会尝试连接到远程服务器,并在连接失败时显示错误信息。
  • 运行命令并返回输出:
  • 工具可以在远程服务器上运行命令,并返回命令的输出结果。
  • 解析配置文件:
  • 工具可以解析不同类型的配置文件,包括PHP、Java、Python、Ruby和ASP/.NET,提取数据库配置信息。

4. 分析服务器信息:

  • 工具可以获取系统信息、用户信息、网络信息、进程信息和已安装的软件信息。
  • 工具还可以获取网站配置和数据库配置信息。

5. 保存结果到文件:

  • 用户可以选择保存路径,工具会将分析结果保存为JSON文件。

SSH连接实现

import paramiko
from tkinter import messageboxdef ssh_connect(ip, username, password, port=22):try:client = paramiko.SSHClient()client.set_missing_host_key_policy(paramiko.AutoAddPolicy())client.connect(ip, username=username, password=password, port=port)return clientexcept Exception as e:messagebox.showerror("连接失败", f"连接失败: {e}")return None
运行命令并返回输出
def run_command(client, command):stdin, stdout, stderr = client.exec_command(command)return stdout.read().decode()

服务器基本信息

def analyze_server(client):results = {}# 系统信息os_version = run_command(client, "cat /etc/os-release")kernel_version = run_command(client, "uname -r")hostname = run_command(client, "hostname")results['系统信息'] = {'os_version': os_version.strip().split('\n'),'kernel_version': kernel_version.strip(),'hostname': hostname.strip()}# 用户信息users = run_command(client, "cat /etc/passwd")sudoers = run_command(client, "cat /etc/sudoers")results['用户信息'] = {'users': users.strip().split('\n'),'sudoers': sudoers.strip().split('\n')}# 网络信息interfaces = run_command(client, "ip addr")ifconfig = run_command(client, "ifconfig")listening_ports = run_command(client, "netstat -anp")active_connections = run_command(client, "ss -tunap")results['网络信息'] = {'interfaces': interfaces.strip().split('\n'),'ifconfig': ifconfig.strip().split('\n'),'listening_ports': listening_ports.strip().split('\n'),'active_connections': active_connections.strip().split('\n')}# 进程信息processes = run_command(client, "ps aux")results['进程信息'] = processes.strip().split('\n')# 已安装的软件installed_software = run_command(client, "rpm -qa")results['安装软件信息'] = installed_software.strip().split('\n')return results

主界面效果

输出内容

http://www.lryc.cn/news/396289.html

相关文章:

  • uniapp 防止重复提交数据
  • 线程池工具类
  • 印尼“支付宝” DANA 如何借力 OceanBase 实现3个“关键零”
  • 2018-2022 年份微博签到数据集
  • Avalonia开发实践(二)——开发带边框的Grid
  • Java泛型的定义与运用
  • Java如何自定义注解及在SpringBoot中的应用
  • 微软 Edge 浏览器全解析
  • C++ 八股(1)
  • 超高精电容传感器PCAP01调试+LABVIEW数据可视化调试手记
  • 5.更多
  • ConditionalOnJndi注解使用介绍、应用场景以及示例代码
  • Spring Cloud 引入
  • 自定义波形图View,LayoutInflater动态加载控件保存为本地图片
  • 每日一道算法题 求最小公倍数
  • 【OCC学习18】三维几何对象工具包:TKG3d
  • 【Unix】SunOS/Oracle Solaris系统介绍
  • 氛围感视频素材高级感的去哪里找啊?带氛围感的素材网站库分享
  • 基于Java的学生选课系统
  • 802.11漫游流程简单解析与笔记_Part2_05_wpa_supplicant如何通过nl80211控制内核开始关联
  • STM32的 DMA(直接存储器访问) 详解
  • 14-65 剑和诗人39 - 打造你自己的 Devin
  • JavaScript 把CSDN博客内容存成PDF
  • uniapp——银行卡号脱敏
  • 基于Spring Boot框架的EAM系统设计与实现
  • 不同编程范式中作用域和闭包概念概述
  • ISO/OSI七层模型
  • Golang | Leetcode Golang题解之第226题翻转二叉树
  • 传感器标定(一)摄像头内参标定
  • 基于门控循环单元 GRU 实现股票单变量时间序列预测(PyTorch版)