返回顶部
首页 > 资讯 > 后端开发 > Python >Python学习—paramiko模块实
  • 195
分享到

Python学习—paramiko模块实

模块Pythonparamiko 2023-01-31 06:01:36 195人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

paramiko模块 paramiko模块提供了ssh及sft进行远程登录服务器执行命令和上传下载文件的功能。这是一个第三方的软件包,使用之前需要安装。 import paramiko # ssh root@ip # 创建一个ssh对象

paramiko模块

paramiko模块提供了ssh及sft进行远程登录服务器执行命令和上传下载文件的功能。这是一个第三方的软件包,使用之前需要安装。

import paramiko

# ssh root@ip
# 创建一个ssh对象
client = paramiko.SSHClient()

#如果第一次连接陌生的IP,自动选择yes确认连接
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接服务器
client.connect(hostname='111.231.215.66',port=22,username='手动屏蔽帐号',passWord='手动屏蔽密码')

# 执行操作
stdin,stdout,stderr = client.exec_command('hostname')

# 获取命令执行结果
host = stdout.read().decode('utf-8').strip()
print(host)

while True:
    command = input("[root@%s]# " %host)
    if command == 'exit()':
        break
    else:
        r = client.exec_command(command)[1].read().decode('utf-8')
        print(r)

# 关闭连接
client.close()

Python学习—paramiko模块实现简单的ssh与sftp

例子1:

连接文件 主机信息.txt 中的所有主机
Python学习—paramiko模块实现简单的ssh与sftp
不能连接返回连接失败,成功连接,返回其主机名
把连接情况写入文件。

import paramiko

client = paramiko.SSHClient()

client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

def ssh_info(ip,port=22,user='root',passwd='westos'):
    try:
        client.connect(hostname=ip,port=port,username=user,password=passwd)
        r = client.exec_command('hostname')[1].read().decode('utf-8')
    except:
        print('连接失败......')
        return '连接失败......'
    else:
        client.close()
        print('连接成功......','\n主机名:%s' %r)
        return '连接成功......'+'\n主机名:%s' %r

with open('连接状况.txt','w') as f,open('主机信息.txt') as p:
    for line in p:
        line = line.strip()
        ip, port, user, passwd = line.split(':')
        s = ' 正在连接%s '.center(30, '+') % ip
        f.write(s+'\n')
        f.write(ssh_info(ip,port,user,passwd)+'\n')

Python学习—paramiko模块实现简单的ssh与sftp

例子2:

基于公钥私钥的批量连接

import paramiko

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

def ssh_info(ip,pkey,port=22,user='root'):
    try:
        print(' 正在连接%s '.center(30, '+') % ip)
        client.connect(hostname=ip,port=port,username=user,pkey=pkey)
        r = client.exec_command('hostname')[1].read().decode('utf-8')
    except:
        print('连接失败......')
    else:
        client.close()
        print('连接成功......','\n主机名:%s' %r)

pkey = paramiko.RSAKey.from_private_key_file('id_rsa')

for i in range(254):
    ip = '172.25.254.'+str(i+1)
    ssh_info(ip,pkey)

例子3:

基于公钥私钥的上传下载

import  paramiko

private_key = paramiko.RSAKey.from_private_key_file('id_rsa')

transport = paramiko.Transport(('172.25.254.39', 22))
transport.connect(username='root',pkey=private_key)
sftp = paramiko.SFTPClient.from_transport(transport)

#上川下载
sftp.put('/tmp/kiOSk', '/mnt/kiosk2')
sftp.get('/mnt/kiosk2', '/home/kiosk/Desktop/day18/kiosk')

transport.close()

paramiko综合练习实例1

import os
import paramiko

group = [file.rstrip('.conf') for file in os.listdir('host')]
print('主机组'.center(30,'+'))
for i,g in enumerate(group):
    print('\t',str(i+1),'\t',g)
choice = input('选择操作组:')

print('主机'.center(30,'+'))
host_info_list = []     # 存储文件中主机信息
file = 'host/'+choice+'.conf'
with open(file) as f:
    for line in f:
        line =line.split(':')
        print('\t',line[0])
        host_info_list.append(line)

def do_cmd(cmd,hostname,port=22, username='root', password='westos'):
    print('连接主机 ',hostname)
    try:
        client.connect(hostname, port, username, password)
        stdin, stdout, stderr = client.exec_command(cmd)
        result = stdout.read().decode('utf-8').strip()
    except:
        print('连接失败......')
    else:
        client.close()
        print(result)

def get_put(cmd,hostname,port=22, username='root', password='westos'):
    print('连接主机 ', hostname)
    try:
        transport = paramiko.Transport((hostname, int(port)))
        transport.connect(username=username, password=password)
        sftp = paramiko.SFTPClient.from_transport(transport)
    except:
        print('连接失败......')
    else:
        # 上川下载
        if cmd[0] == 'put':
            sftp.put(cmd[1], cmd[2])
            print('上传成功......')
        elif cmd[0] == 'get':
            sftp.get(cmd[1], cmd[2])
            print('下载成功......')
        else:
            print('暂时没有这个命令的操作......',cmd[0])
        transport.close()

while True:
    cmd = input('>>>: ')
    cmd = cmd.split()
    if cmd == []:
        continue
    elif len(cmd) == 1:
        client = paramiko.SSHClient()
        client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        for host in host_info_list:
            do_cmd(cmd[0],host[0],host[1],host[2],host[3])
    else:
        for host in host_info_list:
            get_put(cmd,host[0],host[1],host[2],host[3])

paramiko封装实例1:

import os
import paramiko

class SSH_host:
    def __init__(self,ip,port,u,p,cmd):
        self.ip = ip
        self.port = port
        self.username = u
        self.passwd = p
        self.cmd = cmd

    def cmd(self):
        print('连接主机 ',self.ip)
        client = paramiko.SSHClient()
        client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        try:
            client.connect(self.ip, self.port, self.username, self.passwd)
            stdin, stdout, stderr = client.exec_command(self.cmd[0])
            result = stdout.read().decode('utf-8').strip()
        except:
            print('连接失败......')
        else:
            print(result)
        client.close()

    def get(self):
        print('连接主机 ', self.ip)
        try:
            transport = paramiko.Transport((self.ip, self.port))
            transport.connect(self.username, self.passwd)
            sftp = paramiko.SFTPClient.from_transport(transport)
        except:
            print('连接失败......')
        else:
            sftp.get(self.cmd[1], self.cmd[2])
            print('下载成功......')
            transport.close()

    def put(self):
        print('连接主机 ', self.ip)
        try:
            transport = paramiko.Transport((self.ip, self.port))
            transport.connect(self.username, self.passwd)
            sftp = paramiko.SFTPClient.from_transport(transport)
        except:
            print('连接失败......')
        else:
            sftp.put(self.cmd[1], self.cmd[2])
            print('上传成功......')
            transport.close()

if __name__ == "__main__":
    group = [file.rstrip('.conf') for file in os.listdir('host')]
    print('主机组'.center(30,'+'))
    for i,g in enumerate(group):
        print('\t',str(i+1),'\t',g)
    choice = input('选择操作组:')

    print('主机'.center(30,'+'))
    host_info_list = []     # 存储文件中主机信息
    file = 'host/'+choice+'.conf'
    with open(file) as f:
        for line in f:
            line =line.split(':')
            print('\t',line[0])
            host_info_list.append(line)

    while True:
        cmd = input('>>>: ')
        cmd = cmd.split()
        for host in host_info_list:
            link = SSH_host(host[0], int(host[1]), host[2], host[3], cmd)
            if cmd == []:
                continue
            else:
                if hasattr(link, cmd[0]):
                    print(cmd[0])

Python学习—paramiko模块实现简单的ssh与sftp

--结束END--

本文标题: Python学习—paramiko模块实

本文链接: https://lsjlt.com/news/189702.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python学习—paramiko模块实
    paramiko模块 paramiko模块提供了ssh及sft进行远程登录服务器执行命令和上传下载文件的功能。这是一个第三方的软件包,使用之前需要安装。 import paramiko # ssh root@ip # 创建一个ssh对象 ...
    99+
    2023-01-31
    模块 Python paramiko
  • python模块之paramiko学习<
    简介: paramiko是python(2.2或更高)的模块,遵循SSH2协议实现了安全(加密和认证)连接远程机器。 安装所需软件包: http://ftp.dlitz.net/pub/dlitz/crypto...
    99+
    2023-01-31
    模块 python paramiko
  • Python学习记录-paramiko模
    [TOC] paramiko模块基于SSH用于连接远程服务器并执行相关操作。 1. SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: import paramiko # 创建SSH对象 ssh = parami...
    99+
    2023-01-31
    Python paramiko
  • Python paramiko模块(实现
    开发堡垒机之前,先来学习Python的paramiko模块,该模块基于SSH用于连接远程服务器并执行相关操作 安装paramiko模块 pip3 install paramiko 基于用户密码方式 import paramiko # 创建...
    99+
    2023-01-31
    模块 Python paramiko
  • python paramiko模块
        paramiko模块是python中很重要的模块,他的功能呢主要分为两大块功能。一个是模拟SSH功能登录到远程主机上执行命令。一个是模拟SFTP功能传输文件。paramiko支持密码登陆方式和免密码的私钥登录方式。密码登陆方式代码如...
    99+
    2023-01-31
    模块 python paramiko
  • Python 之 paramiko 模块
    paramiko模块是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接1.安装#paramiko模块的安装需要先安装PyCrypto模块 wget https://pypi.python.or...
    99+
    2023-01-31
    模块 Python paramiko
  • python的paramiko模块
      paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。  由于使用的是python这样的能够跨平台运行的语言,所以所有python支持的平台,如Linux, Solaris, ...
    99+
    2023-01-31
    模块 python paramiko
  • Python使用Paramiko模块实现
    paramiko是用python写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。利用该模块,可以方便的进行ssh连接和sftp协议进行sftp文件传输以及远程命令执行。 通过安装包安装: wget ...
    99+
    2023-01-31
    模块 Python Paramiko
  • python模块学习----nmap模块
    安装nmap模块:pip install python_nmanmap模块说明:python-nmap是一个帮助使用nmap端口扫描器的python库。它允许轻松操纵nmap扫描结果,并且将是一个完美的选择,为需要自动完成扫描任务的系统管理...
    99+
    2023-01-31
    模块 python nmap
  • Python 模块学习
        模块学习: http://wsyht90.blog.51cto.com/9014030/1845737 1、getpass 2、os 3、sys 4、subprocess 5、hashlib 6、json 7、pickle 8、sh...
    99+
    2023-01-31
    模块 Python
  • python模块学习
    系统相关的信息模块: import sys sys.argv 是一个 list,包含所有的命令行参数. sys.stdout sys.stdin sys.stderr 分别表示标准输入输出,错误输出的文件对象. sys.st...
    99+
    2023-01-31
    模块 python
  • python模块paramiko与ssh
      paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。paramiko支持Linux, Solaris, BSD, MacOS X, Windows等平台通过SSH从一个平台连...
    99+
    2023-01-31
    模块 python ssh
  • python paramiko模块讲解
    Windows下有很多非常好的SSH客户端,比如Putty。在Python的世界里,你可以使用原始套接字和一些加密函数创建自己的SSH客户端或服务端,但如果有现成的模块,为什么还要自己实现呢。使用Paramiko库中的PyCrypto能够让...
    99+
    2023-01-31
    模块 python paramiko
  • python paramiko模块的使
    一般使用paramiko的功能就是通过ssh远程执行命令,远程(上传、下载)传输文件等等依赖包:/usr/local/python27/bin/pip install pycrypto下载包 paramiko#wget http://en....
    99+
    2023-01-31
    模块 python paramiko
  • python下paramiko模块ssh
        python下有个paramiko模块,这个模块可以实现ssh登录linux服务器,下面贴出代码,注意,我在centos5.6下,python2.6.5,paramiko-1.7的版本下测试成功。。。#!/usr/bin/env p...
    99+
    2023-01-31
    模块 python paramiko
  • python paramiko模块简介
    python paramiko模块简介一:简介    paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。    由于使用的是python这样的能够跨平台运行的语言,所以所有py...
    99+
    2023-01-31
    模块 简介 python
  • Python模块学习之IPy模块
    IP地址规划是网络设计中非常重要的一个环节,规划的好坏会直接影响路由协议算法的效率,包括网络性能、可扩展性等方面,在这个过程当中,免不了要计算大量的IP地址,包括网段、网络掩码、广播地址、子网数、IP类型等。Python提供了一个强大的第...
    99+
    2023-01-31
    模块 Python IPy
  • python hashlib模块学习
    目录 hashlib 模块 破解密码 hmac 模块 1.干嘛用的: 对字符进行加密,其实就是一个自定义的字符编码表,...
    99+
    2023-01-31
    模块 python hashlib
  • python模块学习(1)
    模块让你能够有逻辑地组织你的Python代码段。把相关的代码分配到一个 模块里能让你的代码更好用,更易懂。模块也是Python对象,具有随机的名字属性用来绑定或引用。简单地说,模块就是一个保存了Python代码的文件。模块能定义函数,类和变...
    99+
    2023-01-31
    模块 python
  • python学习-re模块
    Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,在文本解析、复杂字符串分析和信息提取时是一个非常有用的工具,下面我主要总结了re的常用方法。1.re的简介    使用python...
    99+
    2023-01-31
    模块 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作