paramiko交互

paramiko交互,第1张

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录
  • 前言
  • 一、paramiko交互
  • 二、使用步骤
    • 1.引入库
    • 2. *** 作
        • 第一种方法:
        • 第二种方法:
  • 总结


前言

python的paramiko库一些常用 *** 作


一、paramiko交互

通过window下python里的paramiko连接ubuntu终端

二、使用步骤 1.引入库

代码如下(示例):

import paramiko
2. *** 作 第一种方法:

代码如下(示例):

    # 创建一个SSH客户端对象
    ssh = paramiko.SSHClient()
    # 设置访问策略(设置丢失主机key)时的策略为自动添加
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 与远程主机进行连接
    ssh.connect("ip地址",22,"用户名","密码")
    # 发送终端指令,这里的指令和在ubuntu终端指令一致
    cmd = 'ls'
    # 接收到返回值(会接收到三种返回值分别是:标准输入、标准输出、错误输出)
    stdin,stdout,sdterr = ssh.exec_command(cmd)
    out = stdout.read()
    print(out)

返回的stdin(标准输入)用法一般是用来和终端交互,但是在项目实践过程中, *** 作终端进入超管权限,需要输入管理员密码,利用stdin.write("123456"+'\n')无法实现

第二种方法:
    s=paramiko.SSHClient()
    s.load_system_host_keys()
    s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    
    s.connect("ip",22,"username","pwd")
    if username != 'root':
        ssh = s.invoke_shell()
        time.sleep(0.1)
        ssh.send("sudo su \n")
        buff = ''
        # 下面的ap是我终端的username
        while not buff.endswith('password for ap: '):
            resp = ssh.recv(9999)
            buff +=resp.decode('gbk')
        # 123456是ap管理员的密码
        ssh.send("123456\n")
        ssh.send("whoami"+'\n')
        # 即可登录到超管权限,输出"root"

总结

使用以上两种方法都可以使用python来和虚拟机终端交互,若终端是Centos系统,使用第一种方法,username传入root,即可直接进入超管权限,但是Ubuntu系统不可以,需要使用第二种方法使用send()来输入超管密码登录到超管权限。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/715269.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存