le problème devient alors comment capturer la sortie supérieure à environ 20 Ko ... lors de la connexion à déposer, je reçois toute la sortie, mais je veux seulement sauver la sortie sélective, non toute la session Lors de l'utilisation de child.after la sortie est tronquée, par exemple le début est manquant ce qui peut être atténué un peu en augmentant maxread mais il bombarde quand même en obtenant près de 30-40kb de sortie. Pour ceux qui se demandent, je saisis la sortie des commutateurs Cisco en utilisant "sh int | i protocol | Last" cela ne renvoie que 3 lignes par interface mais certaines des commutateurs de mon client ont 450 ports.
Vous ne savez pas quelle est la dynamique ici, mais pour certains commutateurs, elle réussit. Pendant un certain temps, j'ai essayé de contourner le problème en activant et désactivant de manière sélective la journalisation. Cela s'est avéré peu fiable et de la journalisation générique, je peux voir que pexpect correspond à la sortie avant que la journalisation ne le voit. J'ai fini par désactiver la journalisation alors que les données étaient encore en cours d'écriture dans le fichier. tronquer la sortie après environ 10 lignes de sortie.
Donc, la question ultime demeure, comment peut-on augmenter la fiabilité de child.after. Afin de capturer de grandes sorties. Je n'ai aucun problème avec l'augmentation du délai d'attente sur les instructions expect, tant que la sortie est fiable. Ce que je vois maintenant, ce n'est pas un timeout avec une sortie incomplète.
child.sendline(action)
child.expect(prompt_keys)
action_output = str(child.after) # Captures the output
# print action_output # Uncomment for debugging grabbed output
output_file.write(action_output + "\n\n\n") # Write the output to file
Envoyer speacebars? – Robus
Que voulez-vous dire? Exemple? – Whit3H0rse