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")
未完待续