PerScript (cgi) vom alten Linuxserver auf einen neuen portiert, aber es geht nicht
Hallo zusammen,
also im Vorfeld: ICH habe absolut KEINE Ahnung von Perlscripten!!! Mache ich Studium nun C++, so dass ich mit einigen Begriffen nun umgehen kann...
Vorgeschichte:
Wir haben bei uns im Berieb ein altes Programm laufen, das Textdateien von Messereignissen erzeugt. dieses Programm läuft schon... SEHR lange und der der es verbrochen hat ist natürlich nicht mehr da.
Da wir uns nun so langsam Sorgen um den alten Linuxserver machen, auf dem ein Perl-Script läuft möchte ich das Script auf einen anderen Linuxserver packen. Laut meinem Cheffe geht es leider nicht auf Wampp da es irgendwie auf "Linux" abgestimmt ist.
Um was es geht hier der Anfang des Scriptes, wo ich denke das dort der Fehler steckt:
*
1 #!/usr/bin/perl
2
3 use CGI;
4 use MD5;
5
6 # tempdirname
7 $temp = substr(MD5->hexhash(MD5->hexhash(time(). {}. rand(). $$)), 0, 32);
8
9 # daten von den pcs im werk holen
10 system("mkdir ./daten/$temp");
11 system("smbclient waage/waage -c \"get waage.txt daten/$temp/waage.txt\" >/dev/null");
12 system("smbclientwaage2/waage -c \"get waage2.txt daten/$temp/waage2.txt\" >/dev/null");
13 system("smbclient spl/spl -c \"get stoerung.csv daten/$temp/stoerung.csv\" >/dev/null");
14 system("smbclientspl/spl -c \"get stoerung daten/$temp/stoerung\" >/dev/null");
15
16 $query = new CGI;
17
18 # dateien einlesen
19 open (WAAGE, "daten/$temp/waage.txt");
20 @waage = <WAAGE>;
21 close (WAAGE);
22
23 open (WAAGE2, "daten/$temp/waage2.txt");
24 @waage2 = <WAAGE2>;
25 close (WAAGE2);
*
Die Zahlen dienen nur der verständlichkeit.
was mir schon aufällt ist dass ein Verzeichniss unter Zeile 10 nicht erzeugt wird. Auch wenn ich die Variable $temp durch eine constante wie temp erzetze wird kein Ordner temp unter dem Ordner daten erzeugt.
auch wenn die Variable $temp auskommentiert wird und eine weitere Variable $temp = temp; erzeugt wird wird ebenfalls kein Ordner Namens temp erzeugt.
Was mir nun durch denn Kopf ging ist ob es sein kann dass die Standartdistribution, die wir verwenden vielleicht durch den Ersteller noch abgeändert wurde damit dieses Script funktioniert?!?!?
Ist die Syntax dort oben so in Ordneng oder fallen euch grobe Fehler auf?
Komisch ist ja dass wir auf dem alten Linuxserver dieses Script kopiert haben und in den neuen Server eingefügt haben.
Der neue Server kann pingen; gepingt werden.
Das Problem taucht ja schon vor dem holen der einzelnen txt-Dateien von den Clients auf, so dass es schon beim Erzeugen des Temp-Ordners zu Problemen kommt..
Ich danke euch
also im Vorfeld: ICH habe absolut KEINE Ahnung von Perlscripten!!! Mache ich Studium nun C++, so dass ich mit einigen Begriffen nun umgehen kann...
Vorgeschichte:
Wir haben bei uns im Berieb ein altes Programm laufen, das Textdateien von Messereignissen erzeugt. dieses Programm läuft schon... SEHR lange und der der es verbrochen hat ist natürlich nicht mehr da.
Da wir uns nun so langsam Sorgen um den alten Linuxserver machen, auf dem ein Perl-Script läuft möchte ich das Script auf einen anderen Linuxserver packen. Laut meinem Cheffe geht es leider nicht auf Wampp da es irgendwie auf "Linux" abgestimmt ist.
Um was es geht hier der Anfang des Scriptes, wo ich denke das dort der Fehler steckt:
*
1 #!/usr/bin/perl
2
3 use CGI;
4 use MD5;
5
6 # tempdirname
7 $temp = substr(MD5->hexhash(MD5->hexhash(time(). {}. rand(). $$)), 0, 32);
8
9 # daten von den pcs im werk holen
10 system("mkdir ./daten/$temp");
11 system("smbclient waage/waage -c \"get waage.txt daten/$temp/waage.txt\" >/dev/null");
12 system("smbclientwaage2/waage -c \"get waage2.txt daten/$temp/waage2.txt\" >/dev/null");
13 system("smbclient spl/spl -c \"get stoerung.csv daten/$temp/stoerung.csv\" >/dev/null");
14 system("smbclientspl/spl -c \"get stoerung daten/$temp/stoerung\" >/dev/null");
15
16 $query = new CGI;
17
18 # dateien einlesen
19 open (WAAGE, "daten/$temp/waage.txt");
20 @waage = <WAAGE>;
21 close (WAAGE);
22
23 open (WAAGE2, "daten/$temp/waage2.txt");
24 @waage2 = <WAAGE2>;
25 close (WAAGE2);
*
Die Zahlen dienen nur der verständlichkeit.
was mir schon aufällt ist dass ein Verzeichniss unter Zeile 10 nicht erzeugt wird. Auch wenn ich die Variable $temp durch eine constante wie temp erzetze wird kein Ordner temp unter dem Ordner daten erzeugt.
auch wenn die Variable $temp auskommentiert wird und eine weitere Variable $temp = temp; erzeugt wird wird ebenfalls kein Ordner Namens temp erzeugt.
Was mir nun durch denn Kopf ging ist ob es sein kann dass die Standartdistribution, die wir verwenden vielleicht durch den Ersteller noch abgeändert wurde damit dieses Script funktioniert?!?!?
Ist die Syntax dort oben so in Ordneng oder fallen euch grobe Fehler auf?
Komisch ist ja dass wir auf dem alten Linuxserver dieses Script kopiert haben und in den neuen Server eingefügt haben.
Der neue Server kann pingen; gepingt werden.
Das Problem taucht ja schon vor dem holen der einzelnen txt-Dateien von den Clients auf, so dass es schon beim Erzeugen des Temp-Ordners zu Problemen kommt..
Ich danke euch
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 42635
Url: https://administrator.de/contentid/42635
Ausgedruckt am: 23.11.2024 um 01:11 Uhr
7 Kommentare
Neuester Kommentar
Wird das Script auf dem neuen Server auch mit den richtigen Rechten ausgeführt?
Falls nicht, kann das Script den Ordner auch nicht erstellen.
Gibt es denn irgendwelche Fehlermeldungen?
Falls nicht, kann das Script den Ordner auch nicht erstellen.
Gibt es denn irgendwelche Fehlermeldungen?
morgen,
könntest du bitte mal
einstellen und dann auf der konsole mit
den output posten??
mfg godlike P
könntest du bitte mal
#!/usr/bin/perl -w
einstellen und dann auf der konsole mit
perl -c dein_script.pl
den output posten??
mfg godlike P
hallo,
am einfachsten wäre esdoch per ftp zu lösen oder??
dazu kannst du dir das modul Net::FTP anschauen.
is relativ einfach gemacht.
wenn fragen sind melden.
mfg godlike P
[EDIT]
was ich jetzt erst sehe
nene, kannst dem cheffe sagen: würde auch mit wampp laufen :D
am einfachsten wäre esdoch per ftp zu lösen oder??
dazu kannst du dir das modul Net::FTP anschauen.
is relativ einfach gemacht.
wenn fragen sind melden.
mfg godlike P
[EDIT]
was ich jetzt erst sehe
Laut meinem Cheffe geht es leider nicht auf Wampp da es irgendwie auf "Linux" abgestimmt ist.
nene, kannst dem cheffe sagen: würde auch mit wampp laufen :D