通过paramiko模块在远程主机上执行命令
安装paramiko模块
/usr/local/python36/bin/pip3 install paramiko
1、获取cpu使用率
#!/usr/bin/python
#coding=utf8
#target: get the cpu's used of remote linux system import paramiko def getlinux(ssh):
# get the result of executing command
stdin, stdout, stderr = ssh.exec_command(r"sar 2 3|awk 'END{print (100-$NF)*100}'")
# judge if there is any error
err = stderr.readlines()
if len(err) > 0:
return err
else:
stdout_content = stdout.readlines()
result = stdout_content
if len(result) == 0:
print("there is something wrong when executing sar command")
else:
return round(float(result[0].strip()),2) if __name__ == '__main__':
# create ssh object
ssh = paramiko.SSHClient()
# connect target host by ssh
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname="192.168.223.136",port=22,username="root",password="redhat")
# get the result of target host
result = getlinux(ssh)
# close ssh connection
ssh.close()
print(str(result)+"%s used")
2、获取内存使用率
#!/usr/bin/python
#coding=utf8
#target: get the memory's used of linux system import paramiko def getlinux(ssh):
# executing command
stdin, stdout, stderr = ssh.exec_command(r"free -m|awk 'NR==2{print (($3 - $6 - $7)/$2)*100}'")
err = stderr.readlines()
if len(err) > 0:
return err
else:
stdout_content = stdout.readlines()
result = stdout_content
if len(result) == 0:
print("there is something wrong when executing free -m")
else:
return round(float(result[0].strip()),2) if __name__ == '__main__':
# create ssh object
ssh = paramiko.SSHClient()
# connect target host by ssh
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname="192.168.223.136",port=22,username="root",password="redhat")
result = getlinux(ssh)
ssh.close()
print(str(result)+"% used")
3、获取磁盘使用率:
#!/usr/bin/python
#coding=utf8
#target: get the used of disk import paramiko def getlinux(ssh):
stdin, stdout, stderr = ssh.exec_command(r"df -h|awk 'NR > 1{if($1==$NF){print $1}else{print $0}}'")
err = stderr.readlines()
if len(err) > 0:
return err
else:
stdout_content = stdout.readlines()
result = stdout_content
if len(result) == 0:
print("there is something wrong when executing command")
else:
return result if __name__ == '__main__':
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname="192.168.223.136",port=22,username="root",password="redhat")
result = getlinux(ssh)
ssh.close()
for i in result:
print("the used of %s has used %s" % (i.strip().split()[5],i.strip().split()[4]))
通过paramiko模块在远程主机上执行命令的更多相关文章
- Python3学习之路~9.1 paramiko模块:实现ssh执行命令以及传输文件
我们一般使用linux的时候,都是在Windows上安装一个ssh客户端连接上去.那么从一台linux如何连接到另一条linux呢?使用ssh命令即可,因为每台linux机器自己都有一个ssh客户端. ...
- ansible 批量在远程主机上执行命令
ansible 和 saltstack 都是为了同时在多台主机上执行相同的命令, 但是 salt配置麻烦,ansible基本不用配置, ansible 通过ssh来连接并控制被控节点 1. 安装 第一 ...
- ansible使用shell模块在受控机上执行命令(ansible2.9.5)
一,ansible的shell模块和command模块的区别? shell模块:在远程主机上执行主控端发出的shell/python脚本 command模块:不能调用shell指令,没有bash的环境 ...
- 【Shell实战】批量在多台服务器上执行命令
功能说明:批量在多台服务器上执行命令 #!/bin/bash # ========================================== # 功能:批量在多台服务器上执行命令 # 方法: ...
- expect实现远程主机自动执行命令脚本
2014年第一个脚本,哈哈!!! expect实现远程主机自动执行命令脚本: #!/usr/bin/expect -- if { [llength $argv] < 4 } { puts &qu ...
- 【Python】模块学习之使用paramiko连接Linux,远程执行命令,上传下载、文件
本文主要介绍paramiko远程执行linux命令,及在服务器上进行文件的上传.下载 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. ...
- linux免交互登陆远程主机并执行命令(密钥对和Expect)
原文章摘自:http://lizhenliang.blog.51cto.com/7876557/1607723/ Linux下实现免交互登陆一般有两种: 1. SSH无密码认证方式 客户端使用ssh- ...
- ssh在本地调用远程主机上的命令,不登录远程主机shell
需求描述: 在实际shell脚本的编写过程中,需要通过ssh远程执行一个命令,并返回执行的结果 简单来说,就是将命令发送到远程的主机上进行执行,但是并没有实际的登录到远程主机上.即通过 ssh的方式本 ...
- Ubuntu 上 执行命令 java -version 显示 没有那个文件或目录
解决方法 执行 which java 发现默认java目录:/usr/bin/java . 查看 JAVA_HOME 路径:$JAVA_HOME,得到 /usr/local/java/jdk1.7.0 ...
随机推荐
- if...else if...else和switch语句的注意点
java if...else if...else 语句 if 语句后面可以跟 elseif…else 语句,这种语句可以检测到多种可能的情况. 使用 if,else if,else 语句的时候,需要注 ...
- 160314、MVC设计模式
MVC的由来 精彩内容 MVC模式最早由Trygve Reenskaug在1978年提出 ,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设 ...
- 制作item和category的mvc视图总结
View层index.phg 代码: <?php use yii\helpers\Html; use yii\grid\GridView; use yii\widgets\Pjax; use f ...
- Vue1.x 到Vue2.0的一个变化
小弟初来乍到,写的不好的地方还望指正.谢谢各位! 废话不多说 进入正题: Vue1.x到2.0的一个变化 1. 在每个组件模板,不在支持片段代码 组件中模板: 之前: <templa ...
- Zipline入门教程
Zipline Beginner Tutorial Basics 基础 Zipline is an open-source algorithmic trading simulator written ...
- CMDB实现的四种方式
第一种(agent): 这种方式是通过向每一台服务器安装agent脚本,然后通过中控机的API,来收集所需要的数据,最后放到数据库中,在通过web的方式显示出来. 实现流程图: 1.录入资产(主机名, ...
- Python(并发编程进程)
并发编程 二.多进程 要让Python程序实现多进程(multiprocessing),我们先了解操作系统的相关知识. Unix/Linux操作系统提供了一个fork()系统调用,它非常特殊.普通的函 ...
- app-framework学习--Scroller
Scroller 这个插件同意你创建一个可滚动区域.我们使用的JavaScript滚轮,除非该设备支持 - WebKit的溢出卷轴:触摸.它有很多修复Android版<3和iOS原生的滚动. 创 ...
- Spring Bean声明周期
Bean的生命周期 理解Spring Bean的生命周期很容易.当一个bean被实例化时,它可能需要执行一些初始化使它转换成可用状态.同样,当bean不再需要,并且从容器中移除时,可能需要做一些清除工 ...
- C#线程池ThreadPool
线程池可以看做容纳线程的容器: 一个应用程序最多只能有一个线程池: 设置线程数量ThreadPool.SetMaxThreads(initDownCardThreadPool, maxDownCard ...