CHUNHANHAN 2021-12-08 00:49 采纳率: 25%
浏览 426

python subprocess运行指令需要输入密码

问题遇到的现象和发生背景

使用python subprocess.run运行sudo指令,需要输入密码,怎么通过subprocess输入呢?如果直接在subprocess里面输入密码,会报错,因为密码不是一条指令。

我想要达到的结果

使用tkinter文本框,先执行sudo命令,要求输入密码时,再在文本框中输入sudo密码。

  • 写回答

1条回答 默认 最新

  • 陈年椰子 2021-12-08 10:14
    关注

    试试 paramiko
    大概这么用,运行了sudo 后,再通过write方式输入密码

    try:
        ssh_client = paramiko.SSHClient()
        ssh_client.load_system_host_keys()
        ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh_client.connect(host,22,'user','PWD')
        std_in,std_out,std_err = ssh_client.exec_command('cd /home/swuser/share/;tar -zxvf requests-2.13.0.tar.gz;cd requests-2.13.0;sudo -S python setup.py install',get_pty=True)  #在command命令最后加上 get_pty=True,执行多条命令 的话用;隔开,另外所有命令都在一个大的单引号范围内引用
        std_in.write('PWD'+'\n') #执行输入命令,输入sudo命令的密码,会自动执行
        for line in std_out:
            print line.strip('\n')
        ssh_client.close()
    except Exception,e:
        print e
    
    评论

报告相同问题?

问题事件

  • 创建了问题 12月8日

悬赏问题

  • ¥15 晶体塑性有限元——Damask求解
  • ¥15 写出这个有没有人能写一下今天中午就要
  • ¥30 设计一个图形用户界面来控制你机械臂的运动
  • ¥30 3d打印机无法识别到SD卡,如何解决?(相关搜索:格式化)
  • ¥15 RPG游戏架构设计和开发方法
  • ¥15 前端返回pdf时不显示内容
  • ¥50 如何在不能联网影子模式下的电脑解决usb锁
  • ¥20 服务器redhat5.8网络问题
  • ¥15 如何利用c++ MFC绘制复杂网络多层图
  • ¥20 要做柴油机燃烧室优化 需要保持压缩比不变 请问怎么用AVL fire ESE软件里面的 compensation volume 来使用补偿体积来保持压缩比不变