Ini adalah pertanyaan yang sangat mendasar. Saya cukup baru untuk bash dan tidak tahu bagaimana melakukan ini. Googling sayangnya tidak membuat saya ke mana pun.
Tujuan saya adalah untuk terhubung dengan sftp ke server, mengunggah file, dan kemudian memutuskan sambungan.
Saya memiliki skrip berikut:
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
masalahnya adalah, skrip ini akan membuat koneksi sftp dan kemudian tidak melakukan apa-apa. Setelah saya secara manual mengetikkan keluar dalam koneksi itu mencoba untuk mengeksekusi perintah put tetapi karena sesi sftp telah ditutup itu hanya mengatakan put: perintah tidak ditemukan.
Bagaimana saya bisa membuat ini berfungsi dengan baik?
Terima kasih
Jawaban:
Anda dapat mengubah skrip Anda untuk memberikan perintah dalam dokumen di sini, misalnya,
The
<<
penanda diikuti dengan nama (EOF
) memberitahu script untuk lulus baris berikut sampai nama ditemukan pada awal baris (dengan sendirinya).sumber
Anda mungkin lebih suka menggunakan
scp
daripadasftp
.scp
berperilaku seperticp
perintah biasa , tetapi file dapat di-remote:Ini menyalin file di komputer lokal Anda ke direktori di mesin jarak jauh tanpa harus menggunakan antarmuka perintah ftp-style sekolah-tua.
Layanan
ssh
,,scp
dansftp
layanan biasanya tersedia jika ada di antara mereka; program daemon yang sama menyediakan semuanya secara bersamaan. Pada prinsipnya administrator server dapat memilih untuk menonaktifkan salah satu dari mereka, tetapi dalam praktiknya itu cukup langka.sumber
scp
sudah tersedia di komputer sayaAnda juga dapat menggunakan
-b
opsisftp
untuk menunjukkan file yang berisi perintah untuksftp
.Misalnya, Anda bisa meletakkan semua perintah Anda di file
sftp_commands.txt
:dan jalankan
sftp
sebagai:Atau Anda dapat meneruskan perintah melalui STDIN juga jika Anda tidak ingin menggunakan file.
Dari
man sftp
:sumber
Pilihan lain adalah menggunakan curl :
sumber