python3+paramiko实现ssh客户端
一、程序说明
ssh客户端实现主要有以下四个问题:
第一个问题是在python中ssh客户端使用哪个包实现----我们这里使用的是paramiko
第二个问题是怎么连接服务器----连接服务器直接使用connect()函数就可以了,有个坑是不在known_hosts文件中的机器默认不允许连接需要处理一下
第三个问题是连上之后怎么执行命令----连上之后直接用exec_command()函数就可以执行命令
第四个问题是怎么读取命令执行结果----exec_command()函数会返回函数执行结果,用一个参数接收一下就可以了
我们这里整个整序的流程是:
使用用户名密码登录主机----如果登录成功则执行whoami命令----打印whoami命令结果----退出ssh会话
二、程序源代码
import logging
import sys
from paramiko import AuthenticationException
from paramiko.client import SSHClient, AutoAddPolicy
from paramiko.ssh_exception import NoValidConnectionsError class MySshClient():
def __init__(self):
self.ssh_client = SSHClient() # 此函数用于输入用户名密码登录主机
def ssh_login(self,host_ip,username,password):
try:
# 设置允许连接known_hosts文件中的主机(默认连接不在known_hosts文件中的主机会拒绝连接抛出SSHException)
self.ssh_client.set_missing_host_key_policy(AutoAddPolicy())
self.ssh_client.connect(host_ip,port=22,username=username,password=password)
except AuthenticationException:
logging.warning('username or password error')
return 1001
except NoValidConnectionsError:
logging.warning('connect time out')
return 1002
except:
logging.warning('unknow error')
print("Unexpected error:", sys.exc_info()[0])
return 1003
return 1000 # 此函数用于执行command参数中的命令并打印命令执行结果
def execute_some_command(self,command):
stdin, stdout, stderr = self.ssh_client.exec_command(command)
print(stdout.read().decode()) # 此函数用于退出登录
def ssh_logout(self):
logging.warning('will exit host')
self.ssh_client.close() if __name__ == '__main__':
# 远程主机IP
host_ip = '192.168.220.129'
# 远程主机用户名
username = 'root'
# 远程主机密码
password = 'toor'
# 要执行的shell命令;换成自己想要执行的命令
# 自己使用ssh时,命令怎么敲的command参数就怎么写
command = 'whoami'
# 实例化
my_ssh_client = MySshClient()
# 登录,如果返回结果为1000,那么执行命令,然后退出
if my_ssh_client.ssh_login(host_ip,username,password) == 1000:
logging.warning(f"{host_ip}-login success, will execute command:{command}")
my_ssh_client.execute_some_command(command)
my_ssh_client.ssh_logout()
参考:
http://docs.paramiko.org/en/2.4/api/client.html
python3+paramiko实现ssh客户端的更多相关文章
- python SSH客户端的交互式和非交互方式
使用python中有一个paramiko模块来实现python SSH客户端,与SSH服务器交互时,需要注意有交互式和非交互式的区别. 只执行单条命令,之后就断开链接,可以使用非交互方式.执行多条命令 ...
- paramiko与ssh
一.paramiko模块的安装 paramiko模块依赖PyCrypto模块,而PyCrypto需要GCC库编译,不过一般发行版的源里带有该模块.这里以centos6为例,直接借助以下命令可以直接完成 ...
- Python—实现ssh客户端(连接远程服务器)
paramiko是一个基于SSH用于连接远程服务器并执行相关操作(SSHClient和SFTPClinet,即一个是远程连接,一个是上传下载服务),使用该模块可以对远程服务器进行命令或文件操作,值得一 ...
- Python编写的ssh客户端[类似putty]
转载请注明出处:http://blog.csdn.net/jmppok/article/details/17588381 windows下可以通过putty以ssh方式连接linux主机.但putty ...
- python3 Paramiko模块学习
简介 ssh是一个协议,OpenSSH是其中一个开源实现,paramiko是Python的一个库,实现了SSHv2协议(底层使用cryptography). 有了Paramiko以后,我们就可以在Py ...
- visualssh 是一个可视化的ssh客户端
这两个周末写了visualssh,一个可视化的ssh客户端.里面集成了putty的功能,通过ssh协议与Linux server通讯. 以后可以针对不同的应用编写相关插件,便于管理Linux服务器上的 ...
- windows 下ssh 客户端
今天用 xshell 和 bitvise ssh 在 windows 登录SSH ,发现 vi 一些中文内容的文件会出现乱码,配置无效,在网上找到一款不会中文乱码的SSH客户端 MobaXterm , ...
- 关于Mac下的SSH客户端iterm2等配置
linux后台开发的同学们晓得,在windows下有xshell\securecrt这样优秀的ssh客户端软件.mac下查找了下,有securecrt mac版,网上也有破解的,试用了一段时间,一个问 ...
- 好用的SSH客户端 good SSH client recommended
对于经常性地要登录服务器的同志们,选择一款优秀的SSH客户端非常有必要,不仅可以提高效率,而且赏心悦目,宅的几率更大.呵呵,我就是i一枚.很出名的就是PuTTY(Windows,Linux都有的), ...
随机推荐
- 基于 Python 和 Pandas 的数据分析(2) --- Pandas 基础
在这个用 Python 和 Pandas 实现数据分析的教程中, 我们将明确一些 Pandas 基础知识. 加载到 Pandas Dataframe 的数据形式可以很多, 但是通常需要能形成行和列的数 ...
- selenium 在电脑浏览器中用手机模式打开
import requests from selenium import webdriver from selenium.webdriver.common.action_chains import A ...
- [转][smart3d]Smart3D之手动配置 S3C 索引加载全部的OSGB瓦片数据
转自:https://blog.csdn.net/u013719339/article/details/77840728/ 一.须知: S3C是Smart3D内部格式,实质上是一个分块模型的索引,可以 ...
- pom.xml文件
最近在了解maven创建的工程,拿到服务器的一段代码一直报错,是maven的pom.xml文件出错了,但是不知道是什么原因,所以就想知道pom.xml文件的作用及内容. 什么是POM? POM是项目对 ...
- Spring分布式事务实现概览
分布式事务,一直是实现分布式系统过程中最大的挑战.在只有单个数据源的单服务系统当中,只要这个数据源支持事务,例如大部分关系型数据库,和一些MQ服务,如activeMQ等,我们就可以很容易的实现事务. ...
- hybrid cordova+vue开发APP(一) 环境搭建
没有选择react-navite,而选择cordova+vue2.x,是因为react-navite有学习成本,并且cordova+vue2.x程序员 可以直接上手,性能上可以满足需求,成本低,开发速 ...
- MYSQL常用函数(格式化函数)
DATE_FORMAT(date,fmt) 依照字符串fmt格式化日期date值 FORMAT(x,y) 把x格式化为以逗号隔开的数字序列,y是结果的小数位数 INET_ATON(ip) 返 ...
- MyEclipse配置Tomcat服务器(最简单的配置过程)
MyEclipse配置Tomcat服务器比较简单,在这里直接给出简要的配置步骤了,相信大家都能很容易明白…… 1.Window->Preferences 2.根据你的Tomcat版本找到对应的T ...
- Lab 6-2
Analyze the malware found in the file Lab06-02.exe. Questions and Short Answers What operation does ...
- 纯CSS方块转化梯形动画
http://jasonning92.github.io/JasonsBlog/pages/%E7%BA%AFCSS%E6%96%B9%E5%9D%97%E8%BD%AC%E5%8C%96%E6%A2 ...