码农知识堂 - 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())

  • 相关阅读:
    vector使用与简单实现
    删除一个数组中和另一个数组中行元素相等的行
    云原生基础知识:容器技术的历史
    Squeeze-and-Attention Networks for Semantic Segmentation
    APM电机输出逻辑之二
    世界百强企业架构师亲授:SpringBoot实战开发与最佳实践课程-Java
    Macos视频增强修复工具:Topaz Video AI for mac
    IPC机制
    cmake 学习使用笔记(二)库的生成与使用
    简单聊聊 分布式
  • 原文地址: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号