Question

Je suis en train d'automatiser certaines actions telnet avec python3. Alors j'ai commencé à utiliser la construction dans telnetlib (non pexpect).

En fait, tout fonctionne à ce jour, mais je ne comprends pas complètement comment fonctionne read_until - en fait la documentation indique que vous pouvez définir un délai d'attente et si la chaîne de recherche ne se trouve pas le délai d'attente renvoie une valeur d'octet vide ou ou s'il y a un autre valeur des thats celui qui peut être stockée en tant que valeur de retour!

Est-ce logique?!

Si je veux read_until une certaine valeur - comment puis-je savoir que cette valeur était vraiment une lecture de la fonction. Aussi je ne pouvais pas savoir comment vérifier si le délai d'attente a été frappé.

Ma solution pour est maintenant:

output = telnet.read_until(str.encode(hostname), 3)
if re.search(hostname, bytes.decode(output), re.IGNORECASE):
   #do something when the output matches the searchstring
else:
   #stop the function

mais cela ne fait pas de sens pour moi, alors peut-être vous maintenant une meilleure solution

Était-ce utile?

La solution

Oui, si votre nom d'hôte est example.com, read_until retournera quelque chose comme weijwrgnerg hgqwv blather example.com. Sauf si elle n'a pas trouvé le nom d'hôte au bout de trois secondes, il va juste cracher tout ce qu'il a obtenu alors. weijwrgnerg hg

Je pense que vous faites presque droite. Vous voulez probablement re.escape votre nom d'hôte, sinon il l'interpréter comme une expression régulière. Sinon, vous pouvez simplement utiliser le .endswith() Python. Et vous pouvez faire output.decode() pour obtenir une chaîne (plutôt que bytes.decode(output)).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top