To jest bardzo podstawowe pytanie. Jestem po prostu całkiem nowy i nie mogę wymyślić, jak to zrobić. Googling niestety nigdzie mnie nie doprowadził.
Moim celem jest połączenie się z serwerem sftp na serwerze, przesłanie pliku, a następnie rozłączenie.
Mam następujący skrypt:
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
problem polega na tym, że ten skrypt ustanowi połączenie sftp, a następnie nic nie zrobi. Po ręcznym wpisaniu polecenia exit w połączeniu próbuje wykonać polecenie put, ale ponieważ sesja sftp została zamknięta, mówi tylko: polecenie put: nie znaleziono polecenia.
Jak mogę to poprawnie działać?
Dzięki
Odpowiedzi:
Możesz zmienić skrypt, aby przekazywać polecenia w dokumencie tutaj, np.
<<
Marker następuje nazwa (EOF
) informuje skrypt przekazać następujące wiersze aż nazwa znajduje się na początku linii (przez siebie).źródło
Może wolisz używać
scp
zamiastsftp
.scp
zachowuje się podobnie jak zwykłecp
polecenie, ale pliki mogą być zdalne:Spowoduje to skopiowanie pliku na komputerze lokalnym do katalogu na komputerze zdalnym, bez konieczności korzystania ze starego interfejsu poleceń w stylu ftp.
Te
ssh
,scp
isftp
usługi są zazwyczaj dostępne, jeśli którykolwiek z nich; ten sam program demon udostępnia je wszystkie jednocześnie. Zasadniczo administrator serwera może wyłączyć dowolne z nich, ale w praktyce zdarza się to dość rzadko.źródło
scp
jest już dostępny na mojej maszynieMożesz także użyć
-b
opcjisftp
wskazania pliku zawierającego polecenia dlasftp
.Na przykład możesz umieścić wszystkie swoje polecenia w pliku
sftp_commands.txt
:i działa
sftp
jako:Lub możesz przekazać polecenia również przez STDIN, jeśli nie chcesz używać pliku.
Od
man sftp
:źródło
Inną opcją byłoby użycie curl :
źródło