当前位置: 首页 > 面试题库 >

如何使用Paramiko运行sudo?(python)

澹台华翰
2023-03-14
问题内容

我尝试过的

  1. invoke_shell()然后channel.send su再发送密码导致没有root
  2. invoke_shell()然后channel.exec_command导致“频道关闭”错误
  3. _transport.open_session()然后channel.exec_command导致不被root
  4. invoke_shell() 然后写到标准输入并刷新它导致没有root

问题答案:

看看这个例子:

ssh.connect('127.0.0.1', username='jesse', 
    password='lol')
stdin, stdout, stderr = ssh.exec_command(
    "sudo dmesg")
stdin.write('lol\n')
stdin.flush()
data = stdout.read.splitlines()
for line in data:
    if line.split(':')[0] == 'AirPort':
        print line

在此处找到具有更多说明的示例:http : //jessenoller.com/2009/02/05/ssh-
programming-with-paramiko-completely-
different/

希望能帮助到你!



 类似资料:
  • 前面的详细信息 我需要在交换机上使用ssh来ping不同的主机。早些时候,我为每个主机启动了一个线程,但结果很容易超过了最大ssh连接数,所以我根据这个创建了一个交互式shell会话。但当我并行运行时,它在发出第一个命令后就一直挂在那里。我不知道如何修复此问题。 简化代码如下:

  • 我试图,我收到了这个错误 /bin/sh:1:sudo:未找到 这就是我的的样子: 当我尝试构建它时,会出现此错误<代码>docker构建-t jenkins

  • 问题内容: 我尝试运行此脚本: 现在的问题是:我怎样才能把这些变量,,到变量? 问题答案: Python有很多执行字符串格式化的方法。最简单的方法之一就是将字符串的各个部分简单地串联在一起:

  • 问题内容: 我无法弄清楚这是怎么回事。当我在终端中运行它并输入密码时,什么也没发生,但是如果我在终端中单独运行每个命令,它就可以工作。谢谢! 问题答案: Command 启动一个交互式根外壳程序,但不会将当前外壳程序转换为根外壳程序。 做您想要的事情的成语与此类似(感谢@CharlesDuffy的额外注意): 这个想法是检查当前用户是否是root用户,如果不是,请使用以下命令重新运行同一命令

  • 问题内容: 我发布了有关使用Paramiko收到的持续错误消息的上述问题。我认为这与我的下一个问题无关,但可能与之相关。 我可以使用Paramiko通过SSH成功​​连接到服务器。我可以执行ls或pwd之类的命令。我似乎无法做的是更改目录。例如,我可以发送命令“ cd ..”,但是当我跟进“ pwd”时,它表明我尚未更改目录。它仅列出我登录时所在的初始目录。 我误会了这里发生了什么吗?我应该不能更

  • 问题内容: 如下所示,是否可以保存结果?原因是,在第二和第三stdout.read()处我无法达到结果。 问题答案: 想象这是一个普通文件。如果您第二次打电话,您希望得到什么?-除非文件已在外部更改,否则为空(空字符串)。 保存字符串: 您可能会发现Fabric更易于使用(它用于在后台执行命令)。