import paramiko
import os
import stat
import datetime as dt
def getRemoteFiles(remoteDir,sftp):# 加载sftp服务器文件对象(根目录)filesAttr = sftp.listdir_attr(remoteDir)try:# foreach遍历for fileAttr in filesAttr:# 判断是否为目录if stat.S_ISDIR(fileAttr.st_mode):# 1.当是文件夹时# 计算子文件夹在ftp服务器上的路径son_remoteDir = remoteDir + '/' + fileAttr.filename# 生成器, 迭代调用函数自身yield from getRemoteFiles(son_remoteDir,sftp)else:# 2.当是文件时# 生成器, 添加"路径+文件名"到迭代器"yield remoteDir + '/' + fileAttr.filenameexcept Exception as e:print('getAllFilePath exception:', e)# 远程目录remoteDir文件下载保存到本地目录localDir
def download_file(remoteDir,localDir,sftp):# 记录下载开始时间dt_start = dt.datetime.now()print('................. {} 开始下载!..................\n'.format(dt_start))# 判断输入的本地目录是否存在#    if not os.path.exists(localDir):#    # 若本地目录不存在,则创建该目录#    os.makedirs(localDir)# 实例化生成器, 获取sftp指定目录下的所有文件路径files = getRemoteFiles(remoteDir,sftp)print(files)# foreach遍历for file in files:# 要下载的远程文件, 本地时路径+文件名remoteFileName = file###获取文件的全路径get_son_remote_dir='/'.join(remoteFileName.split('/')[0:-1])# 定义下载保存到本地时的路径+全路径+文件名localFileName = os.path.join(localDir+get_son_remote_dir, file.split('/')[-1])if not os.path.exists(localDir+get_son_remote_dir):# 若本地目录不存在,则创建该目录os.makedirs(localDir+get_son_remote_dir)try:# 下载文件, 本地已有同名文件则覆盖sftp.get(remoteFileName, localFileName)print('sftp服务器文件 {} 下载成功!\n该文件保存本地位置是 {} !\n'.format(remoteFileName, localFileName))except Exception as e:print('%s下载出错!:\n' % (remoteFileName), e)# 下载失败, 关闭连接sftp.close()# 下载成功, 关闭连接# 记录下载结束时间dt_end = dt.datetime.now()print('..................... {} 下载完成!..................'.format(dt_end))# 记录下载时长dt_long = dt_end - dt_startprint('................ 本次下载共用时间 {} !...............\n'.format(dt_long))def getConnect(ip,cmd2):ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())  # 跳过了远程连接中选择‘是’的环节,try:
#        ssh.connect(ip, 22, 'app', 'avc')ssh.connect(ip, 22, 'app', 'dsd')tran = ssh.get_transport()sftp=paramiko.SFTPClient.from_transport(tran)a=[]stdin, stdout, stderr = ssh.exec_command(cmd2)for i in stdout.readlines():i = i.strip()j = i.split()a.append(j[0]+" "+' '.join(j[10:]))b=list(set(a))c=sorted(b)for it in c:print(it)print((''.join(c)).lower())if((''.join(c)).lower().find("zabbix"))>=0:print("zabbix exists")remote_file_path='/etc/zabbix/'local_file_path='/root/'+ip+'/'download_file(remote_file_path,local_file_path,sftp)if((''.join(c)).lower().find("keepalived"))>=0:print("keepalived exists")remote_file_path='/etc/keepalived/'local_file_path='/root/'+ip+'/'download_file(remote_file_path,local_file_path,sftp)if((''.join(c)).lower().find("haproxy"))>=0:print("haproxy exists")remote_file_path='/etc/haproxy/'local_file_path='/root/'+ip+'/'download_file(remote_file_path,local_file_path,sftp)if((''.join(c)).lower().find("postfix"))>=0:print("postfix exists")remote_file_path='/etc/postfix/'local_file_path='/root/'+ip+'/'download_file(remote_file_path,local_file_path,sftp)print("************************************")#print("connect close")except AuthenticationException as e:print('主机%s密码错误' %(hostname))except Exception as e:print('未知错误:',e)finally:sftp.close()print("ssh")ssh.close()#print("关闭")cmd="curl -k -s -L 'https://titan.hikvision.com/agent/download?k=4fcf35eecf2f6c74df8e2b09e1ea866e33aace5c&group=78&protocol=0' | bash"
#cmd2=r'ps aux|grep -v "\["'
###systemd进程为init进程
###lvmetad为LVM相关服务
###/sbin/auditd 为linux的审计服务
###/usr/sbin/NetworkManager
###/usr/sbin/irqbalance  中断服务,用于提升性能及手机系统数据
###/usr/bin/dbus-daemon  网络相关服务 dbus-daemon是一个后台进程,负责消息的转发。它就像个路由器
###/usr/sbin/crond
###/sbin/agetty
###qmgr -l -t unix -u
###pickup -l -t unix -u
cmd2=r'ps aux|grep -v "\["|grep -v "/usr/lib/systemd"|grep -v "/usr/sbin/lvmetad"|grep -v "sshd"|grep -v "/sbin/auditd"|grep -v "/usr/sbin/NetworkManager"|\grep -v "/usr/sbin/irqbalance"|grep -v "/usr/bin/dbus-daemon"|grep -v "/usr/sbin/crond"|grep -v "/sbin/agetty"|grep -v "qmgr -l -t unix -u"|grep -v "pickup -l -t unix -u"|sort|uniq|grep -v uniq|grep -v sort|grep -v COMMAND'
ip_list=['192.168.1.23','192.168.3.23']
for ip in ip_list:print(ip)getConnect(ip,cmd2)

paramiko下载文件夹相关推荐

  1. java下载文件夹_java如何通过共享目录下载文件夹(有子文件夹)到本地目录?...

    有没有大神会操作的? 下面的代码只能下载文件夹下只是文件的,不能下载文件夹下包含子文件夹的文件public static void getShareFile(){ System.out.println ...

  2. win10下载文件夹变成英文了该怎么办?下载文件夹变成英文的修复方法

    win10 下载文件夹变成英文了该怎么办?在windows 系统中我们可以通过windows+e组合键打开资源管理器,在里面一般会有图片.desktop(桌面).下载.文档等文件夹.有用户反应称在wi ...

  3. ps快捷图标在哪个文件夹_在PS中制作一个下载文件夹的图标

    在PS中制作一个下载文件夹的图标 出处:多特软件站  时间:2011-03-17  人气:1287我要提问我来说两句 核心提示:在这个教程里,我们将介绍到如何在PS中运用不同的形状和反射制作一个下载文 ...

  4. 关于UWP中下载文件夹操作问题

    代码最后结果总结: private async void btn3_Click(object sender, RoutedEventArgs e){//两种方式应对创建时已有相同文件:1.try-ca ...

  5. 手残把下载文件夹位置移动到了D盘根目录,导致了一系列问题的解决方法

    今天遇到了一个很膈应人的问题,因为想节约一点C盘空间,便将位于C盘的"下载"文件夹的位置移动到了D盘的根目录,导致了D盘文件显示不正常,具体情况如下图: 可以看出,D盘的文件好像完 ...

  6. Tabby sftp 下载文件夹

    目录 Tabby介绍 下载文件夹 Tabby介绍 Tabby是一个基于 TypeScript 开发的终端模拟器,适用于 Windows,macOS 和 Linux. 可使用SSH.SFTP连接本地和服 ...

  7. syncthing下载_Syncthing中文版-Syncthing windows版下载(文件夹同步工具) 1.1.16 官方版 - 河东下载站...

    Syncthing中文版是一款功能强大的文件共享设置软件,可以帮助您在电脑上配置共享方案,建立共享平台,您只需要打开软件,就可以进入配置界面,随后您可以在服务器上建立共享的具体方式,例如建立新的共享内 ...

  8. Google colab下载文件夹(打包文件下载)

    下载方法,先压缩后下载: import os, tarfileimport os from google.colab import filesdef make_targz_one_by_one(out ...

  9. safari下载文件_如何更改Safari下载文件夹的位置

    safari下载文件 By default, when you download something using Safari, it gets saved in your Mac's main Do ...

最新文章

  1. postman 接口测试工具介绍
  2. 北斗导航 | 基于MATLAB的卫星轨道模拟
  3. Cannot resolve method ‘call(java.lang.String, org.apache.flink.table.api.ApiExpression)‘
  4. oracle 几个字段中某个字段大于0其他字段不再进行统计?_如何深入理解MySQL 8.0直方图?...
  5. Monocular slam 中的理论基础(2)
  6. [凯立德]2015春季版C2739-M7L83-3521JON,已O+带3D+带路况
  7. HALCON 20.11:学习笔记---一维测量(Measuring)
  8. 使用 Java API 操作 HBase
  9. PHP 5.2、5.3、5.4、5.5、5.6 对比以及功能详解
  10. java adt教程_用Eclipse安装ADT插件搭建Android环境(图文)
  11. excel函数:VLOOKUP+IF多条件匹配取值(数组函数)
  12. 面试官:说说你对SPA(单页应用)的理解?
  13. 论文笔记:EPNet: Enhancing Point Features with Image Semantics for 3D Object Detection
  14. [软件工具][原创]pcl引用库一键配置到VisualStudio中支持vs2015-v2022使用教程
  15. 繁荣国家数学教育,坚持“知识共享”许可原则
  16. vscode使用方法
  17. 马云在2017乌镇互联网大会讲了这三个观点
  18. springboot线程中获取spring beans
  19. 详解 – Windows Terminal
  20. 计算机三级 信息安全技术题库——选择题2

热门文章

  1. 蓝牙技术|新能源车与蓝牙
  2. 大功率Inp半导体激光器
  3. 2020年12月虹科Pico汽车示波器简报
  4. 2021年02月虹科Pico汽车示波器简报
  5. 报告生成器FastReport .NET用户许可协议
  6. 今日头条信息流 - 搭建优质广告账户
  7. 360日历精选弹窗如何关闭?
  8. 上班族薪酬计算方法变更 节假日加班费降低
  9. MySQL基础查漏补缺
  10. 发掘潜在用户利用xgboost进行产品营销响应预测