前言:
我们可以看出FinalShell是用Java写的,具体怎么看出来的,不能光看界面logo是Java的logo,还要进它的安装目录下进行查看是否真是用Java编写的!!!
具体查看如下:
查看finalshell的安装路径:
上面红框的就是安装后的路径!!!C:\Users\10501\AppData\Local\finalshell
这个不就是Java的运行时环境嘛!!!
正题:
FinalShell界面左侧为什么能够监测系统指标动态变化的原理:
我们在使用FinalShell的时候,登录成功linux操作系统后,左侧会出现动态的监测数据的展示,那是为什么它能做出来呢?到底是怎么做到的呢?下面我就给大家剖析一下!!!
首先先看一下我说的情况,如下图所示:
下面开始分析:
pstree命令查看进程树:
为什么会有top、sleep、sftp-server进程呢,我什么都没有启动,top命令我也没有运行,为什么会出现呢,咱接着往下看。
ps aux | grep bash来进行过滤出bash进程的显示:
上图可以看出有几个命令:
free
df
sleep 1
cat /proc/net/dev
这些都是看系统监控指标的,当然sleep 1不是哈!!!
我们可以复制那块指令,运行一下 :
这个是一次命令集执行结果,但是为什么每次ps aux | grep bash的时候都会显示呢????
查看多次命令展示:
一直显示就是左侧动态展示的原理:
下面用python展示ssh实现动态系统指标展示的原理:
# ---encoding:utf-8---
# @Time : 2023/6/5 19:31
# @Author : CBAiotAigc
# @Email :1050100468@qq.com
# @Site :
# @File : python实现ssh连接;解密finalshell左侧监测数据动态变换的原理.py
# @Project : NLP
# @Software: PyCharm
import paramiko
import time
def ssh_cmds():
ssh = paramiko.SSHClient()
# 设置校验
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接登录
ssh.connect("192.168.56.100", 22, "aigc", "root")
# 执行命令
while True:
stdin, stdout, stderr = ssh.exec_command(
'bash -c export LANG="en_US";export LANGUAGE="en_US";export LC_ALL="en_US";free;echo aigc_finalshell_separator;uptime;echo aigc_finalshell_separator;cat /proc/net/dev;echo aigc_finalshell_separator;df;echo aigc_finalshell_separator;sleep 1;free;echo aigc_finalshell_separator;uptime;echo aigc_finalshell_separator;cat /proc/net/dev;echo aigc_finalshell_separator;df;echo aigc_finalshell_separator;')
exec_cmd_result = stdout.read()
print(exec_cmd_result.decode("utf-8"))
if __name__ == '__main__':
ssh_cmds()
运行结果:
这样就一直不停的拿到了指标的结果!
再次运行起上面的代码,然后在finalshell里查看ps aux | grep bash:
上面的命令执行结果,第一个是finalshell发送远程ssh连接执行的结果,第二个红框是我的python代码连接ssh运行命令的结果。
这样就达到了目的!!!