¿Quieres mejorar esta pregunta? Actualice la pregunta para que esté relacionada con el tema de Unix y Linux Stack Exchange.
Cerrado hace 2 años.
Mejorar esta pregunta
¿Hay alguna manera de usar los múltiples comandos en sshpass
? , lo intenté con combinaciones de diferencia pero arroja un error.
$ sudo sshpass -p $password ssh -t -oStrictHostKeyChecking=no [email protected]$ipaddress << EOF
command_one
command_two
command_three
EOF
¿Cuál es el comando correcto y exacto? Por favor, deme un ejemplo si es posible.
Respuesta aceptada:
Su solución funciona con o sin sshpass, si no funciona para usted, es probable que haya algún otro problema.
También tenga en cuenta que siempre debe citar todas las variables.
Además, no debe deshabilitar la verificación estricta de claves de host a la ligera. Si su clave de host cambia con frecuencia, es probable que su servidor esté comprometido
Sin embargo, aquí hay algunas formas de lograr su objetivo:
Usando un separador de comando (;
, &&
, ||
)
sshpass -p "$password" ssh -t -oStrictHostKeyChecking=no "[email protected]" 'command_one; command_two; command_three'
Usando un here-doc (EOF de comillas simples para que las sustituciones de variables/comandos se expandan en el host remoto):
sshpass -p "$password" ssh -t -oStrictHostKeyChecking=no "[email protected]" <<EOF
command_one
command_two
command_three
EOF
Usando un archivo separado:
archivo.sh
command_one
command_two
command_three
Luego ejecuta así:
cat file.sh | sshpass -p "$password" ssh -t -oStrictHostKeyChecking=no "[email protected]"
Usando un túnel ssh:
sshpass -p "$password" ssh -f -L 3306:localhost:3306 "[email protected]" sleep 300 # This will open a tunnel to the remote host and hold it open for 5 minutes
ssh -T "[email protected]" 'command_one'
ssh -T "[email protected]" 'command_two'
ssh -T "[email protected]" 'command_three'