python - Ejecute mĂșltiples comandos en Paramiko para que los comandos se vean afectados por sus predecesores.
shell ssh (2)
Bueno, al intentar accidentalmente algo, me las arreglé para resolver esto, creo. Debe ejecutar todos los comandos al mismo tiempo y no es necesario que los ejecute en un bucle. para mi caso sería
import paramiko
hostname = ''''
port = 22
username = ''''
password = ''''
#selecting PROD instance, changing to data directory, checking directory
command = ''ORACLE_SID=PROD;cd /01/application/dataload;pwd''
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname,port,username,password)
stdin,stdout,stderr=ssh.exec_command(value)
outlines=stdout.readlines()
result=''''.join(outlines)
print (result)
ssh.close()
Estoy tratando lentamente de hacer un script de Python para SSH y luego FTP para hacer algún archivo manual que tengo que hacer todo el tiempo. Estoy usando Paramiko y la sesión parece ordenar, e imprime el directorio pero mi comando de cambio de directorio no parece funcionar, imprime el directorio en el que comienzo
/ 01 / inicio /
import paramiko
hostname = ''''
port = 22
username = ''''
password = ''''
#selecting PROD instance, changing to data directory, checking directory
command = {
1:''ORACLE_SID=PROD'',2:''cd /01/application/dataload'',3:''pwd''
}
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname,port,username,password)
for key,value in command.items():
stdin,stdout,stderr=ssh.exec_command(value)
outlines=stdout.readlines()
result=''''.join(outlines)
print (result)
ssh.close()
Cuando ejecuta
exec_command
varias veces, cada comando se ejecuta en su propio "shell".
Por lo tanto, los comandos anteriores no tienen efecto en un entorno de los siguientes comandos.
Si necesita que los comandos anteriores afecten a los siguientes comandos, simplemente use una sintaxis adecuada del shell de su servidor. La mayoría de los shells * nix usan un punto y coma o un doble ampersand (con semántica diferente) para especificar una lista de comandos. En su caso, el ampersand es más apropiado, ya que ejecuta los siguientes comandos, solo si los comandos anteriores tienen éxito:
stdin,stdout,stderr=ssh.exec_command("ORACLE_SID=PROD && cd /01/application/dataload && pwd")