Esta es una pregunta muy básica que soy bastante nuevo en bash y no pude entender cómo hacer esto. Googlear desafortunadamente no me llevó a ninguna parte.
Mi objetivo es conectarme con sftp a un servidor, cargar un archivo y luego desconectarme.
Tengo el siguiente script:
UpdateJar.sh
#!/bin/bash
sftp -oPort=23 [email protected]:/home/kalenpw/TestWorld/plugins
#Change directory on server
#cd /home/kalenpw/TestWorld/plugins
#Upload file
put /home/kalenpw/.m2/repository/com/Khalidor/TestPlugin/0.0.1-SNAPSHOT/TestPlugin-0.0.1-SNAPSHOT.jar
exit
El problema es que este script establecerá una conexión sftp y luego no hará nada. Una vez que escribo manualmente exit en conexión, intenta ejecutar el comando put pero debido a que la sesión sftp se ha cerrado, solo dice put: comando no encontrado.
¿Cómo puedo hacer que esto funcione correctamente?
Gracias
Respuestas:
Puede cambiar su script para pasar comandos en un documento aquí, por ejemplo,
El
<<
marcador seguido del nombre (EOF
) le dice al script que pase las siguientes líneas hasta que el nombre se encuentre al comienzo de la línea (por sí mismo).fuente
Es posible que prefiera usar en
scp
lugar desftp
.scp
se comporta de manera muy similar alcp
comando ordinario , pero los archivos pueden ser remotos:Esto copia el archivo en su máquina local en un directorio en la máquina remota sin tener que usar la interfaz de comando de estilo ftp de la vieja escuela.
Las
ssh
,scp
ysftp
los servicios están generalmente disponibles si alguno de ellos son; el mismo programa daemon los proporciona a todos simultáneamente. En principio, el administrador del servidor podría optar por desactivar cualquiera de ellos, pero en la práctica eso es bastante raro.fuente
scp
ya está disponible en mi máquinaTambién puede usar la
-b
opción desftp
indicar un archivo que contiene comandos parasftp
.Por ejemplo, puede poner todos sus comandos en el archivo
sftp_commands.txt
:y correr
sftp
como:O también puede pasar los comandos a través de STDIN si no desea utilizar un archivo.
De
man sftp
:fuente
Otra opción sería usar curl :
fuente