python SSH模块paramiko的使用

python的paramiko模块是一个远程ssh操作服务器的很好的模块
安装paramiko很简单,pip install paramiko就搞定了,其依赖库会被一并安装。
paramiko的官网:http://www.paramiko.org/
paramiko模块提供了ssh及sft进行远程登录服务器执行命令和上传下载文件的功能

一、一个简单的ssh连接并执行一个命令
#!/usr/bin/env python
# -*- coding:utf-8 -*-import paramiko

# 指定本地的RSA私钥文件
# 本地公钥id_rsa.pub需要在被登录服务器的authorized_keys之中
pkey = paramiko.RSAKey.from_private_key_file('/home/db_sysop/.ssh/id_rsa')
# 建立连接
ssh = paramiko.SSHClient()
# 如果不使用ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy),且 known_hosts 中没有主机信息就会报错
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy)
ssh.connect(hostname='192.168.1.23',
            port=5022,
            username='gs_sysop',
            pkey=pkey)

# 执行命令
stdin, stdout, stderr = ssh.exec_command('whoami')
# 结果放到stdout中,如果有错误将放到stderr中
result = stdout.read()
if not result:
    result = stderr.read()
print(result)
# 关闭连接
ssh.close()

二.函数封装ssh连接

import paramiko

pkey = paramiko.RSAKey.from_private_key_file('/home/db_sysop/.ssh/id_rsa')

def ssh_cmd(ip,port,username,pkey,cmd):
    try:

        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(ip,port,username,pkey,timeout=5)
        stdin,stdout,stderr = ssh.exec_command(cmd)
        result_ssh_cmd = stdout.read()
        if not result_ssh_cmd:
            result_ssh_cmd = stderr.read()
        print (result_ssh_cmd)
        ssh.close()
    except :
        print('%s Error\n' %(ip))

ssh_cmd("192.168.1.23",5022,"gs_sysop",pkey,"ls")
# ssh_cmd("192.168.1.23",5022,"gs_sysop",pkey,"ls && cd /home/ && ls")

未完待续

posted @ 2020-11-20 17:45  菠菜不要香菜  阅读(267)  评论(0编辑  收藏  举报