Drush commands not executing using Paramiko¿Cómo cambio directorios usando Paramiko?
Publiqué la pregunta anterior con respecto a un mensaje de error persistente que recibo usando Paramiko. No creo que esté relacionado con mi próxima pregunta, pero podría ser.
Puedo conectarme exitosamente a mi servidor a través de SSH usando Paramiko. Puedo ejecutar comandos como ls o pwd. Lo que aparentemente no puedo hacer es cambiar directorios. Puedo enviar el comando "cd .." por ejemplo, pero cuando hago un seguimiento con "pwd", muestra que no he cambiado los directorios. Simplemente muestra el directorio inicial que estoy en al iniciar sesión.
>>> stdin, stdout, stderr = myssh.exec_command("pwd")
>>> stdout.readlines()
['/big/dom/home/myid\n']
>>> stdin, stdout, stderr = myssh.exec_command("cd ../")
>>> stdout.readlines()
[]
>>> stdin, stdout, stderr = myssh.exec_command("pwd")
>>> stdout.readlines()
['/big/dom/home/myid\n']
>>>
Am I malentendido lo que está pasando aquí? ¿No debería ser capaz de cambiar directorios? O si puedo, ¿debería hacerlo de alguna otra forma que no sea usando exec_command?
-
No puedo responder a mi propia pregunta por otros 7 horas, así que aquí está la respuesta:
Este tipo tenía todo resuelto: http://www.vertigrated.com/blog/2010/02/python-remote-ssh-with-paramiko/
Sólo tienes que enviar múltiples comandos con una exec_command, tales como:
myssh.exec_command ('cd ..; pwd')
Entonces stdout.readlines() se devuelve el directorio al que cambiaste.
Posible duplicado de [¿Cómo se ejecutan varios comandos en una sola sesión en Paramiko? (Python)] (https://stackoverflow.com/questions/6203653/how-do-you-execute-multiple-commands-in-a-single-session-in-paramiko-python) – tripleee