博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
paramiko之ssh用法
阅读量:5122 次
发布时间:2019-06-13

本文共 3756 字,大约阅读时间需要 12 分钟。

import threadingimport paramikoimport subprocessdef ssh_command(ip,user,passwd,command):    client=paramiko.SSHClient()    #client.load_host_keys("filename")使用密钥验证    #设置自动添加和保存ssh服务器的ssh密钥    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())    client.connect(ip,username=user,password=passwd)    ssh_session=client.get_transport().open_session()    if ssh_session.active:        #调用ssh_comand函数运行command        ssh_session.exec_command(command)        a=ssh_session.recv(1024)    return aa=ssh_command("192.168.6.128",'root','123456','ls -lh')print(a.decode("gbk"))

 

基于用户名密码

import paramiko  # 创建SSH对象ssh = paramiko.SSHClient()# 允许连接不在know_hosts文件中的主机ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 连接服务器ssh.connect(hostname='c1.salt.com', port=22, username='wupeiqi', password='123')  # 执行命令stdin, stdout, stderr = ssh.exec_command('df')# 获取命令结果result = stdout.read()  # 关闭连接ssh.close()
View Code

封装transport

import paramikotransport = paramiko.Transport(('hostname', 22))transport.connect(username='wupeiqi', password='123')ssh = paramiko.SSHClient()ssh._transport = transportstdin, stdout, stderr = ssh.exec_command('df')print stdout.read()transport.close()
View Code

 

基于公钥密钥

import paramiko private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa') # 创建SSH对象ssh = paramiko.SSHClient()# 允许连接不在know_hosts文件中的主机ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 连接服务器ssh.connect(hostname='c1.salt.com', port=22, username='wupeiqi', key=private_key) # 执行命令stdin, stdout, stderr = ssh.exec_command('df')# 获取命令结果result = stdout.read() # 关闭连接ssh.close()
View Code

封装

import paramikoprivate_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')transport = paramiko.Transport(('hostname', 22))transport.connect(username='wupeiqi', pkey=private_key)ssh = paramiko.SSHClient()ssh._transport = transportstdin, stdout, stderr = ssh.exec_command('df')transport.close()
View Code

 

基于用户名密码上传下载

import paramiko transport = paramiko.Transport(('hostname',22))transport.connect(username='wupeiqi',password='123') sftp = paramiko.SFTPClient.from_transport(transport)# 将location.py 上传至服务器 /tmp/test.pysftp.put('/tmp/location.py', '/tmp/test.py')# 将remove_path 下载到本地 local_pathsftp.get('remove_path', 'local_path') transport.close()
View Code

基于公钥密钥

import paramiko private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa') transport = paramiko.Transport(('hostname', 22))transport.connect(username='wupeiqi', pkey=private_key ) sftp = paramiko.SFTPClient.from_transport(transport)# 将location.py 上传至服务器 /tmp/test.pysftp.put('/tmp/location.py', '/tmp/test.py')# 将remove_path 下载到本地 local_pathsftp.get('remove_path', 'local_path') transport.close()
View Code

 

 

paramiko封装

 

import paramikoclass SshHelper(object):    def __init__(self,host,port,username,pwd):        self.host = host        self.port = port        self.username = username        self.pwd = pwd        self.transport = None    def connect(self):        transport = paramiko.Transport((self.host, self.port,))        transport.connect(username=self.username, password=self.pwd)        self.transport = transport    def upload(self,local,target):        sftp = paramiko.SFTPClient.from_transport(self.transport)        # 将location.py 上传至服务器 /tmp/test.py        sftp.put(local, target)        # 将remove_path 下载到本地 local_path        # sftp.get('remove_path', 'local_path')    def cmd(self,shell):        ssh = paramiko.SSHClient()        ssh._transport = self.transport        stdin, stdout, stderr = ssh.exec_command(shell)        stdout.read()    def close(self):        self.transport.close()if __name__ == '__main__':    obj = SshHelper('...')    obj.connect()    obj.close()

 

转载于:https://www.cnblogs.com/arthas-zht/p/6569131.html

你可能感兴趣的文章
Tomcat免安装版的环境变量配置以及Eclipse下的Tomcat配置和测试
查看>>
Unity3D性能优化之Draw Call Batching
查看>>
grafana授权公司内部邮箱登录 ldap配置
查看>>
treegrid.bootstrap使用说明
查看>>
[Docker]Docker拉取,上传镜像到Harbor仓库
查看>>
javascript 浏览器类型检测
查看>>
基于easyX的<颜色侵略>小游戏
查看>>
大二下学期软件工程概论总结
查看>>
职业生涯起步不要去顶级公司
查看>>
nginx 不带www到www域名的重定向
查看>>
CruiseControl.NET ----- mail 配置
查看>>
查找工具locate和find
查看>>
时钟抖动对高速ADC采样系统的影响
查看>>
记录:Android中StackOverflow的问题
查看>>
android Handler的使用(一)
查看>>
nginx 学习笔记【持续更新...】
查看>>
ASP.NET方面的一些经典文章收集
查看>>
网段划分
查看>>
gulp入坑系列(1)——安装gulp
查看>>
LFS,编译自己的Linux系统 - 前言
查看>>