linux下根据文件名建立目录,根据时间建立文件,存储到linux中,再将linux下的几个目录根据时间名来打包下载到本地...

1.在当前python项目目录下建立work目录,并在其中建立同名文本文档work.txt,在txt文件中写入当前日期的月和日便可

2.链接虚拟机,将刚才写好的work.txt上传到虚拟机/home/目录下,同时将本地的work.txt删除。

3.将Linux上etc目录下的passwd,shadow,group三个文件使用tar命令进行打包,包名为work.txt中的内容加上文件的首字母,例如:0725p.tar.gz,0725s.tar.gz,0725g.tar.gz,将压缩后的三个文件下载到本地work目录

'''importosimportparamikoimportdatetimeimportshutil

classlinux():

def__init__(self,ip,port,user,password,workpath,linuxpath):self.ip=ipself.port=portself.user=userself.password=passwordself.workpath=workpathself.linuxpath=linuxpath

#1.在当前python项目目录下建立work目录,并在其中建立同名文本文档work.txt,在txt文件中写入当前日期的月和日便可defchuangjian(self):

#判断有没有对应文件夹ifos.path.exists(self.workpath):#若是有,就删除该文件shutil.rmtree(self.workpath)print('文件已删除')else:#建立文件夹os.mkdir('work')#进入文件夹os.chdir('work')f=open('work.txt','w')#建立时间s = str(datetime.datetime.now())#将时间写入文件2020-07-27 10:51:09.800656f.write(s[5:7]+s[8:10])

#设置时间print(s[5:7]+s[8:10])

#2.链接虚拟机,将刚才写好的work.txt上传到虚拟机/home/目录下,同时将本地的work.txt删除defshangchuan(self):#获取通道ssh=paramiko.Transport(self.ip,self.port)ssh.connect(username=self.user,password=self.password)p=paramiko.SFTPClient.from_transport(ssh)#判断有没有该文件ifos.path.exists(self.workpath):#读出目录的文件file1= os.listdir(self.workpath)iflen(file1) ==0:print('目录为空..')else:#拼接路径newfile=''.join(file1)#拼接路径 本地路径linux路径p.put(os.path.join(self.workpath,newfile),f'{self.linuxpath}/{newfile}')print('文件已上传.....')os.remove(os.path.join(self.workpath,newfile))

iflen(os.listdir(self.workpath)) ==0:print('本地文件已删除')else:print('删除失败!!!')else:print("本地文件路径错误。。。。。")

# 3.#将Linux上etc目录下的passwd, shadow, group三个文件使用tar命令进行打包,包名为work.txt中#的内容加上文件的首字母,例如:0725# p.tar.gz,0725# s.tar.gz,0725# g.tar.gz,将压缩后的三个#文件下载到本地work目录defxiazai(self):#操做linux死格式ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect(hostname=self.ip,port=self.port,username=self.user,password=self.password)#获取work文件中的月日信息#读出linux中的work.txt文件stdin, stdout, stderr = ssh.exec_command(f'cat{self.linuxpath}/work.txt')time=stdout.read().decode('utf-8')print(time)

#压缩文件----获取压缩后的文件名字#设置个集合存储要压缩的文件名list1=['passwd','shadow','group']#压缩到home下foriinlist1:ssh.exec_command(f'tar -zcvf{self.linuxpath}/{time}{i[0]}.tar.gz /etc/{i}')#输出home下的内容stdin, stdout, stderr = ssh.exec_command(f'cd{self.linuxpath}/;ls')#读出数据allstr = stdout.read().decode('utf-8').replace('\n','')#print(allstr)#0727g.tar.gz0727p.tar.gz0727s.tar.gzlrk1work.txt#将数据分割tarstr = allstr[:12] +','+ allstr[12:24] +','+ allstr[24:36]tarlist = tarstr.split(',')print(tarlist)

#下载#循环名字foriintarlist:#['0727g.tar.gz', '0727p.tar.gz', '0727s.tar.gz']#设置通道s = paramiko.Transport(self.ip, self.port)s.connect(username=self.user, password=self.password)p = paramiko.SFTPClient.from_transport(s)

ifos.path.exists(self.workpath):#下载文件p.get(self.linuxpath+'/'+i,os.path.join(self.workpath,i))print(f'{i}压缩包已下载')else:print('work路径不存在,没法下载到本地')

#调用类方法li=linux('192.168.56.1',22,'root','123456',r'D:\pythoncode\work','/home')# li.chuangjian()第一问,建立文件,写入内容# li.shangchuan()#第二问,上传li.xiazai()#第三问,压缩文件,下载到本地

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值