码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • paramiko库SSHClient的exec_command执行sudo命令时如何输入密码


    一般ubuntu新装系统执行sudo指令时,都是默认需要密码的,想改成免密执行,可以参照下述方法设置:

    1. sudo visudo
    2. ##找到%sudo ALL=(ALL:ALL) ALL 改为:
    3. %sudo ALL=(ALL:ALL) NOPASSWD:ALL
    4. ##根据提示保存退出即可

    但远程主机往往是新机或者默认配置,使用paramiko库SSHClient的exec_command远程执行sudo指令时,指令并不能执行成功,查看stdout.read()中无异常,stderr.read()中返回“sudo: no tty present and no askpass program specified\n”的错误打印。

    解决办法有两个:

    1.sudo指令中带-S执行,并使用stdin输入密码

    1. import paramiko
    2. username='tester'
    3. passwd='1'
    4. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy) # 设置允许连接陌生主机
    5. ssh = paramiko.SSHClient() # 实例一个连接对象
    6. ssh.connect('127.0.0.1', 22, username, passwd, timeout=5) # 连接被管理机
    7. cmd = "sudo -S echo '123' > testsudo.txt"
    8. stdio, stdout, stderr = self.ssh.exec_command(cmd)
    9. stdio.write("%s\n"%passwd)
    10. stdin.flush()
    11. print(stdout.read().decode())
    12. print(stderr.read().decode())

    2.在执行exec_command时带上get_pty=True

    1. import paramiko
    2. username='tester'
    3. passwd='1'
    4. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy) # 设置允许连接陌生主机
    5. ssh = paramiko.SSHClient() # 实例一个连接对象
    6. ssh.connect('127.0.0.1', 22, username, passwd, timeout=5) # 连接被管理机
    7. cmd = "sudo echo '123' > testsudo.txt"
    8. stdio, stdout, stderr = self.ssh.exec_command(cmd, get_pty=True)
    9. stdio.write("%s\n"%passwd)
    10. stdin.flush()
    11. print(stdout.read().decode())
    12. print(stderr.read().decode())

  • 相关阅读:
    python笔记记录神器 jupyter notebook
    (八)MyBatis中参数的处理
    手动开发-实现SpringMVC底层机制--小试牛刀
    这个开学季,注定不平凡
    “对症下药”,高效控价——控价方法详解
    获取http三种请求的方式,get,post,流的形式
    【力扣-每日一题】714. 买卖股票的最佳时机含手续费
    03【C语言 & 趣味算法】(值得品味的一道题)打鱼还是晒网?结构体的简单应用。函数的应用。判断闰年的应用。求指定日期距1990年1月1日的天数。
    【网络编程】从零开始搭建一个开源博客网站(云服务器+宝塔+WordPress)
    HTML5 Canvas绘制图形从入门到精通
  • 原文地址:https://blog.csdn.net/zerfew/article/details/126991713
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号