需求
我要测试系统自动删除文件,以保持系统的磁盘,一直保持在设定值之下。
首先,我不可能一直关注这数据数量。因为数量是动态变化的,系统的文件夹里的文件会不断增加,删除之后会减少。所以我需要设计一个程序,来帮助我完成测试。
设计思路
1、连接Linux
2、在Linux下执行文件的统计指令
3、将数据写到csv文件里
4、将得到的数据画成图表(该部分可通过Excle完成)
代码设计
import paramiko
import csv
import time
class Lniux_SSH_Handle():
def __init__(self,hostname,port,username,password):
# 创建SSH对象
self.client = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
self.client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
self.client.connect(hostname=hostname, port=port, username=username, password=password)
#SSH连接服务器,用于命令执行
def run(self, commands):
stdin, stdout, stderr = self.client.exec_command(commands)
result = stdout.read()
return result
def close(self):
self.client.close()
print("start test")
while True:
# for i in range(5):
handle = Lniux_SSH_Handle(hostname="10.12.1.222", port=22, username="root", password="openailab")
result01 = handle.run(commands = 'cd /home/oas/file/upload/deviceData;ls -lR|grep "^-"| wc -l;date "+%Y-%m-%d %H:%M:%S"')
result02 = handle.run(commands = 'cd /home/oas/file/upload/labelData;ls -lR|grep "^-"| wc -l;date "+%Y-%m-%d %H:%M:%S"')
time.sleep(2)
handle.close()
deviceData = result01.decode().split('\n')
labelData = result02.decode().split('\n')
# print(deviceData[1],deviceData[0])
# print(labelData[1],labelData[0])
deviceDatrows = [[deviceData[1],deviceData[0]]]
labelDatrows = [[labelData[1],labelData[0]]]
with open(r'D:\360MoveData\Users\lenovo\Desktop\deviceData.csv','a+', newline='')as f:
f_csv = csv.writer(f)
f_csv.writerows(deviceDatrows)
with open(r'D:\360MoveData\Users\lenovo\Desktop\labelData.csv','a+', newline='')as f:
f_csv = csv.writer(f)
f_csv.writerows(labelDatrows)
time.sleep(3)
运行情况
将结果通过excle制作成图表:
如图,便是该文件夹下面的文件数量变化。每一次下降,都是达到阈值之后,对文件进行了删除。