「django开发」CMDB实验————9、访问首页前获取最新的状态文件内容(自用)

文章描述了一个涉及IT技术的场景,更新了首页代码以处理容器状态的自动刷新,每分钟检查一次,同时使用paramiko库进行SSH连接,从Linux集群下载dockerStatus.txt和allServicesStatus.txt文件。
摘要由CSDN通过智能技术生成

 改变容器状态,等待新的一分钟开始,确保周期任务执行。

  更新前的输出内容。

def home(request):
    """
    :param request:
    :return: 首页
    """

    # 获取最新文件内容
    os.system(r"C:\Users\PycharmProjects\CMDB\web\tools\getClientData.py")
    
    # 获取'web/clientData/dockerStatus.txt'内容,并进行过滤操作。
    dockerStatus = []
    try:
        with open('web/clientData/dockerStatus.txt', 'r') as file:
            # 将文件中内容转化成列表
            for line in file:
                data = ast.literal_eval(line)
                dockerStatus.append(data)
            # 删除每个子列表的第一个元素
            for sublist in dockerStatus:
                del sublist[0]
    except FileNotFoundError:
        print('文件 web/clientData/dockerStatus.txt 不存在!')

    # 获取'web/clientData/allDockerStatus.txt'内容
    servicesStatus = ''
    try:
        with open('web/clientData/allServicesStatus.txt', 'r') as file:
            content= file.readlines()
            servicesStatus = [line.replace('\n', '') for line in content] # 去除\n
    except FileNotFoundError:
        print('文件 web/clientData/allDockerStatus.txt 不存在!')
    print(servicesStatus)
    return render(request, 'home.html', {'dockerStatus': dockerStatus, 'servicesStatus': servicesStatus})

 将home页面的行为代码更新。

# 用于获取linux集群中的客户机的信息
import paramiko

# SSH连接参数
hostname = '192.168.3.58'
port = 22
username = 'root'
password = '123456'


def saveFile(remote_file_path, local_file_path):
    """
    将remote_file_path保存到local_file_path
    :param remote_file_path:
    :param local_file_path:
    :return:
    """
    scp.get(remote_file_path, local_file_path)


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

try:
    # 连接SSH服务器
    client.connect(hostname, port, username, password)

    # 创建SCP客户端
    scp = client.open_sftp()

    # 下载文件
    saveFile('/output/dockerStatus.txt', r'C:\Users\PycharmProjects\CMDB\web\clientData\dockerStatus.txt')
    saveFile('/output/allServicesStatus', r'C:\Users\PycharmProjects\CMDB\web\clientData\allServicesStatus.txt')

    print('文件下载完成!')

finally:
    # 关闭连接
    scp.close()
    client.close()

 修改getClientData.py中的路径为绝对路径。

更新后输出内容。 

 更改容器状态,等待一分钟后验证效果。

刷新页面,发现效果成功实现。

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值