Python – utilisation des variables env d’hôte distant avec / SSH

Toute aide sur cette question serait grandement appréciée.

En gros, j’écris un script python qui va ssh sur différents serveurs et exécuter des scripts. Le problème est que ces scripts utilisent une variable env pour démarrer. C’est-à-dire que le script est test.sh mais nous utilisons une variable env pour le lancer, exécutez test.sh.

Jusqu’à présent, les routes que j’ai sockets, telles que le module Paramiko, exécutent des commandes mais ne prennent pas réellement en compte les variables env.

import paramiko ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('testserver' ) stdin, stdout, stderr = ssh.exec_command(cd /home/test/;$run ./test.sh') print stdout.readlines() print stderr.readlines() ssh.close() 

Est-il possible d’utiliser paramiko? Ou une autre façon que je devrais prendre?

Merci

@ Rob

J’ai édité le script à tester. La variable $ run revient vide.

 stdin, stdout, stderr = ssh.exec_command('whoami;echo hello; echo $run ; echo goodbye') ['testuser\n', 'hello\n', '\n', 'goodbye\n'] [] 

@ Rob partie 2

En vous connectant au serveur, je suis capable de faire écho à $ run et il retourne le bon chemin / script que j’ai aussi vérifié et ceci est une variable env qui est définie dans le fichier .profile. J’ai l’impression que Python n’invoque pas le .profile.

ssh.exec_command n’interprète pas le ssh.exec_command distant. Essaye ça:

 ssh.exec_command('. .profile ; cd /home/test/;$run ./test.sh') 

Plumbum à la rescousse.

Entre autres choses, il fournit une interface astucieuse, exploitant paramiko (voir ParamikoMachine ), et vous permet également de manipuler l’ environnement distant .