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.