suche perlscript der files via ftp löschen kann

Dieses Thema: "suche perlscript der files via ftp löschen kann" im Forum "Ruby, php, Perl, Python ..." wurde erstellt von ccc, 12.01.2004.

  1. ccc

    ccc Routinier

    Dabei seit:
    01.11.2003
    Beiträge:
    288
    Zustimmungen:
    0
    hallo

    suche ein perlscript der alle files,
    die mit td* anfangen und älter als eine woche sind,
    via ftp auf dem ftp server löschen kann.

    es ist eine externe maschine und ich kann nur via ftp verbinden.

    gruss
    ccc
     
  2. Anzeige

    schau mal hier --> (hier klicken). Viele Antworten inkl. passender Shell-Befehle!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. Steve

    Steve 13te

    Dabei seit:
    13.04.2002
    Beiträge:
    381
    Zustimmungen:
    0
    schau die NET::FTP an. Damit sollte eigentlich schnell was zaubern lassen, vorrausgesetzt man bekomm irgendwie das alter der Datein damit raus.

    Steve
     
  4. #3 lordlamer, 13.01.2004
    lordlamer

    lordlamer Haudegen

    Dabei seit:
    15.05.2003
    Beiträge:
    703
    Zustimmungen:
    0
    Ort:
    hamburg
    hi!

    wenn du dabei noch hilfe brauchst melde dich bei mir. ich glaub da würden wir fix was gezaubert bekommen.

    bis dann
     
  5. #4 ExRevel, 13.01.2004
    ExRevel

    ExRevel Routinier

    Dabei seit:
    16.02.2003
    Beiträge:
    430
    Zustimmungen:
    0
    Ort:
    Stuttgart
    Hi...

    ist alles richtig was hier gesagt wurde! Du brauchst nur das FTP Modul und dann ein paar der Befehle, eine uebersicht erhaelst du entweder ueber:
    Code:
    man Net::FTP
    
    oder ueber die perldoc wenn sie bei dir installiert ist oder ueber die Perl Core Documentation.

    Damit kannst du dich per constructor my $ftp->new(...) und $ftp->login() auf dem server einloggen und erhaelst mittels @list = $ftp->dir("/example_dir") ein array das pro element eine datei mit ihren informationen enthaelt, diese kannst du mittels regexp nach namen und alter durchsuchen und die entsprechenden dateien mittels $ftp->delete($file) loeschen.

    ciao ExRevel
     
  6. ccc

    ccc Routinier

    Dabei seit:
    01.11.2003
    Beiträge:
    288
    Zustimmungen:
    0
    danke aber habe noch eine frage:
    wie lösche ich alle files, die älter als 7 tage sind ?

    gruss
    ccc
     
  7. #6 ExRevel, 05.02.2004
    ExRevel

    ExRevel Routinier

    Dabei seit:
    16.02.2003
    Beiträge:
    430
    Zustimmungen:
    0
    Ort:
    Stuttgart
    Du wirst wohl oder übel alle arrayelemente durchsuchen müssen. Du kannst ja mittels:
    Code:
    my $time = localtime();
    
    my @time = split(' ', $time);
    
    Den derzeitigen Tag und Monat bestimmen, der Tag steht in $time[2] und der Monat in $time[1]. Nun solltest du mit ein bisschen nachdenken in der Lage sein selbst eine kleine Routine zu schreiben, die abfragt ob die Datei älter ist als 7 Tage und sie dann gegebenen falls loescht. Wenn es doch schwierigkeiten gibt, dann sag aber ruhig bescheid, dann helfe ich gerne weiter, nur werde ich nicht das script fuer dich schreiben! Bin ja kein Arbeitsbueffel! ;)

    ciao Exi
     
  8. ccc

    ccc Routinier

    Dabei seit:
    01.11.2003
    Beiträge:
    288
    Zustimmungen:
    0
    das verstehe ich, aber komme mit diesen angaben nicht weiter.

    danke und gruss
    ccc
     
  9. #8 ExRevel, 05.02.2004
    Zuletzt bearbeitet: 05.02.2004
    ExRevel

    ExRevel Routinier

    Dabei seit:
    16.02.2003
    Beiträge:
    430
    Zustimmungen:
    0
    Ort:
    Stuttgart
    Nagut, dann gebe ich dir einen etwas umfangreicheren hinweis, der auch für die tage alleine funktioniert, du muesstest es nur noch so anpassen, das es auch auf die monate ruecksicht nimmt. Ist halt nur ein schnelles beispiel, aber mit ein 2 abfragen mehr ist es getan...
    Code:
    #!/usr/bin/perl
    
    use strict;
    use Net::FTP;
    
    my @time = split(' ', localtime());
    
    my $host = "host.de";
    
    my $username = "ccc";
    
    my $password = "cccs_pwd";
    
    my $directory = "/";
    
    my $ftp = Net::FTP->new($host, Debug => 0);
    
    if(defined($ftp)){
    
    	$ftp->login($username, $password);
    	
    	$ftp->cwd($directory);
    	
    	my @filelist = $ftp->dir($directory);
    	
    	for( my $n = 0; $n < @filelist; $n++){
    
    		my @fileinfo = split(' ', $filelist[$n]);
    		
    		# element 6 enthaelt den tag, 8 den namen
    		# fuers weitere, 5 den Monat und 7 die zeit.
    				
    		if( $fileinfo[6]+7 < $time[2] ){
    		
    			$ftp->delete($fileinfo[8]);
    		}
    	}
    }
    
    $ftp->quit();
    
    Ich hoffe es hilft dir nun weiter...

    ciao Exi
     
  10. ccc

    ccc Routinier

    Dabei seit:
    01.11.2003
    Beiträge:
    288
    Zustimmungen:
    0
    herzlichen dank !

    es hilft sicher weiter.

    gruss und schönen abend
    ccc
     
  11. Steve

    Steve 13te

    Dabei seit:
    13.04.2002
    Beiträge:
    381
    Zustimmungen:
    0
    @ ExRevel

    ein foreach ist perliger.

    Steve
     
  12. ccc

    ccc Routinier

    Dabei seit:
    01.11.2003
    Beiträge:
    288
    Zustimmungen:
    0
    hi Steve

    was meinst du damit genau?

    gruss
    ccc
     
  13. #12 ExRevel, 06.02.2004
    ExRevel

    ExRevel Routinier

    Dabei seit:
    16.02.2003
    Beiträge:
    430
    Zustimmungen:
    0
    Ort:
    Stuttgart
    @Steve, das sind die gruende warum ich es einfach halte fuer leute die nicht so viel erfahrung haben, siehe ccc.

    @ccc er meinte das ich auch eine foreach schleife statt einer normalen forschleife haette nutzen koennen.

    Code:
    foreach my $n (@filelist){ ... }
    
    ciao
     
  14. Steve

    Steve 13te

    Dabei seit:
    13.04.2002
    Beiträge:
    381
    Zustimmungen:
    0
    kann ja mal schreiben was ich anders gemacht hätte.

    Code:
    foreach (@filelist) {
       my @fileinfo = split;
    ...
    }
    
    mit dem Datum weiß ich auch nicht. Ich kenne die Rückgabe von dir nicht. Außerdem gibt localtime, sowieso schon eine List zurück deshalb grübele ich die ganze Zeit nach dem Sinn von diesem split. Dann noch ne kleine style-Frage:

    Code:
    my $ftp = Net::FTP->new($host, Debug => 0);
    
    if(defined($ftp)){
    ...}
    
    würde ich

    Code:
     my $ftp = Net::FTP->new($host, Debug => 0) or die "Could not establish ftp-connection: $!\n";
    

    Steve
     
  15. #14 ExRevel, 06.02.2004
    Zuletzt bearbeitet: 06.02.2004
    ExRevel

    ExRevel Routinier

    Dabei seit:
    16.02.2003
    Beiträge:
    430
    Zustimmungen:
    0
    Ort:
    Stuttgart
    Das is schon alles ganz richtig was du da schreibst, aber es geht nicht darum irgendwelche programmiertricks an anfaenger weiterzugeben, ich kann ihm auch programme geben wo er nicht eine zeile versteht, nur sollte man sich an tutorialstandards orientieren, damit er es auch nachvollziehen kann.

    Und zu dem localtime(), versuch mal localtime einfach an ein array zu uebergeben, da erhaelst du keine schöne list:
    Code:
    @time = localtime();
    
    print "@time\n";
    
    Gibt dir nur Zahlen aus, nicht das was man sich zum vergleich beim ftp wuenscht.

    Und zu dem defined oder dem die... das ist die frage, ich habe den teil aus einem daemon script von mir kopiert, wo ich einen abbruch des programms nicht gebrauch kann nur weil es meinen router mal wieder gekickt hatte, vllt will ja auch ccc es so laufen lassen, das kann man ja nicht wissen.

    Naja, ist ja auch nicht der sinn hier darueber zu diskutieren wie man das schoener machen kann, ein sehr bekannter mensch sagte mal, der code muss lesbar und funktionell sein und es macht wenig sinn sich mit tricks aufzuhalten was bei opensource immer nur negativ ist... da ihn andere lesen sollen und in unserem fall ein blutiger anfaenger ;) (nix gegen dich ccc)

    ciao Exi
     
  16. Steve

    Steve 13te

    Dabei seit:
    13.04.2002
    Beiträge:
    381
    Zustimmungen:
    0
    nee,

    so war das auch nicht gemeint. Ich dachte das macht es vertändlicher. Nix für ungut. ;)
    Steve
     
Thema:

suche perlscript der files via ftp löschen kann

Die Seite wird geladen...

suche perlscript der files via ftp löschen kann - Ähnliche Themen

  1. Artikel: Suche und Analyse in Echtzeit mit Elasticsearch und dem Elastic Stack

    Artikel: Suche und Analyse in Echtzeit mit Elasticsearch und dem Elastic Stack: Mit dem Elastic Stack kann man in Echtzeit die wichtigen Informationen aus jedem Datensatz herauslesen, ungeachtet seiner Größe. Dieser Artikel...
  2. Dansguardian blockt nur Websuche und nicht die Bidlersuche - verzweifelt!

    Dansguardian blockt nur Websuche und nicht die Bidlersuche - verzweifelt!: Hallo liebe Gemeinde, ich habe dansguardian, Squid und Clamav installiert auf einem Ubuntu 14.04 LTS System, der benutzte Browser ist Firefox, in...
  3. Suche WLAN Nano USB Dongle mit 802.11n Standard für Linux

    Suche WLAN Nano USB Dongle mit 802.11n Standard für Linux: Hallo allerseits. Ich bin auf der Suche nach einem Nano USB Dongle welches den 802.11n Standard kann und unter Linux (ab Kernelversion 3.10...
  4. Suche Dateinpfad in .txt

    Suche Dateinpfad in .txt: Hallo, mein Problem ist folgendes: Ich habe Textdatein in denen zwei für mich relevante Dinge stehen. Zum einen die Zeile: Enabled:...
  5. Google entfernt Sprachsuche aus Chromium

    Google entfernt Sprachsuche aus Chromium: Nachdem eine Untersuchung eines Entwicklers für Unmut sorgte, weil Chromium im Hintergrund unfreie, binäre Dateien heruntergeladen habe, hat sich...