Saltar al contenido

Use Expect en un script Bash para proporcionar una contraseña a un comando SSH

Agradeceríamos tu ayuda para compartir nuestras secciones referente a las ciencias informáticas.

Solución:

Mezclar Bash y Expect no es una buena manera de lograr el efecto deseado. Intentaría usar solo Expect:

#!/usr/bin/expect
eval spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no [email protected]$myhost.example.com

# Use the correct prompt
set prompt ":|#|\$"
interact -o -nobuffer -re $prompt return
send "my_passwordr"
interact -o -nobuffer -re $prompt return
send "my_command1r"
interact -o -nobuffer -re $prompt return
send "my_command2r"
interact

La solución de muestra para bash podría ser:

#!/bin/bash
/usr/bin/expect -c 'expect "n"  eval spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no [email protected]$myhost.example.com; interact '

esto va a esperar Ingresar y luego regrese (por un momento) a la sesión interactiva.

La forma más fácil es usar sshpass. Esto está disponible en los repositorios de Ubuntu/Debian y no tiene que lidiar con la integración de expect con Bash.

Un ejemplo:

sshpass -p ssh 
sshpass -ptest1324 ssh [email protected] ls -l /tmp

El comando anterior se puede integrar fácilmente con un script Bash.

Nota: Por favor, lea el Consideraciones de Seguridad sección en man sshpass para una comprensión completa de las implicaciones de seguridad.

Agregue el comando Expect ‘interactuar’ justo antes de su EOD:

#!/bin/bash

read -s PWD

/usr/bin/expect <[email protected]$myhost.example.com
expect "password"
send "$PWDn"
interact
EOD
echo "you're out"

Esto debería permitirle interactuar con la máquina remota hasta que cierre la sesión. Entonces estarás de vuelta en Bash.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *