EXPECT- Script para ejecutar comandos en forma remota.-

El siguiente ejemplo es un SCRIPT realizado con EXPECT para tomarlo como base para ejecutar script remotos y mostrar el resultado por pantalla. Suponiendo que al script lo grabamos con el nombre remoto.sh, para ejecutarlo sería :

bash remoto.sh “ps -fea | grep componente”

!/bin/bash
HOST="servidor"
USER="usuario"
PASS="password"
CMD=$@
VAR=$(expect -c "
spawn ssh -o StrictHostKeyChecking=no $USER@$HOST $CMD
match_max 100000
expect \"?assword:\"
send -- \"$PASS\r\"
send -- \"\r\"
expect eof
")
echo "==============="
echo "$VAR"

Entre las comillas se debe ingresar el comando que se desee ejecutar en el servidor remoto.-

Esta entrada fue publicada en Unix - Linux. Guarda el enlace permanente.

7 respuestas a EXPECT- Script para ejecutar comandos en forma remota.-

  1. Francisco dijo:

    Excelente reseña funciona perfecto lo utilice para realizar monitoreo sobre equipos.

  2. Jaime dijo:

    asi es funciona excelente.

  3. Javier dijo:

    Hola, buen aporte, yo utilice tu shell pero para conectarme a un SFTP, pero no logro ejecutar el comando get para copiar los archivos del servidor remoto a mi servidor local, ¿me pudieras hacer favor de indicarme como se puede hacer?, ya intente de varias formas, pero no lo he logrado. Si se conecta al server remoto.
    VAR=$(expect -c ”
    spawn sftp -o “BatchMode=no” $USER@$HOST “:/ruta/”
    expect -nocase \”?assword:\”
    send — \”$PASS\r\”
    send — \”get archivo.txt\r\”
    send — \”\r\”
    expect eof

    “)
    echo “===============”
    echo “$VAR”
    Saludos.

  4. Angel dijo:

    Necesitas indicarle en el expect que prompt aparece cuando envias el password,
    asi lo probe y funciono, tambien le quite la opcion “BatchMode=no” porque si espera un usuario y password

    spawn sftp $USER@$HOST
    match_max 100000
    expect \”?assword:\”
    send — \”$PASS\r\”
    expect \”sftp>\” <—el expect espera este prompt y luego envia el get
    send — \"get archivo.txt\r\"
    #send — \"\r\"
    expect eof
    ")
    echo "==============="
    echo "$VAR"

  5. Angel dijo:

    Necesitas indicarle en el expect que prompt aparece cuando envias el password,
    asi lo probe y funciono, tambien le quite la opcion “BatchMode=no” porque si espera un usuario y password

    spawn sftp $USER@$HOST
    match_max 100000
    expect \”?assword:\”
    send — \”$PASS\r\”
    expect \”sftp>\” <—el expect espera este prompt y luego envia el get
    send — \"get archivo.txt\r\"
    #send — \"\r\"
    expect eof
    ")
    echo "==============="
    echo "$VAR"

  6. Angel dijo:

    o asi tambien te funciona

    #!/bin/bash
    HOST=”192.168.1.65″
    USER=”amongus”
    PASS=”pass1″
    CMD=$@
    VAR=$(expect -c ”
    spawn sftp $USER@$HOST
    match_max 100000
    expect \”?assword:\”
    send — \”$PASS\r\”
    expect \”sftp>\”
    send — \”$CMD \r\”
    #send — \”\r\”
    expect eof
    “)
    echo “===============”
    echo “$VAR”

    y lo ejecutas con

    bash remoto.sh “get archivo.txt”

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.