es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

EOF en el script de expect que inicia el sftp.

Tengo un script que está transfiriendo archivos de un servidor de Linux a un servidor de Windows. Quiero registrar los datos relacionados con las transferencias, pero EOF me está dando un error en la construcción HEREDOC. ¿Alguien puede mostrarme cómo avanzar en esto?

Mi script es:

#!/usr/bin/expect
spawn sftp XXXX@XXXXXX <<eof>> log.file
expect "password:"
send "ABC\n"
expect "sftp>"
send "cd /FIRST\r"
expect "sftp>"
send "lcd /home\r"
expect "sftp>"
send "mput /home/*First*\r"
send "bye\r"
interact

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para evitar errores con la construcción HEREDOC, puedes incluir el marcador de fin de archivo entre comillas en el comando spawn, de la siguiente manera:

    spawn sftp XXXX@XXXXXX "<<eof>> log.file"
    

    Luego, reemplaza todas las apariciones de “<>” con simplemente “EOF” dentro de tus comandos expect/send. El código final se verá así:

    #!/usr/bin/expect
    spawn sftp XXXX@XXXXXX "<<eof>>" log.file
    expect "password:"
    send "ABC\n"
    expect "sftp>"
    send "cd /FIRST\r"
    expect "sftp>"
    send "lcd /home\r"
    expect "sftp>"
    send "mput /home/*First*\r"
    send "bye\r"
    expect "EOF"
    interact
    

    Ten en cuenta que el comando expect final espera a que se encuentre el marcador “EOF” en el archivo de registro antes de permitir que el script salga.

Comments are closed.