python-paramiko通过远程操作linux

1. python-paramiko通过远程操作linux

  • python3 远程操作linux

    • 使用第三方paramiko库,对于实现运维自动部署很重要

      1. pip3 install paramiko
    • 引用的cryptography输出有问题

      1. pip install cryptography
  • 案例1:通过paramiko使用用户密码远程操作linux

    • 使用python编写,通过paramiko使用用户密码远程操作linux

      1. #!/usr/bin/env python
      2. # _*_ coding: utf-8 _*_
      3. # Author:shichao
      4. # File: .py
      5. import paramiko
      6. # 远程连接 ip和端口
      7. transport = paramiko.Transport( '192.168.0.200', 22 )
      8. # 连接私钥
      9. # pkey = paramiko.RSAKey.from_private_key_file( '/root/.ssh/id_rsa' )
      10. # 连接密码
      11. pwd = '123456'
      12. # 连接用户和密码
      13. transport.connect( username = 'root', password = pwd )
      14. # 通过paramiko ssh连接
      15. ssh = paramiko.SSHClient()
      16. ssh._transport = transport
      17. # stdio 是输入, stdout 是输出,stderr错误输出
      18. stdio, stdout, stderr = ssh.exec_command( "ifconfig eth0 | awk 'NR==2 {print $2}'" )
      19. channel = stdout.channel
      20. status = channel.recv_exit_status()
      21. # stdout标准输出读取数据
      22. stdout = stdout.read().decode()
      23. # stderr标准错误数据输出读取数据
      24. stderr = stderr.read().decode()
      25. ssh.close()
      26. transport.close()
      27. print( stdout )
      28. if status >= 1:
      29. print(stderr)
      30. else:
      31. print("执行成功")
    • 执行结果

      1. # python3 test_paramiko.py
      2. 192.168.0.200
  • 案例2:通过paramiko通过密钥远程操作linux

    • 本机安装服务器密钥

      1. [admin@shichaodeMacBook-Pro ~]# ssh-keygen -t rsa
      2. Generating public/private rsa key pair.
      3. Enter file in which to save the key (/Users/admin/.ssh/id_rsa):
      4. Enter passphrase (empty for no passphrase):
      5. Enter same passphrase again:
      6. Your identification has been saved in /Users/admin/.ssh/id_rsa
      7. Your public key has been saved in /Users/admin/.ssh/id_rsa.pub
      8. The key fingerprint is:
      9. SHA256:pU9abOwMKntMChDm70ffna5DCRy2n83c9I71aE7Sb+0 admin@shichaodeMacBook-Pro.local
      10. The key's randomart image is:
      11. +---[RSA 3072]----+
      12. | |
      13. |.. o |
      14. |o. o o . |
      15. |.. + = . |
      16. | .. S % o . |
      17. | .. ... # + o o |
      18. | ..o+o + = o *.o|
      19. | ..+o. o o +oo+|
      20. | o. .+. o.oE|
      21. +----[SHA256]-----+
      22. [admin@shichaodeMacBook-Pro ~]# cd .ssh
      23. [admin@shichaodeMacBook-Pro .ssh]# ll
      24. total 32
      25. drwx------ 6 admin staff 192 Jun 30 11:01 ./
      26. drwxr-xr-x+ 60 admin staff 1920 Jun 30 10:59 ../
      27. -rw------- 1 admin staff 2622 Jun 30 11:01 id_rsa
      28. -rw-r--r-- 1 admin staff 586 Jun 30 11:01 id_rsa.pub
      29. -rw------- 1 admin staff 3616 Jun 10 13:59 known_hosts
      30. -rw------- 1 admin staff 2950 May 10 16:50 known_hosts.old
    • 拷贝公钥到服务器端

      1. [admin@shichaodeMacBook-Pro .ssh]# ssh-copy-id root@192.168.0.200
      2. /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/admin/.ssh/id_rsa.pub"
      3. The authenticity of host '192.168.0.200 (192.168.0.200)' can't be established.
      4. ED25519 key fingerprint is SHA256:s/wgZLKfYoMCzTXN3RNfjSlFi6a68iT0wQDkh1CUUQg.
      5. This key is not known by any other names
      6. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
      7. /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
      8. /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
      9. root@192.168.0.200's password:
      10. Number of key(s) added: 1
      11. Now try logging into the machine, with: "ssh 'root@192.168.0.200'"
      12. and check to make sure that only the key(s) you wanted were added.
    • 使用key免密钥连接测试

      1. [admin@shichaodeMacBook-Pro .ssh]# ssh root@192.168.0.200
      2. Last login: Thu Jun 30 09:58:32 2022 from 192.168.0.160
      3. [root@ansible ~]# ifconfig
      4. docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
      5. inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
      6. ether 02:42:35:bb:34:55 txqueuelen 0 (Ethernet)
      7. RX packets 0 bytes 0 (0.0 B)
      8. RX errors 0 dropped 0 overruns 0 frame 0
      9. TX packets 0 bytes 0 (0.0 B)
      10. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
      11. eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
      12. inet 192.168.0.200 netmask 255.255.255.0 broadcast 192.168.0.255
      13. inet6 fe80::20c:29ff:fe84:914d prefixlen 64 scopeid 0x20<link>
      14. ether 00:0c:29:84:91:4d txqueuelen 1000 (Ethernet)
      15. RX packets 441188 bytes 281747902 (268.6 MiB)
      16. RX errors 0 dropped 37 overruns 0 frame 0
      17. TX packets 243722 bytes 118421451 (112.9 MiB)
      18. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
      19. lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
      20. inet 127.0.0.1 netmask 255.0.0.0
      21. inet6 ::1 prefixlen 128 scopeid 0x10<host>
      22. loop txqueuelen 1000 (Local Loopback)
      23. RX packets 3 bytes 208 (208.0 B)
      24. RX errors 0 dropped 0 overruns 0 frame 0
      25. TX packets 3 bytes 208 (208.0 B)
      26. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
    • 使用python编写,通过paramiko使用免密钥的方式操作linux

      1. #!/usr/bin/env python
      2. # _*_ coding: utf-8 _*_
      3. # Author:shichao
      4. # File: .py
      5. import paramiko
      6. import time
      7. # 远程连接 ip和端口
      8. transport = paramiko.Transport( '192.168.0.200', 22 )
      9. # 连接私钥
      10. pkey = paramiko.RSAKey.from_private_key_file( '/Users/admin/.ssh/id_rsa' )
      11. # 连接用户和密码
      12. transport.connect( username = 'root', pkey = pkey )
      13. # 通过paramiko ssh连接
      14. ssh = paramiko.SSHClient()
      15. ssh._transport = transport
      16. # stdio 是输入, stdout 是输出,stderr错误输出
      17. stdio, stdout, stderr = ssh.exec_command( "ifconfig eth0 | awk 'NR==2 {print $2}'" )
      18. time.sleep(2)
      19. channel = stdout.channel
      20. status = channel.recv_exit_status()
      21. # stdout标准输出读取数据
      22. stdout = stdout.read().decode()
      23. # stderr标准错误数据输出读取数据
      24. stderr = stderr.read().decode()
      25. ssh.close()
      26. transport.close()
      27. if status >= 1:
      28. print(stderr)
      29. else:
      30. print(stdout)
    • 运行脚本,查看结果

      1. # python3 test_paramiko.py
      2. 192.168.0.200

python paramiko通过远程操作linux的更多相关文章

  1. java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息

    1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/2 ...

  2. paramiko模块(远程操作服务器)

    paramiko模块(远程操作服务器) django+paramkio实现远程某些服务器执行命令+上传文件 用于帮助开发者通过代码远程连接服务器,并对服务器进行操作. pip3 install par ...

  3. 远程操作Linux主机

    通过putty文件访问: 下载路径:https://the.earth.li/~sgtatham/putty/0.70/w32/putty-0.70-installer.msi 通过Python文件执 ...

  4. Notepad++【远程操作linux文件】

    目录 目的 预期效果 操作步骤 1.打开插件 2.安装NppFTP 3.连接远程主机 注意 目的 通过Notepad++远程登录linux主机,修改配置文件 预期效果 在Notepad++上登录lin ...

  5. python的paramiko模块-远程登录linux主机并操作

    paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作. 如果python服务器对被远程控制机器开启了免密验证,即在python服务器上可通过ssh 用户名@被控制机 ...

  6. 如何使用python远程操作linux

    在云服务测试中,往往需要我们进入云服务内容进行相关内容的测试.这测试可以使用平台自身的noVNC.外部辅助xshell等工具连接到云服务内部进行测试.但是在如此反复的测试操作中,就需要用到自动化测试方 ...

  7. 使用paramiko模块进行封装,远程操作linux主机

    import time import paramiko class HandleParamiko: ''' 定义一个linux处理类 ''' def __init__(self, hostname, ...

  8. 【转】python fabric实现远程操作和部署

    fabric title是开发,但是同时要干开发测试还有运维的活……为毛 task*3 不是 salary * 3 (o(╯□╰)o) 近期接手越来越多的东西,发布和运维的工作相当机械,加上频率还蛮高 ...

  9. PYTHON FABRIC实现远程操作和部署

    转载至:http://wklken.me/posts/2013/03/25/python-tool-fabric.html fabric title是开发,但是同时要干开发测试还有运维的活 (o(╯□ ...

  10. 利用Paramiko模块远程连接Linux

    使用Paramiko模块模拟SSH远程连接到服务器,并执行命令.(支持Tab键补全) 1.安装相关模块: 1)安装 Crypto 模块: 下载源码包解压 安装: sudo python setup.p ...

随机推荐

  1. 论文笔记 - Fantastically Ordered Prompts and Where to Find Them: Overcoming Few-Shot Prompt Order Sensitivity

    prompt 的影响因素 Motivation Prompt 中 Example 的排列顺序对模型性能有较大影响(即使已经校准参见好的情况下,选取不同的排列顺序依然会有很大的方差): 校准可以大幅度提 ...

  2. 聊聊kafka

    两个月因为忙于工作毫无输出了,最近想给团队小伙伴分享下kafka的相关知识,于是就想着利用博客来做个提前的准备工作了:接下来会对kafka做一个简单的介绍,包括利用akf原则来解析单机下kafk的各个 ...

  3. 【NGINX】浅尝

    Introduction Nginx is a web server that can also be used as a reverse proxy, load balancer, mail pro ...

  4. 2.mysql-库表行管理

    1.数据库管理 1.1 SQL语句 1.1.1 查看当前所有的数据库 show databases; 1.1.2 创建数据库 create database 数据库名; create databse ...

  5. 数据库可视化工具分享 (DBeaver)

    前提:最近公司下发通知,所有开发人员 必须 卸载 Navicat 数据库可视化工具,不知道兄弟们有没有在使用的,可能现在的反应跟我一样,一脸懵逼,Navicat为什么不能使用呢? 有事没事找度娘,于是 ...

  6. CSP 记

    csp 开考建好文件夹编译器不能用搞了半天换了台电脑 四道题看完一个小时过去了 第一题不会正解写了部分分还有点悬 第二题写暴力因为一个小错误调了半天 看时间不多了已经有点慌了 也没想正解直接开了下一题 ...

  7. 彻底理解Python中的闭包和装饰器(上)

    什么是闭包 闭包(Closure)其实并不是Python独有的特性,很多语言都有对闭包的支持.(当然,因为Python是笔者除C/C++之外学习的第二门语言,所以也是第一次遇到闭包.)简而言之,闭包实 ...

  8. 快速入门JavaScript编程语言

    目录 JS简介 JS基础 1.注释语法 2.引入js的多种方式 3.结束符号 变量与常量 let和var的区别 申明常量 const 严格模式 use strict 基本数据类型 1.数值类型(Num ...

  9. linux-微服务-jar包部署指令

    1 orderservice docker build -t orderservice . docker run -d -p 8084:8084 --name orderservice orderse ...

  10. week_1

    Andrew Ng机器学习笔记---by OrangeStar Week 1 A computer program is said to learn from experience E with re ...