GNU/Linux >> Belajar Linux >  >> Linux

Apakah Mungkin Untuk Mendeteksi Saat File Telah Diunduh?

Kami memiliki server tempat skrip lain sFTP dan mengunduh file setiap hari.

Pertanyaan: Apakah mungkin untuk mendeteksi bahwa file telah diunduh dan kemudian saya mengarsipkan file secara otomatis setelah selesai?

Untuk memperjelas – Kami meng-host file dan orang lain datang dan mengunduhnya.

Ini adalah skrip yang mereka gunakan:

let $command = 'sftp -b /usr/tmp/file.sftp [email protected]'
show 'FTP command is ' $command
call system using $command #status

##file.sftp##

# Set local directory on PeopleSoft server
lcd /var/tmp
# Set remote directory on the remote server
cd ar/in
# Transfer all remote files to PeopleSoft
get file.dat
get file2.dat
# quit the session
bye

Jawaban yang Diterima:

Ada 3 jalan yang bisa saya pikirkan yang mungkin bisa memberi Anda solusi.

1. Subsistem sftp khusus

Anda dapat membungkus sftp-server daemon melalui sshd_config dan “timpa” dengan skrip Anda sendiri yang kemudian dapat mencegat sftp-server lakukan, dan kemudian bertindak ketika Anda melihat bahwa file telah diunduh. Mengganti sftp-server default di sshd_config itu mudah:

Subsystem       sftp    /usr/local/bin/sftp-server

Mencari tahu apa yang harus dilakukan dalam skrip pembungkus akan menjadi bagian yang sulit. Di /usr/local/bin/sftp-server :

#!/bin/sh

# ...do something...
chroot /my/secret/stuff /usr/libexec/openssh/sftp-server
# ...do something...

2. Perhatikan log

Jika Anda mengaktifkan debugging sftp-sever Anda bisa membuatnya menunjukkan log saat file dibuka/ditutup dan dibaca/ditulis ke/dari server SFTP. Anda dapat menulis daemon/skrip yang mengawasi log ini dan kemudian mencadangkan file saat diperlukan. Rincian lebih lanjut tentang cara mencapai ini sebagian sudah tercakup dalam jawaban saya untuk U&L Tanya Jawab ini:Level Pencatatan Aktivitas di SFTP serta di sini di entri blog ini berjudul:Pencatatan aktivitas sesi transfer file SFTP.

Log SFTP dapat ditingkatkan sehingga terlihat seperti ini:

Sep 16 16:07:19 localhost sftpd-wrapper[4471]: user sftp1 session start from 172.16.221.1
Sep 16 16:07:19 localhost sftp-server[4472]: session opened for local user sftp1 from [172.16.221.1]
Sep 16 16:07:40 localhost sftp-server[4472]: opendir "/home/sftp1"
Sep 16 16:07:40 localhost sftp-server[4472]: closedir "/home/sftp1"
Sep 16 16:07:46 localhost sftp-server[4472]: open "/home/sftp1/transactions.xml" flags WRITE,CREATE,TRUNCATE mode 0644
Sep 16 16:07:51 localhost sftp-server[4472]: close "/home/sftp1/transactions.xml" bytes read 0 written 192062308
Sep 16 16:07:54 localhost sftp-server[4472]: session closed for local user sftp1 from [172.16.221.1]

Anda kemudian perlu mengembangkan daemon/skrip yang akan memantau log untuk pasangan acara buka/tutup. Ini mewakili transfer file yang telah selesai. Anda juga dapat menggunakan syslog, yang dapat memantau aktivitas log “TUTUP” dan dapat digunakan untuk menyalin file yang ditransfer.

3. Incron

Anda dapat menggunakan event Inotify yang dihasilkan kernel Linux setiap kali sebuah file diakses. Ada layanan bernama Incron yang bekerja mirip dengan Cron. Di mana Cron bekerja berdasarkan waktu, Incron bekerja berdasarkan peristiwa file. Jadi, Anda dapat menyiapkan entri Incron yang akan memantau direktori unggahan SFTP Anda, dan setiap kali peristiwa file tertentu terdeteksi, salin file tersebut.

Terkait:Jelajahi file vmdk di Windows?

Lihat halaman manual inotify untuk deskripsi berbagai acara. Saya yakin Anda ingin menonton read() (IN_ACCESS ) diikuti oleh close() (IN_CLOSE_WRITE ). Ini untuk file yang disalin dari server SFTP.

Aturan Incron terlihat seperti ini:

<directory> <file change mask> <command or action>  options
/var/www/html IN_CREATE /root/scripts/backup.sh
/sales IN_DELETE /root/scripts/sync.sh
/var/named/chroot/var/master IN_CREATE,IN_ATTRIB,IN_MODIFY /sbin/rndc reload

Artikel ini berjudul:Linux incrond inotify:Monitor Directories For Changes And Take Action menunjukkan lebih banyak detail yang diperlukan, jika Anda ingin mencoba dan menggunakan opsi ini.


Linux
  1. Kapan File Dibuat?

  2. Encoding File Zip?

  3. Kapan File yang Dapat Dieksekusi Tidak?

  1. Mungkinkah Virus Windows Saat Diunduh Melalui Ubuntu Mempengaruhi Os Windows?

  2. Mengecualikan direktori saat membuat file .tar.gz

  3. Apakah mungkin menggunakan / dalam nama file?

  1. Apakah Mungkin Menggunakan `find -exec Sh -c` Dengan Aman?

  2. mkdir -p gagal saat direktori ada

  3. Bagaimana cara mendeteksi jika VT-X sudah dihidupkan di BIOS?