Aku nggak jelas apakah pake FTP command kita bisa tau file mana yang terakhir baru diupload. Aku coba di Linux, aku pake command "ls -ltu", list file akan disortir berdasarkan jam dan tanggal file tersebut di create (atau modify). Tapi aku nggak yakin tiap Unix system akan ngerti perintah "ls -ltu".
Tambahan, Perl Net::FTP nggak bisa ngeluarin perintah "ls -ltu". Kalo pake "ls" atau "dir", file selalu disortir secara lexical (1, 10, 11, 2, 20, 3, etc).
Jadi aku pikir amannya kita tulis aja sorting file sendiri. Kira2 sih algoritma-nya kayak gini:
Anggap 3 files: file1.txt, file2.txt, file3.txt
Pisahkan nomor urut dari file name: "file" + "1" + ".txt", "file" + "2" + ".txt"
Check nomor urut, dan cari maksimalnya.
Ketemu nomor maksimal - ketemu file terakhir.
Contoh script kira2 demikian: --- #!/usr/local/bin/perl
use Net::FTP;
# Angka terkecil, negatif. $Max = -1;
$ftp = Net::FTP->new("server.disono.com", Debug => 0);
$ftp->login("login_ku",'passwd_ku');
$ftp->cwd("/direktori/data");@files = $ftp->ls;
foreach $file (@files)
{
# Pisahkan nomor urut dari nama file pake regular expression
# (harus dirubah sesuai dengan penamaan file anda
$file =~ /[a-zA-Z_]+(\d+)\.txt/;# Cari maksimum. $1 didapat dari (\d+) di atas. $Max = $1 if ($1 > $Max); }
# Bentuk ulang nama file (harus diubah juga) $latest_file = 'file' . $Max . '.txt';
# Download file. File akan didownload di current direktori $ftp->get($latest_file);
$ftp->quit; ---
Ada beberapa yang harus dirubah. Salah satunya regular expression untuk mencomot nomor urut dari filename. Juga "man Net::FTP".
Semoga berguna, Andrew...
Jhon Ramawi Putra wrote:
Andrew Hadinyoto <[EMAIL PROTECTED]> wrote on 01/26/2004 10:07:23 PM:
Halo,
Untuk otomatisasi FTP, kalo nggak keberatan pake Perl, ini ada contoh
script diambil dari "man Net::FTP".
---
use Net::FTP;
$ftp = Net::FTP->new("some.host.name", Debug => 0) or die "Cannot connect to some.host.name: $@";
$ftp->login("anonymous",'-anonymous@') or die "Cannot login ", $ftp->message;
$ftp->cwd("/pub") or die "Cannot change working directory ", $ftp->message;
$ftp->get("that.file") or die "get failed ", $ftp->message;
$ftp->quit;
---
Ada juga perintah "ls", jadi "@list = $ftp->ls("/pub");", dari sini baru
disortir arraynya untuk mencari file dengan nomor terakhir. Kalo
Net::FTP nggak diinstall di distribusi anda, anda bisa liat di
"http://search.cpan.org/~gbarr/libnet-1.17/"
Semoga ngebantu,
Andrew...
Jhon Ramawi Putra wrote:
diDear All,
Maaf nih.. posting sendiri ... jawab sendiri... :)
Command FTP yang saya maksud adalah kalau dibentuk menjadi suatu script
FTP, karena jumlah file dengan nama dan penomoran berurut akan selalu
bertambah, dan script FTP tersebut akan dijalankan oleh suatu aplikasi
lewatClient secara otomatis (jadi user nggak akan pernah menjalankan FTP
nya.console).
Solusi saya saat ini dengan melakukan modifikasi di aplikasi client
Tapi, kalau ada yang mau sharing contoh script FTPnya, i'll be a very happy man... :)
T I A
Best Regards,
Jhon Ramawi Putra
Mas Andrew,
Thanks for the reply.
Secara umum, aplikasi yang saya bangun dijalankan di user yg menggunakan OS Windows, dengan alur:
1. User menentukan IP Server (UnixTru64) yg ingin digunakan
2. Aplikasi akan menjalankan script FTP via shell windows
3. Pada script FTP terdapat perintah autentifikasi, set local & remote directory, download file, tutup koneksi.
4. Aplikasi akan mengecek setiap 3 detik apakah file yg diminta telah selesai di download
5. Jika sudah, isi file tsb dibaca dan aplikasi melanjutkan proses lainnya.
File yg ingin didownload oleh user sebenarnya dihasilkan oleh aplikasi server, dimana akan menghasilkan file "FILE0.TXT". Namun, jika ternyata file tsb telah ada, aplikasi tsb secara otomatis akan menghasilkan nama file "FILE1.TXT", dan seterusnya.
Nah, permasalahannya, bagaimana script FTP sehingga bisa membaca file dengan urutan terakhir? Atau minimal dengan memanfaatkan kelebihan fungsi-fungsi FTP yang dimiliki oleh Server.
Memang telah terpikirkan, menjalankan script FTP yng mengandung perintah ls, kemudian hasilnya dimasukkan ke suatu file. Selanjutnya file tsb didownload dan isinya di baca oleh aplikasi client, sehingga didapat nama file dengan urutan terakhir. Kemudian scr otomatis meng-create script FTP untuk mendownload file terakhir tsb.
By the way, scoop kerja saya hanya di area aplikasi client dan script FTP, jadi nggak bisa melakukan modifikasi di aplikasi server. Tapi , dengan skenario kita yg terakhir, ukuran file yg cukup kecil, dan speed transfer yg cukup tinggi, saya kira masih applicable. :)
T I A
Best Regards, Jhon Ramawi Putra
-- Berhenti langganan: [EMAIL PROTECTED] Arsip dan info: http://linux.or.id/milis.php
