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

原文地址:https://www.cnblogs.com/lsdb/p/9293410.html

时间: 2024-10-14 17:02:52

python3+paramiko实现ssh客户端的相关文章

python模块paramiko与ssh

paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.paramiko支持Linux, Solaris, BSD, MacOS X, Windows等平台通过SSH从一个平台连接到另外一个平台.利用该模块,可以方便的进行ssh连接和sftp协议进行sftp文件传输. 一.安装 paramiko模块依赖PyCrypto模块,而PyCrypto需要GCC库编译,不过一般发行版的源里带有该模块.centos6,直接借助以下命令可以直接完成安装

python模块paramiko与ssh安装配置教程

一.paramiko模块的安装 paramiko模块依赖PyCrypto模块,而PyCrypto需要GCC库编译,不过一般发行版的源里带有该模块.这里以centos6为例,直接借助以下命令可以直接完成安装:  代码如下 复制代码 # yum install gcc python-crypto python-paramiko python-devel  -y   windows版下可以安装windows版的GCC(MinGW),然后编辑安装pycrypto和paramiko ,下载安成后,直接运行

关于Mac下的SSH客户端iterm2等配置

linux后台开发的同学们晓得,在windows下有xshell\securecrt这样优秀的ssh客户端软件.mac下查找了下,有securecrt mac版,网上也有破解的,试用了一段时间,一个问题始终没有能解决——ssh链接偶尔会断掉.关于这个问题,先说下leby的工作环境吧:我们是不能直接ssh目标主机的,必须用ssh代理中转,于是搭建了一个HTTP的proxy,这之前在windows下xshell工作很好.在mac的scrt下,总是会随机掉线,一些超时配置当然是试过的,不能解决问题.

使用Paramiko实现SSH登陆,文件上传下载

1,SSh登陆命令行实现: #!/usr/bin/env python # encoding: utf-8 import paramiko private_key_path = '/Users/aolens/.ssh/id_rsa' key = paramiko.RSAKey.from_private_key_file(private_key_path) ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.Aut

windows 下ssh 客户端

今天用 xshell 和 bitvise ssh 在 windows 登录SSH ,发现 vi 一些中文内容的文件会出现乱码,配置无效,在网上找到一款不会中文乱码的SSH客户端 MobaXterm ,刚用了下,功能非常多,界面也很友好,同时支持windows cmd 命令和Linux命令.Mark 一下. 下载地址:http://pan.baidu.com/s/1pJP9ZKZ 官网:http://mobaxterm.mobatek.net/download.html

解决linux ssh客户端SSH连接linux服务器很慢的问题

在linux上使用ssh客户端连接另一台的linux服务器时,出现了连接慢的情况.但是换一台客户端去连发现速度正常.推测ssh客户端出现为问题. 于是使用使用ssh -v  IP 调试,果然发现问题.输出如下: [[email protected] ~]# ssh -v 10.60.9.32 OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013 debug1: Reading configuration data /etc/ssh/ssh_config d

Linux-vim与ssh客户端

一.vim使用 Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器. (1)vim安装 (2)vim使用:操作模式  一般模式(默认模式,不能编辑文档,只能查看,按i进入编辑模式)  编辑模式(该模式可以编辑文本,按esc退出,进入到一般模式)  命令模式(在一般模式中按:进入命令模式)  -q:安全退出   -q!:强制退出  -wq:保存退出   -set number:为编辑文本设置行数   -set nonumber:取消行数设

smileShell 一个 ssh客户端工具

小弟心血来潮开发一个ssh客户端工具 http://www.nisonge.cn/detail/blog_id/1 请大家多多指点.

python paramiko模块SSH自动登录linux系统进行操作

1). Linux系统首先要开启SSH服务:service ssh status 如果没安装的话,则要:apt-get install openssh-server service ssh restart 2). pip install paramiko example 1: import paramikossh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect('