相关疑难解决方法(0)

Paramiko和Pseudo-tty分配

我正在尝试使用Paramiko连接到远程主机并执行一些文本文件替换.

i, o, e = client.exec_command("perl -p -i -e 's/" + initial + "/" 
                              + replaced + "/g'" + conf);
Run Code Online (Sandbox Code Playgroud)

其中一些命令需要以sudo身份运行,这会导致:

sudo:对不起,你必须有一个tty来运行sudo

我可以使用-t开关和ssh强制伪tty分配.

是否有可能使用paramiko做同样的事情?

python ssh paramiko

21
推荐指数
4
解决办法
2万
查看次数

如何用paramiko运行sudo?(蟒蛇)

我尝试过的:

  1. invoke_shell()然后channel.send su发送密码导致不是root
  2. invoke_shell()然后channel.exec_command导致"频道关闭"错误
  3. _transport.open_session()然后channel.exec_command导致不是根
  4. invoke_shell() 然后写入stdin并冲洗它导致不是root

python ssh sudo paramiko

14
推荐指数
3
解决办法
3万
查看次数

帕拉米科和苏多

我一直在寻找网络一段时间来解决我的问题,没有运气.

我的问题是我似乎无法使用suram命令与paramiko一起运行.

起初,我试图简单地使用SSHClient().exec_command(command)函数来执行sudo命令,但是这个错误:

sudo: sorry, you must have a tty to run sudo
Run Code Online (Sandbox Code Playgroud)

然后,按照这篇文章的建议:如何使用Paramiko制作sudo命令,我试过这个:

#self._ssh is the SSHClient object    
self._ssh.invoke_shell().exec_command(command)
Run Code Online (Sandbox Code Playgroud)

但是,大部分时间,这只是给了我:

File "pipelines/load_instance/ssh_tools.py", line 71, in executeCommand
    stdin, stdout, stderr = self._ssh.invoke_shell().exec_command(command)
  File "<absolute_path>/paramiko/channel.py", line 213, in exec_command
    self._wait_for_event()
  File "<absolute_path>/paramiko/channel.py", line 1084, in _wait_for_event
    raise e
paramiko.SSHException: Channel closed.
Run Code Online (Sandbox Code Playgroud)

另外,我不得不说,40%的时间,我得到这个:

File "<absolute_path>/paramiko/client.py", line 291, in connect
    sock.connect(addr)
File "/usr/lib/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 111] Connection refused
Run Code Online (Sandbox Code Playgroud)

作为旁注,我正在尝试在Amazon Web Services EC2实例上运行这些sudo命令,所以我很困惑为什么我会得到Connection Refused错误,因为每次运行此代码时它都是一个全新的例如...

另外,我正在使用paramiko 1.7.6.

python sockets ssh sudo paramiko

5
推荐指数
1
解决办法
4519
查看次数

标签 统计

paramiko ×3

python ×3

ssh ×3

sudo ×2

sockets ×1