Pregunta

Estoy tratando de automatizar algunas acciones telnet con python3. Así que empecé a utilizar la estructura en telnetlib (no pexpect).

En realidad todo funciona hasta ahora, pero no entiendo completamente cómo funciona la read_until - en realidad la documentación dice que se puede establecer un tiempo de espera y si no se encuentra la cadena de búsqueda el tiempo de espera devuelve un valor de byte vacío o o si hay otro ése es el valor de uno que puede ser almacenado como un valor de retorno!

¿Tiene sentido?!

Si quiero read_until un cierto valor - ¿Cómo me entero de que este valor era realmente el de la función de lectura. También no podía encontrar la manera de comprobar si el tiempo de espera se vio afectada.

Mi solución por ahora es:

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

pero eso no tiene ningún sentido para mí, así que tal vez ahora una mejor solución

¿Fue útil?

Solución

Sí, si su nombre de host es example.com, read_until volverá algo así como weijwrgnerg hgqwv blather example.com. Excepto si no se ha encontrado el nombre de host después de tres segundos, se acaba de escupir todo lo que tiene para entonces:. weijwrgnerg hg

Así que creo que lo está haciendo casi justo. Es posible que desee re.escape su nombre de host, de lo contrario, lo interpretará como una expresión regular. Alternativamente, es posible que utilices .endswith() de Python. Y puede hacerlo output.decode() para obtener una cadena (en lugar de bytes.decode(output)).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top