在 Paramiko 中以 sudo 发送命令

Sending a command in Paramiko as sudo

如何以 sudo 用户身份通过​​ Paramiko 在 运行 框中 运行 命令并发送 sudo 密码 alomg,然后获得输出? 我尝试了以下代码,但由于它没有 return 输出(我尝试测试 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 发送,然后提供密码并获取输出的功能代码是什么?

什么是对多个命令执行相同操作的功能代码?我们可以发送一次密码,然后将其用于其余命令吗?

目标系统上的

sudo 配置为需要 terminal emulation 进行密码提示。

它建议您使用 -S 开关以允许从标准输入输入密码(您的代码正在尝试执行此操作)。那就这样吧。

感谢大家花时间发布他们的答案。 这个问题有一个简单的答案,这里是:

command = 'echo "sudo-password" | sudo <the-command-to-run-as-sudo>'
stdin, stdout, stderr = SESSION.exec_command(command)
stdout = stdout.read().decode()

示例命令:

command = 'echo "123456" | sudo ls-l /root'
stdin, stdout, stderr = SESSION.exec_command(command)
stdout = stdout.read().decode()