使用python ,在windows获取linux虚拟机信息

(1)一种方法是在安装好的虚拟机中获取进程信息;
(2)但是这个题目的含义是,在windows中,通过获取与ubuntu相关的进程,解决问题。
先来看一下简单的做法吧:
1.下载并安装VirtualBox软件:从VirtualBox官方网站(https://www.virtualbox.org/)下载适用于Windows系统的安装程序,并按照提示进行安装。
2.下载Linux系统镜像:从Linux官方网站(如Ubuntu官网:https://ubuntu.com/)下载适用于VirtualBox的Linux系统镜像文件(通常是ISO文件)。
3.创建虚拟机:打开VirtualBox软件,点击"新建"按钮创建一个新的虚拟机。在创建过程中,选择Linux作为操作系统类型,并根据下载的Linux系统镜像文件进行设置。
4.安装Linux系统:选择新创建的虚拟机,点击"启动"按钮启动虚拟机。在虚拟机中,选择安装Linux系统选项,并按照安装向导的提示进行操作。
5.安装Python:在安装完Linux系统后,打开终端(Terminal)并输入以下命令安装Python:

sudo apt update
sudo apt install python3

6.获取进程数据和资源信息:在Linux系统中,可以使用一些命令来获取进程数据和资源信息。例如,
使用top命令可以查看系统的进程和资源使用情况,
使用cat /proc/meminfo命令可以查看内存信息。(在终端中应该就可以使用这些命令)
7.编写Python脚本:在Linux系统中,创建一个Python脚本,使用subprocess模块来执行命令并获取输出结果。(这里的脚本是在虚拟机中编写的,但是我需要在windows中编写)

import subprocess
import time

# 获取进程数据和资源信息的命令
command_cpu = "top -b -n 1"
command_mem = "cat /proc/meminfo"

# 获取20条数据
num_records = 20

# 定时10秒获取数据
interval = 10

# 存储结果的文件
result_file = "result.txt"

# 循环获取数据
for i in range(num_records):
    # 执行命令并获取输出结果
    cpu_output = subprocess.check_output(command_cpu, shell=True).decode("utf-8")
    mem_output = subprocess.check_output(command_mem, shell=True).decode("utf-8")
    
    # 将结果写入文件
    with open(result_file, "a") as f:
        f.write(f"Record {i+1}:\n")
        f.write("CPU:\n")
        f.write(cpu_output)
        f.write("\n")
        f.write("Memory:\n")
        f.write(mem_output)
        f.write("\n")
    
    # 等待一段时间
    time.sleep(interval)
  1. 运行该脚本就可以。
    ================
    windows系统需要与ubuntu建立ssl通信。 具体步骤为:
    (1)在windows系统上安装SSH客户端,比如使用PuTTY或者其他SSH客户端软件连接到远程的Linux服务器
    (2)在linux远程服务器上安装和配置SSH服务,确保LINUX系统已经安装和配置了SSH服务,安装的具体方法可以参考Linux发行版的文档或者教程
    (3)在windows系统上安装python和相关依赖,一般需要安装对应的库执行SSH连接以及命令的执行。如:
pip install paramiko

(4)在windows系统上编写脚本,调用库连接到远程服务器之后,执行命令并获取所需的信息:

import paramiko
import time

# 远程Linux服务器的IP地址、用户名和密码
host = "远程服务器IP地址"
username = "用户名"
password = "密码"

# 获取进程数据和资源信息的命令
command_cpu = "top -b -n 1"
command_mem = "cat /proc/meminfo"

# 获取20条数据
num_records = 20

# 定时10秒获取数据
interval = 10

# 存储结果的文件
result_file = "result.txt"

# 创建SSH客户端
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接到远程Linux服务器
client.connect(host, username=username, password=password)

# 循环获取数据
for i in range(num_records):
    # 执行命令并获取输出结果
    stdin, stdout, stderr = client.exec_command(command_cpu)
    cpu_output = stdout.read().decode("utf-8")
    
    stdin, stdout, stderr = client.exec_command(command_mem)
    mem_output = stdout.read().decode("utf-8")
    
    # 将结果写入文件
    with open(result_file, "a") as f:
        f.write(f"Record {i+1}:\n")
        f.write("CPU:\n")
        f.write(cpu_output)
        f.write("\n")
        f.write("Memory:\n")
        f.write(mem_output)
        f.write("\n")
    
    # 等待一段时间
    time.sleep(interval)

# 关闭SSH连接
client.close()

(5)运行这个脚本,就可以获取所需要的信息了。
还有其他方法,如使用python脚本获取虚拟机virtual Box的命令。

import subprocess
import time

# 获取虚拟机信息的命令
command = "VBoxManage list vms"

# 获取20条数据
num_records = 20

# 定时10秒获取数据
interval = 10

# 存储结果的文件
result_file = "result.txt"

# 循环获取数据
for i in range(num_records):
    # 执行命令并获取输出结果
    output = subprocess.check_output(command, shell=True).decode("utf-8")
    
    # 将结果写入文件
    with open(result_file, "a") as f:
        f.write(f"Record {i+1}:\n")
        f.write(output)
        f.write("\n")
    
    # 等待一段时间
    time.sleep(interval)

围绕着这个题目,一直有个问题没有解决。就是windows系统与虚拟机的关系到底是什么样的。为什么在windows系统中,无法获取到ubuntu系统的运行状态,而只能够间接获取,这可能与操作系统有关,也可能与虚拟机的设置原理有关。我觉得了解这一点,才是这个问题的核心。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值