2011-06-27 26 views
8


Estoy tratando de escribir una secuencia de comandos que sube de un sistema a otro a través de TCL/esperar. Está funcionando para mí. Necesito una expresión regular en la que esperan "$" y esperan "#" se combina, por lo que se puede incluir cualquier sistema con cualquier mensaje en la ruta.TCL espera la expresión regular

#!/usr/bin/expect 
# Using ssh from expect 

log_user 0 
spawn ssh [email protected] 
expect "sword: " 
send "test\r" 
expect "$ " 
send "ssh beta\r" 
expect "# " 
send "uptime\r" 
expect "# " 

set igot $expect_out(buffer) 
puts $igot 

Respuesta

13

Utilice esta:

expect -re {[$#] }
+3

Las claves para esto son: agregar el indicador '-re' para que podamos hacer coincidir un RE, y poner el RE en' {llaves} 'para que no se sustituya. –

8

Una solución más genérica:

set prompt "(%|#|\\\$) $" 
expect -re $prompt 

Ésta coincide %, # y $.
El segundo signo de dólar asegura que coincida con el patrón solo al final de la entrada.