【发布时间】:2023-11-19 15:55:01
【问题描述】:
如何以 sudo 用户身份通过 Paramiko 在 linux 机器中运行命令并发送 sudo 密码 alomg,然后获取输出? 我尝试了以下代码,但由于它没有返回输出(我尝试测试 ls -l /root)我不确定它是否有效。
stdin, stdout, stderr = ssh.exec_command("sudo ls -l")
stdin.write('sudo_password\n')
stdin.flush()
Output = stdout.read.splitlines()
第二个问题是,我的理解是我们不能在第一个命令中“sudo -s”,然后以 root 身份运行下一个命令,而我们首先使用非 root 命令启动会话,对吗? (想象一下盒子上没有root密码)
什么是功能代码以 sudo 发送命令,然后提供密码并获取输出?
对多个命令执行相同操作的功能代码是什么?我们可以发送一次密码,然后将其用于其余命令吗?
【问题讨论】:
-
您是否尝试读取错误输出?这对shell有效吗?
ssh user@host sudo ls -l? (作为单行行) -
马丁!您提到的命令将返回以下内容: ssh ubuntu@host sudo ls -l 密码: sudo:需要终端才能读取密码;使用 -S 选项从标准输入读取或配置 askpass 帮助程序
-
那么您是否尝试过它的建议?