AI写代码:我用kimi生成了一个设备节点监控网站,完美实现功能

更多精彩内容在公众号。

这一次继续用kimi来完成一个网站的初步搭建。这次是用来搭建一个节点监控网站。需求是通过输入节点Ip地址,用户名,密码得到远端节点的IP,CPU信息,内存信息,硬盘信息,网络收发包信息

#python版本:3.9#代码功能: 实现网络节点监控功能网站#使用框架: flask #节点通信方式: ssh#网页功能:  #功能1 提供对话框,填入节点IP  #功能2 根据输入的节点IP,用户名和密码,得到节点的监控信息  #功能3 网页上显示节点的IP,CPU信息,内存信息。硬盘信息,网络收包,发包统计
请根据这个功能提供完整项目代码

kimi提供了完整代码。我这里告诉kimi用ssh的方式和节点通信,因此远端节点必须是安装了ssh server,并且已经启动。

图片

继续让kimi用bootstraps进行网页渲染

图片

按照kimi提供的,需要有templates文件夹,下面index.html和monitor.html。然后一个monitor_site.py

图片

monitor_site.py​​​​​​​

from flask import Flask, render_template, requestfrom paramiko import SSHClient, AutoAddPolicyimport re
app = Flask(__name__)@app.route('/')def index():    # 返回带有表单的HTML页面,用于输入节点信息和认证凭据    return render_template('index.html')@app.route('/monitor', methods=['POST'])def monitor():    # 从表单获取节点信息和认证凭据    ip_address = request.form.get('ip_address')    username = request.form.get('username')    password = request.form.get('password')
    # 初始化SSH客户端    ssh_client = SSHClient()    ssh_client.set_missing_host_key_policy(AutoAddPolicy())
    try:        # 尝试使用提供的凭据连接到SSH服务器        ssh_client.connect(ip_address, username=username, password=password)
        # 这里可以添加代码来获取和显示节点的监控信息        # 例如,获取CPU信息的命令:ssh_client.exec_command('top -bn 1 | grep "Cpu(s)"')        # 获取到的信息可以存储在变量中,然后传递给监控结果模板
        # 假设我们有一个获取监控信息的函数        monitoring_info = get_monitoring_info(ssh_client)
        # 关闭SSH连接        ssh_client.close()
        # 返回监控结果页面        return render_template('monitor.html', ip=ip_address, info=monitoring_info)
    except Exception as e:        print(str(e))        # 如果发生错误,返回错误页面        return render_template('error.html', error=str(e))def get_monitoring_info(ssh_client):    # 获取监控信息的命令列表    commands = [        ('top -bn 1 | grep "Cpu(s)"', 'cpu_info'),        ('free -m', 'memory_info'),        ('df -h', 'disk_info'),        ('netstat -s', 'network_info')    ]
    # 存储监控信息的字典    monitoring_info = {}
    # 执行每个命令并获取输出    for command, info_type in commands:        stdin, stdout, stderr = ssh_client.exec_command(command)        output = stdout.read().decode('utf-8')        monitoring_info[info_type] = output
    print(monitoring_info)    # 关闭SSH连接    ssh_client.close()
    return monitoring_infoif __name__ == '__main__':    app.run(host='0.0.0.0', port=8080,debug=True)

index.html​​​​​​​

<!DOCYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">    <title>节点监控</title>    <!-- 引入Bootstrap CSS -->    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"></head><body>    <div class="container mt-5">        <h1 class="text-center">节点监控</h1>        <form action="/monitor" method="post">            <div class="input-group mb-3">                <input type="text" class="form-control" id="ip_address" name="ip_address" placeholder="请输入节点IP" required>                <div class="input-group-append">                    <button type="submit" class="btn btn-primary">监控</button>                </div>            </div>        </form>    </div>    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>    <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.3/dist/umd/popper.min.js"></script>    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script></body></html>

monitor.html​​​​​​​

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>监控结果</title>    <!-- 引入Bootstrap CSS -->    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"></head><body>    <div class="container mt-5">        <h1 class="text-center">监控结果 - {{ ip }}</h1>        <div class="card">            <div class="card-header">CPU信息</div>            <pre class="card-body">{{ cpu }}</pre>        </div>        <div class="card mt-3">            <div class="card-header">内存信息</div>            <pre class="card-body">{{ mem }}</pre>        </div>        <div class="card mt-3">            <div class="card-header">硬盘信息</div>            <pre class="card-body">{{ disk }}</pre>        </div>        <div class="card mt-3">            <div class="card-header">网络收包发包统计</div>            <pre class="card-body">{{ network }}</pre>        </div>        <a href="/" class="btn btn-secondary mt-3">返回</a>    </div>    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>    <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.3/dist/umd/popper.min.js"></script>    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script></body></html>

不过运行后没有任何有效信息

图片

给kimi反馈问题。列出了几个排查点。

图片

发现是html模版中的引用有问题,应该是用info.mem这种方式。

图片

修改后。显示出了我们想要的结果。

图片

最后是进行美化。告诉kimi参考仪表盘风格的html界面

图片

最终效果如下图:

首先是进入界面,三个对话框:

Node IP:输入节点IP

Username: 输入远端设备登录用户名

Password:输入登录密码

图片

最后的显示结果

图片

这个界面相对于之前的界面,已经美观不少了。达到了我的需求

更多精彩内容在公众号。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/340495.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Node】node的Events模块(事件模块)的介绍和使用

文章目录 简言EventsPassing arguments and this to listeners 向监听器传递参数Asynchronous vs. synchronous 异步和同步Handling events only once 只一次处理事件Error events 错误事件Capture rejections of promises 捕捉拒绝承诺的情况Class: EventEmitter 事件类Event:…

神经网络是什么?有什么作用?

人工智能是当前的热门科技领域&#xff0c;在自动驾驶、金融服务、智能家居、零售和电商、工业制造、医疗领域、教育领域、交通领域、娱乐领域、能源管理、农业、航空航天等很多领域都有越来越多的应用。 发展人工智能&#xff0c;离不开算力&#xff08;芯片&#xff09;、算…

单实例11.2.0.4迁移到11.2.0.4RAC_使用rman异机恢复

保命法则&#xff1a;先备份再操作&#xff0c;磁盘空间紧张无法备份就让满足&#xff0c;给自己留退路。 场景说明&#xff1a; 1.本文档的环境为同平台、不同版本&#xff08;操作系统版本可以不同&#xff0c;数据库版本相同&#xff09;&#xff0c;源机器和目标机器部分…

语雀使用指南

语雀使用指南 语雀什么是语雀注册知识库新建文档新建表格 使用感受 语雀 在介绍语雀之前&#xff0c;首先来说一下什么是语雀&#xff1f; 什么是语雀 语雀的官方文档定义是这么说的&#xff1a;「语雀」是一个「专业的云端知识库」&#xff0c;孵化自 蚂蚁集团 &#xff0c…

迎七一党史知识竞赛答题怎么做

迎七一党史知识竞赛答题&#xff0c;不仅是对于党史知识的检验&#xff0c;更是对于参赛者学习态度和综合能力的考量。在参与这类竞赛时&#xff0c;我们需要做好充分的准备&#xff0c;掌握一定的答题技巧&#xff0c;才能取得好的成绩。 首先&#xff0c;我们要深入了解竞赛…

【LeetCode】38.外观数列

外观数列 题目描述&#xff1a; 「外观数列」是一个数位字符串序列&#xff0c;由递归公式定义&#xff1a; countAndSay(1) "1"countAndSay(n) 是 countAndSay(n-1) 的行程长度编码。 行程长度编码&#xff08;RLE&#xff09;是一种字符串压缩方法&#xff0c…

【python】修改目标检测的xml标签(VOC)类别名

需求&#xff1a; 在集成多个数据集一同训练时&#xff0c;可能会存在不同数据集针对同一种目标有不同的类名&#xff0c;可以通过python脚本修改数据内的类名映射&#xff0c;实现统一数据集标签名的目的。 代码&#xff1a; # -*- coding: utf-8 -*- # Time : 2023/9/11 1…

SOLIDWORKS教育版:提供学生所需的资源

SOLIDWORKS教育版是一款专为学生和教育工作者设计的3D CAD软件&#xff0c;它拥有强大的设计功能和用户友好的界面&#xff0c;让你轻松实现创新设计的梦想。这款软件不仅提供了丰富的教程和案例&#xff0c;还为学生提供了各种学习资源和支持&#xff0c;让你在学习的道路上不…

Python程序设计 身份证号的奥秘

第1关&#xff1a;判断性别 通过身份证的第17位也就是倒数第二位的数字可以辨别该身份证所属人的性别,奇数为男性,偶数为女性。 任务&#xff1a;输入身份证号&#xff0c;第17位若是偶数&#xff0c;输出男性&#xff0c;否则输出女性 如何截取字符串的一个字符 如何判断一个…

数据持久化第七课-URL重写与Ajax

数据持久化第七课-URL重写与Ajax 一.预习笔记 1.URL重写(对网页地址进行保护) 首先编写module,实现对网络地址的处理 其次就是module的配置 最后验证url重写技术 2.Ajax数据交互 编写后端响应数据 处理跨域的配置问题 运行项目得到后端响应数据的地址 编写前端ajax进行数据请…

【Python】 如何优雅地终止 Python 中的线程

基本原理 在 Python 中&#xff0c;线程&#xff08;Thread&#xff09;是一种执行并行计算的基本单位。然而&#xff0c;有时候我们需要在特定条件下终止一个正在运行的线程。Python 的标准库 threading 并没有提供直接终止线程的方法&#xff0c;因为强制终止线程可能会导致…

AC 800PEC 高性能控制系统GFD563A101 3BHE046836R0101

AC 800PEC 控制系统对于大功率整流器应用具有极快控制算法的高性能应用 –快速控制的周期时间范围为100 μs(微秒) 长期操作瞬变的循环至秒-要求专用控制设备。这就是为什么我们设计了AC 800PEC&#xff0c;扩展ABB著名的自动化技术来处理高速电力电子等过程的算法应用程序。 …

github有趣项目:Verilog在线仿真( DigitalJS+edaplayground)

DigitalJS https://github.com/tilk/digitaljs这个项目是一个用Javascript实现的数字电路模拟器。 它旨在模拟由硬件设计工具合成的电路 像 Yosys&#xff08;这里是 Github 存储库&#xff09;&#xff0c;它有一个配套项目 yosys2digitaljs&#xff0c;它可以转换 Yosys 将文…

汽车IVI中控开发入门及进阶(二十四):杰发科技AC8015

前言: 在此之前的大部分时间,四维图新更多的是以图商的身份在业内出现,但现在四维图新图商之外的技术积累提现在了杰发科技身上,或者是从图商到汽车智能化一体解决方案供应商的角色转变。汽车智能化,可以简单的归为座舱智能化和智能驾驶两个板块。 随着汽车变得越来越智能…

04.docker的主要组成部分

docker体验 docker是传统的CS架构分为docker client和docker server,跟mysql一样 查看版本命令&#xff1a;docker version 查看docker下载的是社区版,ce代表社区 rpm -qa |grep docker 查看docker系统命令 docker system docker info&#xff08;如果要做监控&#xff…

13. 《C语言》——【strlen函数的使用和模拟实现】

文章目录 前言strlen函数strlen函数的使用strlen函数的3种方法实现方法1方法2方法3 总结 前言 各位老板好~ &#xff0c; 今天我们讲解strlen函数如何去使用以及如何去模拟实现strlen函数。希望各位老板能够给一个点赞和一个大大的关注&#xff0c;感谢各位老板&#xff01;str…

【翻译软件】CopyTranslator复制即翻译的外文辅助阅读翻译软件NO.102

使用平台&#xff1a;Windows/Linux/macOS 设置里选择翻译引擎和翻译API&#xff0c;谷歌翻译已经退出中国了&#xff0c;但还是提供了镜像地址 一、复制即翻译 只需要复制文本到剪贴板&#xff0c;就可以查看翻译结果 记得开启“自动粘贴”哦。 二、多段同时翻译 三、智能…

第二证券炒股知识:短线炒股技巧?

在股票商场上&#xff0c;出资者分为长线和短线这两大类&#xff0c;其中短线炒股存在以下技巧&#xff1a; 1、早盘集合竞价时刻上的技巧 早上集合竞价对短线出资者来说比较重要&#xff0c;其中早上集合竞价期间9&#xff1a;15-9:20之间出资者可以进行撤单操作&#xff0c…

新项目来了,JDK 17和JDK 21 该如何选择?

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

【机器学习数据挖掘】基于ARIMA 自回归积分滑动平均模型的销售价格库存分析报告 附完整python代码

资源地址&#xff1a;Python数据分析大作业 4000字 图文分析文档 销售分析 完整python代码 ​ 完整代码分析 同时销售量后1000的sku品类占比中&#xff08;不畅销产品&#xff09;如上&#xff0c;精品类产品占比第一&#xff0c;达到66.7%&#xff0c;其次是香化类产品&#…