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 crontab
tidak melakukan apa pun.
Entri crontab:
* * * * * /home/user/script.sh
Untuk otentikasi saya digunakan ssh-keygen
untuk membuat satu set kunci (pribadi, publik) dan mengatur otentikasi silang ke server SFTP.
Untuk otomatisasi skrip saya gunakan keychain
untuk otentikasi tanpa kata sandi.
Saat ini
Saat ini, saya memiliki skrip bernama script.sh yang terletak di direktori home "user" ( /home/user/
).
Ketika dijalankan root
secara manual, skrip mendapatkan file dari server SFTP, dan menempatkannya di /home/user/
.
Itu tidak melakukan tindakan ini ketika dijalankan dari cron
pekerjaan. Di cron
, sftp
perintah mendapat kesalahan.
Ide ide?
Sedang mengerjakannya
- Mengubah variabel HOME pada
/etc/crontab
tidak menyelesaikan masalah - Menyatakan path lengkap dalam script.sh tidak menyelesaikan masalah
- Menyatakan variabel PATH di script.sh tidak menyelesaikan masalah
- Saya menangkap kesalahan dari
sftp
perintah - itu 255
mengeksekusi skrip secara manual ( ./script.sh
) masih berfungsi dengan sempurna ...
script.sh
lokasinya?
root
memiliki akses ke kunci Anda. Anda harus menjalankan pekerjaan crontab sebagai pengguna Anda.
sftp -vvv
dan tambahkan output ke pertanyaan, sehingga kita bisa melihat apa yang salah.