He estado buscando en las redes durante algún tiempo para encontrar una solución a mi problema, y no tuve suerte.Paramiko y sudo
Mi problema es que parece que no puedo obtener los comandos sudo para ejecutar con paramiko.
Al principio, traté de simplemente utilizar la función (comandos) SSHClient() exec_command para ejecutar un comando sudo, pero esta errores:.
sudo: sorry, you must have a tty to run sudo
Entonces, siguiendo el consejo de este post: How to make a sudo command using Paramiko, he intentado esto:
#self._ssh is the SSHClient object
self._ssh.invoke_shell().exec_command(command)
Sin embargo, la mayoría de las veces, esto sólo me da:
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.
El otro, tendría que decir, el 40% de las veces, me sale esto:
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
Como nota al margen, Estoy intentando ejecutar estos comandos sudo en una instancia EC2 Amazon Web Services, así que estoy confundido sobre por qué obtendría el error Connection Refused, ya que cada vez que ejecuto este código está en una nueva instancia ...
Además, estoy usando paramiko 1.7.6.
Hola J.J., tengo exactamente el mismo problema que kand. Si entiendo este derecho, entonces eliminar el indicador requiretty debería resolver el problema. Sin embargo, sigo teniendo la misma stack stack que la anterior. ¿Qué estoy haciendo mal? (Disculpa si este es el lugar equivocado para preguntar) – Patrick
Sí, la misma pregunta aquí. Esto realmente no resuelve el problema para mí, y eventualmente esa línea ni siquiera está en el archivo/etc/sudoers por defecto. – lpapp