我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python 运行nmon使用说明

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python 运行nmon使用说明

python 运行nmon使用说明

第一步:
安装:paramiko
window安装方法:pip install paramiko

参考:http://www.jb51.net/article/97655.htm
第二步:
以下代码包含发送命令与下载单个文件与目录文件下的所有;
缺点是没有写出多进程方式执行;
#coding=utf-8
import paramiko,time,threading
import os, sys,shutil
from stat import *

def get_year_mon_day_hour_min_sec():
time_array = time.localtime()
result= "%s:%s:%s:%s:%s:%s" %(time_array.tm_year,time_array.tm_mon,time_array.tm_mday,time_array.tm_hour,time_array.tm_min,time_array.tm_sec)
return result

def get_year_mon_day():
time_array = time.localtime()
result= u"%s年 %s月%s日" %(time_array.tm_year,time_array.tm_mon,time_array.tm_mday)
return result

def get_hour_min_sec():
time_array = time.localtime()
result= u"%s : %s : %s " %(time_array.tm_hour,time_array.tm_min,time_array.tm_sec)
return result

def get_y_m_d_h_ms():
import datetime
result = datetime.datetime.now().strftime("%Y
%m%d%H%M%S_")
return result

class Linux(object):

def __init__(self, ip, username, password, port=22,timeout=30):
    self.ip = ip
    self.username = username
    self.password = password
    self.port = port
    self.timeout = timeout
    # transport和chanel
    self.t = ''
    self.chan = ''
    # 链接失败的重试次数
    self.try_times = 3

# 调用该方法连接远程主机
def connect(self):
    transport = paramiko.Transport((self.ip, self.port))
    transport.connect(username=self.username, password=self.password)
    self.__transport = transport

# 断开连接
def close(self):
    self.__transport.close()

# 发送要执行的命令
def send(self, command):
    self.connect()
    ssh = paramiko.SSHClient()
    ssh._transport = self.__transport
    # 执行命令
    stdin, stdout, stderr = ssh.exec_command(command)
    # 获取命令结果
    result = stdout.read()
    print result
    self.close()

# get单个文件
def sftp_get(self, remotefile, localfile):
    t = paramiko.Transport(sock=(self.ip, self.port))
    t.connect(username=self.username, password=self.password)
    sftp = paramiko.SFTPClient.from_transport(t)
    sftp.get(remotefile, localfile)
    print '下载完成'
    t.close()

# put单个文件
def sftp_put(self, localfile, remotefile):
    t = paramiko.Transport(sock=(self.ip, self.port))
    t.connect(username=self.username, password=self.password)
    sftp = paramiko.SFTPClient.from_transport(t)
    sftp.put(localfile, remotefile)
    print "上传成功"
    t.close()

# ------获取远端linux主机上指定目录及其子目录下的所有文件------
def __get_all_files_in_remote_dir(self, sftp, remote_dir):
    # 保存所有文件的列表
    all_files = list()

    # 去掉路径字符串最后的字符'/',如果有的话
    if remote_dir[-1] == '/':
        remote_dir = remote_dir[0:-1]

    # 获取当前指定目录下的所有目录及文件,包含属性值
    files = sftp.listdir_attr(remote_dir)
    for x in files:
        # remote_dir目录中每一个文件或目录的完整路径
        filename = remote_dir + '/' + x.filename
        # 如果是目录,则递归处理该目录,这里用到了stat库中的S_ISDIR方法,与linux中的宏的名字完全一致
        if S_ISDIR(x.st_mode):
            all_files.extend(self.__get_all_files_in_remote_dir(sftp, filename))
        else:
            all_files.append(filename)
    return all_files

# ------获取本地指定目录及其子目录下的所有文件------
def __get_all_files_in_local_dir(self, local_dir):
    # 保存所有文件的列表
    all_files = list()

    # 获取当前指定目录下的所有目录及文件,包含属性值
    files = os.listdir(local_dir)
    for x in files:
        # local_dir目录中每一个文件或目录的完整路径
        filename = os.path.join(local_dir, x)
        # 如果是目录,则递归处理该目录
        if os.path.isdir(x):
            all_files.extend(self.__get_all_files_in_local_dir(filename))
        else:
            all_files.append(filename)
    return all_files

#获取本地指定目录及其子目录下的所有文件
def sftp_put_dir(self, local_dir, remote_dir):
    t = paramiko.Transport(sock=(self.ip, self.port))
    t.connect(username=self.username, password=self.password)
    sftp = paramiko.SFTPClient.from_transport(t)

    # 去掉路径字符穿最后的字符'/',如果有的话
    if remote_dir[-1] == '/':
        remote_dir = remote_dir[0:-1]

    # 获取本地指定目录及其子目录下的所有文件
    all_files = self.__get_all_files_in_local_dir(local_dir)
    # 依次put每一个文件
    for x in all_files:
        filename = os.path.split(x)[-1]
        remote_filename = remote_dir + '/' + filename
        print u'Put文件%s传输中...' % filename
        sftp.put(x, remote_filename)

# 获取远端linux主机上指定目录及其子目录下的所有文件
def sftp_get_dir(self, remote_dir, local_dir):
    t = paramiko.Transport(sock=(self.ip, self.port))
    t.connect(username=self.username, password=self.password)
    sftp = paramiko.SFTPClient.from_transport(t)

    # 获取远端linux主机上指定目录及其子目录下的所有文件
    all_files = self.__get_all_files_in_remote_dir(sftp, remote_dir)
    # 依次get每一个文件
    for x in all_files:
        filename = x.split('/')[-1]
        local_filename = os.path.join(local_dir, filename)
        print u'Get文件%s传输中...' % filename
        sftp.get(x, local_filename)

#文件分离
def copy_file(self, base_file_path):
    file_list = os.listdir(base_file_path)
    s = set()
    for i in file_list:  # 取文件名中的年月日,存set去重
        data = i.split('_')[:3]
        d = ''
        for j in data:
            d = d + j + "_"
        s.add(d)
    base_path = os.path.dirname(base_file_path)  # 取基础文件的父目录
    for i in s:
        path = os.path.join(base_path, i)  # 拼路径(基础文件的父目录+以年月日命名的文件名)
        if not os.path.exists(path):
            os.mkdir(r'%s\%s' % (base_path, i))  # 新建文件,以年月日命名
        for j in file_list:
            if i in j:
                new_path = os.path.join(path, j)
                file_path = os.path.join(base_file_path, j)
                shutil.copyfile(file_path, new_path)  # 复制文件
    print('复制完成!!')

if name=='main':

try:
    with open('ip.list', 'r') as file:
        for line in file.readlines():
            ip = str(line.split(':')[0])
            host_address = ip.replace('.','_')
            username = str(line.split(':')[1])
            password = str(line.split(':')[2])
            cmds = (line.split(':')[3:-1])
            print "########"+ip+"######"+get_year_mon_day()+""+get_hour_min_sec()+"#####"
            host = Linux(ip, username, password)
            host.send("cd /home/nmon;./nmon -f -t -r -test_3_19 -s 5  -c 10 -F "+get_y_m_d_h_m_s()+""+host_address+".nmon  -m ../nmon_results;cd ../nmon_results;ls -l") #735

            #删除
            #host.send("cd sysinfo_nmon;rm -rf *;ls -l") #cd sysinfo_nmon;rm -rf *;ls -l

            #host.sftp_get_dir(remote_path, local_path)

            # 将远端的xxoo.txt get到本地,并保存为ooxx.txt
            #host.sftp_get(remote_path, local_path)
            #host.sftp_get_dir(remote_path, local_path)

except:
    print u"请查看数据是否下载完成!!"
end_time = time.time()

# 将本地的xxoo.txt put到远端,并保持为xxoo.txt
# host.sftp_put(localfile, remotefile)
# 将远端remote_path目录中的所有文件get到本地local_path目录
# host.sftp_get_dir(remote_path, local_path)
# 将本地local_path目录中的所有文件put到远端remote_path目录
# host.sftp_put_dir(remote_path, local_path)

ip.list文件文件格式:

运行结果:

补充说明
用户名需要有可执行权限,否则失败。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python 运行nmon使用说明

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python 运行nmon使用说明

python 运行nmon使用说明第一步:安装:paramikowindow安装方法:pip install paramiko参考:http://www.jb51.net/article/97655.htm第二步:以下代码包含发送命令与下载
2023-01-31

Python运算符说明

Python运算符说明运算符说明lambdalambda表达式or布尔“或”and布尔“与”not x布尔“非”in,not in成员测试is,is not同一性测试<,<=,>,>=,!=,==比较运算符|按位或^按位异或&按位与<<,>
2023-01-31

Python sys 使用说明

获取linux下python的路径,以及执行python时使用的参数。代码如下: #!/usr/bin/python # -*- encoding:utf-8 -*- # time:2012-07-06 import sys;   prin
2023-01-31

如何进行bapi_acc_document_post使用说明

如何进行bapi_acc_document_post使用说明,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。bapi_acc_document_post使用说明bapi_ac
2023-06-04

window.dialogArguments 使用说明

window.dialogArguments 使用说明,需要的朋友可以参考下。
2022-11-21

Python-apply(lambdax:)的使用及说明

这篇文章主要介绍了Python-apply(lambdax:)的使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-01

z3py使用说明

http://z3prover.github.io/api/html/z3.html http://www.cs.tau.ac.il/~msagiv/courses/asv/z3py/guide-examples.htm 学习
2023-01-31

使用Python脚本对GiteePages进行一键部署的使用说明

本次系统环境os: Deepin(Linux) Python: 3.7 lib: PyYAML=5.3.1 | selenium=3.141.0 extend_driver: chromedriver使用说明 参数 Python脚本和con
2022-06-02

python numpy.linalg.norm函数的使用及说明

这篇文章主要介绍了python numpy.linalg.norm函数的使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-05

Android ContentResolver使用说明

Android是如何实现应用程序之间数据共享的?一个应用程序可以将自己的数据完全暴露出去,外界更本看不到,也不用看到这个应用程序暴露的数据是如何存储的,或者是使用数据库还是使用文件,还是通过网上获得,这些一切都不重要,重要的是外界可以通过这
2022-06-06

Xilinx URAM使用说明

Xilinx URAM(Ultra RAM)是一种高性能、低延迟的存储器资源,用于在Xilinx FPGA器件中实现大容量的存储和高带宽的存储访问。以下是使用Xilinx URAM的一般步骤:1. 在Vivado设计工具中创建一个新的工程,
2023-09-23

RCMD的使用说明

这篇文章主要介绍“RCMD的使用说明”,在日常操作中,相信很多人在RCMD的使用说明问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”RCMD的使用说明”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!*****
2023-06-08

Python NumPy中diag函数的使用说明

NumPy包中的内置diag函数很有意思。 假设创建一个1维数组a,和一个3*3数组b:import numpy as np a = np.arange(1, 4) b = np.arange(1, 10).reshape(3, 3)结果如
2022-06-02

python scipy 稀疏矩阵的使用说明

稀疏矩阵格式 coo_matrixcoo_matrix 是最简单的稀疏矩阵存储方式,采用三元组(row, col, data)(或称为ijv format)的形式来存储矩阵中非零元素的信息。 在实际使用中,一般coo_matrix用来创建矩
2022-06-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录