Isu
- Saya ingin secara otomatis mengunduh file melalui SFTP
- Saya mengatur server SFTP dan mekanisme penguncian
- Saya telah membuat skrip bash sederhana - script.sh
- Saya menambahkan entri di cron untuk skrip
Script, script.sh :
#!/bin/bash
sftp user@server:/home/user/file.txt
exit 0
Menjalankan skrip secara manual berfungsi dengan baik (file teks disimpan di direktori home), tetapi menambahkan script.sh (dengan izin yang tepat) untuk crontabtidak melakukan apa pun.
Entri crontab:
* * * * * /home/user/script.sh
Untuk otentikasi saya digunakan ssh-keygenuntuk membuat satu set kunci (pribadi, publik) dan mengatur otentikasi silang ke server SFTP.
Untuk otomatisasi skrip saya gunakan keychainuntuk otentikasi tanpa kata sandi.
Saat ini
Saat ini, saya memiliki skrip bernama script.sh yang terletak di direktori home "user" ( /home/user/).
Ketika dijalankan rootsecara manual, skrip mendapatkan file dari server SFTP, dan menempatkannya di /home/user/.
Itu tidak melakukan tindakan ini ketika dijalankan dari cronpekerjaan. Di cron, sftpperintah mendapat kesalahan.
Ide ide?
Sedang mengerjakannya
- Mengubah variabel HOME pada
/etc/crontabtidak menyelesaikan masalah - Menyatakan path lengkap dalam script.sh tidak menyelesaikan masalah
- Menyatakan variabel PATH di script.sh tidak menyelesaikan masalah
- Saya menangkap kesalahan dari
sftpperintah - itu 255
mengeksekusi skrip secara manual ( ./script.sh) masih berfungsi dengan sempurna ...
script.shlokasinya?
rootmemiliki akses ke kunci Anda. Anda harus menjalankan pekerjaan crontab sebagai pengguna Anda.
sftp -vvvdan tambahkan output ke pertanyaan, sehingga kita bisa melihat apa yang salah.