【python】paramiko远程操作Linux

简介: 【python】paramiko远程操作Linux

背景说明:

我们在开发服务器或运维过程中,需要登录Linux进行下载数据、上传数据、执行脚本等操作。如果你习惯了windows系统,不希望用使用Xshell或者Mobax或者Linux操作系统进行操作,那么python提供了一个非常方便的第三方库,供您在windows下远程登录Linux。这里总结了一下非公钥密钥操作linux的几种方法:

关注“测试开发自动化” 弓中皓,获取源码)


1. 远程登陆

import paramiko
ssh = paramiko.SSHClient()                                     # 创建SSH对象
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())      # 允许连接不在know_hosts文件中的主机。即:解决问题:如果之前没有,连接过的ip,会出现选择yes
# 连接服务器(根据自己的情况选择)
ssh.connect(hostname='192.168.xxx.xxx', username='xxx', password='xxx')     # 用户名和密码登录
stdin, stdout, stderr = ssh.exec_command('ls -lh')
result = stdout.read().decode('utf-8')   # 获取命令结果
print(result)                            # 输出返回的结果
ssh.close()                              # 关闭连接

2. 文件上传下载

方法一:关注“测试开发自动化” 弓中皓,获取源码)

import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='192.168.xxx.xxx', username='xxxx', password='xxxx')
sftp = ssh.open_sftp()
sftp.put(r'D:\xxxx\xxxx.sh', '/home/xxxx/xxxx.sh')       # 将windows文件上传至Linux
sftp.get('/home/xxxx/xxxx.sh', r'D:\xxxx\xxxx.sh')       # 将Linux文件下载至windows
sftp.close()
stdin, stdout, stderr = ssh.exec_command('sh /home/xxxx/xxxx.sh')    # 运行sh文件
result = stdout.read().decode('utf-8')
print(result)
ssh.close()

方法二:关注“测试开发自动化” 弓中皓,获取源码)

import paramiko
#获取Transport实例
tran = paramiko.Transport("192.168.xxx.xxx", 22)
#连接SSH服务端
tran.connect(username="xxx", password="xxx")
#获取SFTP实例
sftp = paramiko.SFTPClient.from_transport(tran)
#设置上传的本地/远程文件路径
localpath= r"D:\xxxx\xxxx.py"    #本地文件路径
remotepath= r"/home/xxxx/xxxx.py"  #上传对象保存的文件路径
#执行上传动作
sftp.put(localpath, remotepath)
# 执行下载动作
sftp.get(remotepath, localpathwen)
tran.close()

3. sudo权限:

关注“测试开发自动化” 弓中皓,获取源码)

import paramiko
hostname = "192.168.xxx.xxx"
username = 'ubuntu'
password = 'ubuntu'
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=hostname, username=username, password=password)
stdin, stdout, stderr = ssh.exec_command('sudo reboot', get_pty=True)  # sudo权限
stdin.write('ubuntu'+'\n')   # 输入密码
result = stdout.read().decode('utf-8')
print(result)
ssh.close()

4. 批量链接

关注“测试开发自动化” 弓中皓,获取源码)

import paramiko
from paramiko.ssh_exception import NoValidConnectionsError
from paramiko.ssh_exception import AuthenticationException
def connect(cmd, hostname,port=22,username='root',passwd='westos'):
    ##1.创建一个ssh对象
    client = paramiko.SSHClient()
    #2.解决问题:如果之前没有,连接过的ip,会出现选择yes或者no的操作,
    ##自动选择yes
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    #3.连接服务器
    try:
        client.connect(hostname=hostname, port=port, username=username, password=passwd)
        print('正在连接主机%s......'%(hostname))
    except NoValidConnectionsError as e: ###用户不存在时的报错
        print("连接失败")
    except AuthenticationException as t: ##密码错误的报错
        print('密码错误')
    else:
        #4.执行操作
        stdin,stdout, stderr = client.exec_command(cmd)
        #5.获取命令执行的结果
        result=stdout.read().decode('utf-8')
        print(result)
        #6.关闭连接
    finally:
        client.close()
# 为提高效率,此处建议使用多线程
connect('ls -h', hostname='192.168.xxx.xxx', username='Xxxx', passwd='xxx')
connect('ls -h', hostname='192.168.xxx.xxx', username='xxxx', passwd='xxxx')

如果对您有帮助,点个关注再走吧!!!

相关文章
|
1天前
|
数据采集 数据安全/隐私保护 Python
2024年最新【Python】如何用Python来操作PDF文件,收藏(2),2024年最新阿里p7Python面试题
2024年最新【Python】如何用Python来操作PDF文件,收藏(2),2024年最新阿里p7Python面试题
2024年最新【Python】如何用Python来操作PDF文件,收藏(2),2024年最新阿里p7Python面试题
|
3天前
|
关系型数据库 Java 分布式数据库
实时计算 Flink版操作报错合集之在使用 Python UDF 时遇到 requests 包的导入问题,提示 OpenSSL 版本不兼容如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
21 5
|
4天前
|
Web App开发 Ubuntu Linux
Linux无图形界面环境使用Python+Selenium实践
【5月更文挑战第1天】Linux无图形界面环境使用Python+Selenium实践
42 2
|
6天前
|
存储 JSON 安全
Python中的文件操作与文件IO操作
【5月更文挑战第14天】在Python中,文件操作是常见任务,包括读取、写入和处理文件内容。`open()`函数是核心,接受文件路径和模式(如'r'、'w'、'a'、'b'和'+')参数。本文详细讨论了文件操作基础,如读写模式,以及文件IO操作,如读取、写入和移动指针。异常处理是关键,使用`try-except`捕获`FileNotFoundError`和`PermissionError`等异常。进阶技巧涉及`with`语句、`readline()`、`os`和`shutil`模块。数据序列化与反序列化方面,介绍了
18 0
|
6天前
|
分布式计算 Hadoop Linux
实验: 熟悉常用的Linux操作和Hadoop操作
实验: 熟悉常用的Linux操作和Hadoop操作
10 2
|
6天前
|
安全 测试技术 Python
零操作,高效下载:利用Playwright和Python完成文件下载
Playwright是Microsoft开发的跨浏览器自动化测试工具,能模拟用户操作,包括文件下载。在Python中,它提供`expect_download()`来处理文件下载,无需额外工具。下载开始时触发事件,完成后可通过`download.path()`获取路径。下载相关操作包括取消、删除、获取错误信息、所属页面、文件名、URL等。示例代码展示了如何下载pytest的压缩文件,简化了web自动化测试中的文件下载场景。
13 4
|
6天前
|
Linux 芯片 Ubuntu
Linux驱动入门 —— 利用引脚号操作GPIO进行LED点灯
Linux驱动入门 —— 利用引脚号操作GPIO进行LED点灯
|
6天前
|
Ubuntu Linux
Linux驱动入门 —— 利用寄存器操作GPIO进行LED点灯-2
Linux驱动入门 —— 利用寄存器操作GPIO进行LED点灯
Linux驱动入门 —— 利用寄存器操作GPIO进行LED点灯-2
|
6天前
|
Linux 芯片
Linux驱动入门 —— 利用寄存器操作GPIO进行LED点灯-1
Linux驱动入门 —— 利用寄存器操作GPIO进行LED点灯
Linux驱动入门 —— 利用寄存器操作GPIO进行LED点灯-1
|
6天前
|
存储 测试技术 程序员
【Python】—— NumPy基础及取值操作
【Python】—— NumPy基础及取值操作
8 1