J'ai un programme qui se connecte à un serveur et émet des commandes. Les résultats sont imprimés à la fin du script. Le code ci-dessous montre le script que j'ai créé pour passer des commandes via ssh.Récupération de valeurs avec p.expect
import pexpect
ssh_newkey = 'Are you sure you want to continue connecting'
# my ssh command line
p=pexpect.spawn('ssh [email protected]')
i=p.expect([ssh_newkey,'password:',pexpect.EOF])
if i==0:
print "I say yes"
p.sendline('yes')
i=p.expect([ssh_newkey,'password:',pexpect.EOF])
if i==1:
print "I have entered the password. I will now flip camera through ",
p.sendline("user")
i=p.expect('[email protected]:')
p.sendline("cd /opt/ad/bin")
i=p.expect('[email protected]:')
p.sendline("./ptzflip")
i=p.expect('[email protected]:')
elif i==2:
print "I either got key or connection timeout"
pass
results = p.before # print out the result
print results
Les résultats que le programme imprime est:
Value = 1800
Min = 0
Max = 3600
Step = 1
Je veux capturer les valeurs qui sont imprimées.
En reponse aux questions ci-dessous. Je veux capturer par exemple. «Valeur» en tant que variable et «1800» en tant que valeur. J'ai essayé de le séparer dans un dictionnaire comme mentionné ci-dessous mais j'ai une erreur. Quand je rentre:
results_dict = {}
for line in results:
name, val = line.split(' = ')
results_dict[name] = val
Je reçois une erreur:
Traceback (most recent call last):
File "ptest.py", line 30, in <module>
name, val = line.split(' = ')
ValueError: need more than 1 value to unpack
Quand je vérifie ce code en Python stocke ces valeurs en tant que chaîne. Il le stocke comme:
'/opt/ad/bin$ ./ptzflip\r\nValue = 1800\r\nMin = 0\r\nMax = 3600\r\nStep = 1\r\n'
Quelqu'un peut-il aider dans ce problème. Voulez-vous dire l'enregistrer dans un fichier?
ah, désolé, il aurait dû être 'results.splitlines()'. Mais si vous voulez vraiment que les variables aient ces noms, 'eval (results)' devrait fonctionner si c'est vraiment le format. –