Usar scp y ssh en un scripts de shell
Publicado: 25 Junio, 2010 - 01:37 Usar scp y ssh en un scripts de shell
Hola
Quiero hacer un scripts para enviar datos a varias maquinas de la red local, para ello pienso usar el comando
scp -r Datos user@ip:~el problema es que no se como le puedo introducir la contrasena a scp desde el scripts.
Saludos
- Inicie sesión o regístrese para enviar comentarios
- 2461 lecturas


Esto te podria ayudar
http://bootlog.org/blog/linux/tip-ssh-scp-y-un-as-bajo-la-manga
Saludos.
Oye el blog esta muy bueno pero ademas desearia saber como puedo pasarle a scp la contrasenna mediante un scripts. Aunque con la informacion del blog puedo resolver mi problema. Muchas gracias
Hola
Quiero hacer un scripts para enviar datos a varias maquinas de la red local, para ello pienso usar el comando
scp -r Datos user@ip:~el problema es que no se como le puedo introducir la contrasena a scp desde el scripts.
Saludos
Busca usar un par de claves ,rsa/dsa para cada cliente .
También puedes probar a escribir el script usando expect, funciona poniendo el texto que el espera, y entonces le pasa a la terminal el texto que tu le digas, en este caso el usuario y luego la contraseña. Lo verás mejor con un ejemplo:
#!/bin/bash/usr/bin/expect <<EOD
spawn ssh usuario@maquina
expect “password:”
send “password”
expect “$”
expect eof
EOD
Hay muchos tutoriales por google, una vez le has cogido el truco va muy bien.
Salut!
He intentado con expect y me funciona bien, pero todavia tengo un problema el comando que lanzo con spawn no termina de ejecutarse. Este es el scripts de expect que elabore:
#! /usr/bin/expectset IP [lindex $argv 0]
spawn scp -r Datos estudiantes@${IP}:~/Desktop/
expect {
"yes?" { send -- "yes\r" }
}
expect {
"password:" { send -- "estudiantes\r" }
}
expect eof
exit
Y este es shell que lo usa:
#! /bin/shlist_ips=`nmap 192.168.101.200-255 | grep Inte | cut -d" " -f4 | cut -d":" -f1`
for ip in $list_ips
do
./run_expect.sh ${ip}
done
Lo que sucede es que la carpeta "Datos" no se termina de copiar completamente para la maquina, al parecer se recibe el fin de fichero antes de tiempo. Sea lo que sea no tengo idea, tal vez es que esta mal programado pero no se.
Creo que lo que te pasa es que el script está terminando antes de que scp haya acabado de copiar el archivo. Prueba a añadirle un "expect “$”" para que espere a que la shell vuelva a estar disponible (el comando haya terminado) quedaría así:
#! /usr/bin/expectset IP [lindex $argv 0]
spawn scp -r Datos estudiantes@${IP}:~/Desktop/
expect {
"yes?" { send -- "yes\r" }
}
expect {
"password:" { send -- "estudiantes\r" }
}
expect “$”
expect eof
exit
Ok, voy a probar asi,
Gracias