ZIP starten
Harald Gabler
- perl
0 Rolf0 Frank Schönmann0 Rolf
0 Rolf0 Harald Gabler0 Rolf0 Harald Gabler0 Rolf
Hallo!
Ich würde gerne einige Dateien auf meinem virtuellen Server mit dem Programm ZIP packen. Der Aufruf von ZIP soll über ein Perl-Script erfolgen. Kann mir bitte jemand verraten wie der Aufruf eines Programmes mit Parametern funktioniert? Alleine komme ich leider nicht weiter.
Vielen Dank
Harald
Hallo!
Ich würde gerne einige Dateien auf meinem virtuellen Server mit dem Programm ZIP packen. Der Aufruf von ZIP soll über ein Perl-Script erfolgen. Kann mir bitte jemand verraten wie der Aufruf eines Programmes mit Parametern funktioniert? Alleine komme ich leider nicht weiter.
Vielen Dank
Harald
Hallo,
in PERL version 5.005_02 built for MSWin32-x86-object
gibt es das Modul "tar".... tar ist zip sehr ähnlich und mit WinCommander bzw. Winzip gleichermassen zu handhaben.
Ich hab mit dem TAR Modul zwar auch noch nichts gemacht, aber vielleicht ist das was für Dich. Die Dokumentation zum TARmodul ist gut beschrieben:
http://www.activestate.com/activeperl/docs/ bzw. im Startmenu, falls Du og. PERL inst. hast.
Viele Grüße, Rolf
PS: aus der Doku...
use Archive::Tar;
$tar = Archive::Tar->new();
$tar->read("origin.tar.gz",1);
$tar->add_files("file/foo.c", "file/bar.c");
$tar->add_data("file/baz.c","This is the file contents");
$tar->write("files.tar");
hi!
gibt es das Modul "tar".... tar ist zip sehr ähnlich und mit WinCommander bzw. Winzip
gleichermassen zu handhaben.
TAR hat mit ZIP überhaupt nichts zu tun und auch nur sehr wenig gemeinsam. TAR ist ein Archivprogramm, das einfach mehrere Dateien aneinander hängt. ZIP ist ein Komprimierungsprogramm, das Dateien - wie der Name sagt - komprimiert.
bye, Frank!
TAR hat mit ZIP überhaupt nichts zu tun und auch nur sehr wenig gemeinsam. TAR ist ein Archivprogramm, das einfach mehrere Dateien aneinander hängt. ZIP ist ein Komprimierungsprogramm, das Dateien - wie der Name sagt - komprimiert.
bye, Frank!
Grüß Dich Frank,
Du hast Recht: TAR hängt einfach Dateien aneinander - stimmt! Jetzt wo ich das f* TAR-Modul mal getestet hab sehe ich das auch... ABER: mit dem tarModul kannst Du festlegen, ob eine Komprimierung erfolgen soll oder nicht und - Du kannst so erzeugte Dateien (egal ob die nu *.zip oder *.tar heissen) mit Winzip oder WinCommander öffnen.
Dat geiht! Guck moi:
---listing TestScript zu TAR--->
@lle = ("pip.pl", "ein.pl", "search.pl", "base.csv", "cgi-lib.pl");
$compr = 1;
use Archive::Tar;
$tar = Archive::Tar->new();
$tar->add_files(@lle);
$tar->write('file.zip',$compr) ;
$tar->write('file.tar') ;
<---Ende Test---<
Coole Mucke das TAR-Modul oder was meinst Du ;-)
Viele Grüße, Rolf
Hallo!
Ich würde gerne einige Dateien auf meinem virtuellen Server mit dem Programm ZIP packen. Der Aufruf von ZIP soll über ein Perl-Script erfolgen. Kann mir bitte jemand verraten wie der Aufruf eines Programmes mit Parametern funktioniert? Alleine komme ich leider nicht weiter.
Vielen Dank
Harald
Hallo Harald, zwei kleine Ergänzungen hätt ich da noch zu meinem Posting von heute Mittag...
1. Vorschlag - Das Problem mit einer BatchDatei lösen, sieht so aus:
---listing sh.bat--->
@echo off
REM Shell Befehle ausführen
REM Schreibe in die nächste(n) Zeile(n) Dein(e) Shell-Befehl(e) mit oder ohne Parameter(n)
REM Die folgenden Zeilen Melden den Vollzug an den Browser!
echo Content-type:text/html
echo.
echo.
echo Shell-Befehl ausgeführt!!!
<---sh.bat im cgi-bin/verzeichnis ablegen---<
2. Vorschlag - Pipes in PERL
geht so:
---ShellAufruf aus PERL-->
open (PIP, " 'ShellKommando -parameter'");
close (PIP);
print "content-type:text/html\n\n";
print "Shell-Befehl ausgeführt!!!";
<---pip.pl im cgi-bin/verzeichnis ablegen---<
Beides habe ich grad unter NT getestet, geht. Als ShellKommando kannst Du praktisch so Dein ZIP-Proggi mit oder ohne Parameter aufrufen.
Viele Grüße, Rolf
PS: Das TAR-Modul in PERL5 werd ich jetzt auch noch testen.... interessiert mich nunmehr persönlich.
Fakt ist eines: TAR-Dateien können mit WinZip oder mit WinCommander unter NT einwandfrei bearbeitet werden. Aber das sagte ich ja schon ;-)
Hallo Rolf!
Danke für Deine Bemuehungen. Das Ganze soll auf einem Linux-Server laufen. Ich habe jetzt Variante 2 ausprobiert. Hier das angepasste Script:
------------------------------
#!/usr/bin/perl
open (PIP, " '/usr/bin/zip /usr/www/htdocs/netcamera/forum/forum.zip /usr/www/htdocs/netcamera/forum/forum.htm'");
close (PIP);
print "content-type:text/html\n\n";
print "Shell-Befehl ausgeführt!";
------------------------------
Es wird zwar "Shell-Befehl ausgeführt!" angezeigt, aber leider kein Archiv angelegt. Hast Du vielleicht eine Ahnung warum?
Auf die Server-Installation habe ich keinen Einfluss. Deshalb weiss ich auch nicht, ob das gesprochene Modul installiert ist.
Viele Gruesse
Harald
Hallo Harald, vielen Dank für Dein Feedback also:
---schnipp-->
open (PIP, " '/usr/bin/zip /usr/www/htdocs/netcamera/forum/forum.zip /usr/www/htdocs/netcamera/forum/forum.htm'");
<---schnapp---<
in die Zeile
open (PIP, " 'ShellKommando'");
muss die Befehlszeile='ShellKommando' rein. Wenn '/usr/bin/zip /usr/www/htdocs/netcamera/forum/forum.zip /usr/www/htdocs/netcamera/forum/forum.htm' die Befehlszeile ist, gib die mal ohne die einfachen Hochkommas ein.
Noch ein Beispiel zu PIPE unter NT:
open (CITRONE, " copy /b c:\druck.prn LPT1"):
close (CITRONE);
Also: unter NT wie auch unter LINUX gilt:
-den HANDLER (CITRONE, PIP) kannst Du nennen wie Du möchtest
-Das ShellKommando muss hinter dem PIPEsymbol " " notiert werden.
Bitte teste das noch einmal, ansonsten bis morgen ja?
Viele Grüße, Rolf
Hallo Rolf!
muss die Befehlszeile='ShellKommando' rein. Wenn '/usr/bin/zip /usr/www/htdocs/netcamera/forum/forum.zip /usr/www/htdocs/netcamera/forum/forum.htm' die Befehlszeile ist, gib die mal ohne die einfachen Hochkommas ein.
Nach Entfernung der einfachen Hochkommas funktionierte das Script, allerdings nur wenn ich es per Telnet starte. Ich kann es mir zwar nicht vorstellen, aber vielleicht stimmt etwas mit den Pfaden nicht. Morgen werde ich mal meinem Provider mailen. Dank Deiner Hilfe kann ich ja jetzt was vorweisen und eine konkrete Frage stellen.
Danke und viele Gruesse
Harald
Hallo Harald,
danke für Dein Feedback - hört sich doch schon ganz gut an...
Also einen Gedanken hätt ich da noch zum Thema: Wenn Du da nur einen Shell-Befehl (oder auch mehrere) auf dem Server ausführen möchtest und nicht unbedingt eine "Vollzugsmeldung" im Browser brauchst, dann lass das Ganze doch gleich als "ShellScript" ablaufen - so wie mit der Batch vorgeschlagen.
Unter UNIX/LINUX könnte ein solches Script so aussehen:
---"scriptfile"--->
#!/bin/welche/shell/auch/immer/also/pfad/zum/shell/interpreter
Kommando1 -parameter
Kommando2 -parameter1 -parameter2
<---"scriptfile" im /cgi-bin Verzeichnis ablegen und ausführbar machen---<
Is halt noch so ein Gedanke...
Viele Grüße, Rolf
Hallo Rolf,
es funktioniert schon, und ich habe den Code bereits in die Forumsadministration eingebunden. Nachdem ich darueber geschlafen hatte, war die Loesung ganz einfach. Wenn man ein Zipfile anlegen will, sollte man auch die Zugriffsrechte dementsprechend aendern. Manchmal bin ich wirklich blind ;-)
Nochmals herzlichen Dank für Deine kompetente Hilfe.
Viele Gruesse
Harald