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
scplugar desftp.scpse comporta de manera muy similar alcpcomando 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,scpysftplos 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
scpya está disponible en mi máquinaTambién puede usar la
-bopción desftpindicar un archivo que contiene comandos parasftp.Por ejemplo, puede poner todos sus comandos en el archivo
sftp_commands.txt:y correr
sftpcomo: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