cómo crear el archivo de registro para la secuencia de comandos de tcl

Estoy ejecutando el script Tcl para la conexión de puerto de Telnet. Para este script que desea almacenar todos los CMD de salida en un archivo de registro. cómo hacer esto en el script Tcl? Secuencia de comandos de la siguiente manera:

#!/usr/bin/expect -f
#!usr/bin/expect
package require Expect
spawn telnet $serverName $portNum
expect "TradeAggregator>"
send "Clients\r"
expect "Client:"
send "1\r"
expect "1-Client>"
send "Pollers\r"
expect "Client Pollers"
send "2\r"
send "n\r"
expect ">"
set passwordOption $expect_out(buffer)
set searchString "Not confirmed" 
if {[string match *$searchString* $passwordOption]} { 
puts "match found" }\ 
else { 
puts "match not found" 
xmlPasswordChange $polName 
}

todos los pone salida y xmlPasswordChange procedimiento de salida no es la impresión en el archivo de registro. puede usted por favor señale el lugar donde estoy haciendo mal.

Gracias por su ayuda de antemano.

InformationsquelleAutor Piyush | 2013-04-12

2 Kommentare

  1. 11

    Desea insertar un log_file comando donde desea comenzar a guardar los datos de salida. Por ejemplo, si usted quiere salvar a todos los de salida, luego se adhieren al principio:

    #!/usr/bin/expect -f
    
    log_file myfile.log ;# <<< === append output to a file
    
    package require Expect
    spawn telnet $serverName $portNum
    expect "TradeAggregator>"
    send "Clients\r"
    expect "Client:"
    send "1\r"
    expect "1-Client>"
    send "Pollers\r"
    expect "Client Pollers"
    send "2\r"

    De manera predeterminada, log_file anexa si el archivo existe, o crear una nueva. Si desea iniciar un nuevo registro cada vez, entonces:

    log_file -noappend myfile.log

    Actualización

    Por su pregunta acerca de por qué puts salidas de ir a la consola y no el archivo de registro. La manera en que yo entiendo es puts va a ir a la consola. Si desea iniciar sesión en el archivo de registro (abierto que se abrió con la log_file comando), a continuación, utilizar la send_log comando en su lugar:

    log_file -noappend myfile.log
    send_log "This line goes into the log file"
    send_user "This line goes into both the log file and console\n"
    puts "This line goes to the console"

    El ejemplo anterior introdujo otro comando: send_user, que actúa como puts y send_log combinado. Tenga en cuenta que send_user no incluye una nueva línea, de modo que la persona que llama debe incluir.

    • estoy enviando el siguiente comando, a continuación, comprobar si la condición else para llamar a un procedimiento. script de llamada es el trabajo de impresión y la pone en el CMD de que el procedimiento de llamada, pero no en log_myfile.archivo de registro. send "n\r" expect ">" #expect * ;#this is for to get data in expect_out set passwordOption $expect_out(buffer) #puts "$passwordOption" set searchString "Not confirmed" if {[string match *$searchString* $passwordOption]} { puts "match found" }\ else { puts "match not found" xmlPasswordChange $polName } ¿cómo puedo imprimir todos los CMD de salida en el archivo de registro?
    • Se puede actualizar el post principal con esta información? No soy bueno en la lectura de un texto como este. Lo siento por eso.
    • he añadido en el post principal de mi problema. por favor, puedes buscar en este.
    • un millón de gracias Vu. después de reemplazar pone con send_user está funcionando.
  2. 0

    También podemos crear nuestro propio archivo de registro de cadena [open $file_name w] comando y seguir escribiendo todo lo que a ese archivo.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea