Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

PerScript (cgi) vom alten Linuxserver auf einen neuen portiert, aber es geht nicht

Frage Entwicklung Perl

Mitglied: Sage24

Sage24 (Level 1) - Jetzt verbinden

20.10.2006, aktualisiert 24.10.2006, 3654 Aufrufe, 7 Kommentare

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("smbclient
waage2/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("smbclient
spl/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
Mitglied: 26705
20.10.2006 um 12:37 Uhr
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?
Bitte warten ..
Mitglied: Sage24
21.10.2006 um 21:16 Uhr
Hi,
das könnte sein??? Hmm wenn ich es mir überlege kann das sein.

Ich habe aber testweise das Script mal auf einem Xampp laufen lassen auf einem XP-Prof.
wenn ich die cgi-File in *pl umbenene werden zwar die statischen WErte angezeigt, aber es werden EBENFALLS keine Ordner angelegt.
Dort habe ich doch aber sicherlich die richtigen Rechte da Windows...

Bei dem Linux habe ich absolut KEINE Ahnung!! Müsste dann nochmals schauen welche Rechte ich denn nachschauen muss.
Ich glaube da gab es eine Gruppe als wwwroot oder so ähnlich. da muss ich mal schauen ob ich die gruppe auf dem neuen PC finde und dort die Berechtigungen nochmals richtig eintrage.

melde mich dann nochmals a monatg oder dienstag.

beten DANK & Gruß
Bitte warten ..
Mitglied: 6890
23.10.2006 um 08:03 Uhr
morgen,

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
Bitte warten ..
Mitglied: Sage24
23.10.2006 um 16:36 Uhr
HA!
Fast habe ich es! Ich habe das WE bei mir zu Hause Xampp installiert und etwas getestet.
Also das PRoblem dass kein Ordner mit den Hashwerten erzeugt wird habe ich nun gelöst:
mkdir ("./daten/$temp", $permissions);
muss es heisen
Wenn ich dann weiter unten im Script anstelle :
open (WAAGE, "daten/$temp/waage.txt");
@waage = <WAAGE>;
close (WAAGE);

open (WAAGE, "daten/temp/waage.txt");
@waage = <WAAGE>;
close (WAAGE);
schreibe und dort in temp eine Textdatei mit richtigen Inhalten setze funktioniert das gesamte Script)))

Mir fehlt nur noch der Befehl:
system("smbclient \\192.168.64.163\waage -c \"get waage.txt daten/",$temp,"/waage.txt\" >/dev/null");
dieser soll von der IP-Adresse / DNS-Namen die Datei waage.txt im Verzeichniss waage abholen!
Wenn er die hat soll er sie in $temp/waage.txt kopieren.
Leider steckt da irgendwo der Fehler!
Habe bei google schon nach "get cgi datei runterladen oder holen" gesucht ber nichts weltbewegendes gefunden.

Wäre vielleicht jemand so freundlich mir kurz zu schreiben wie ich per Script vom PC eine Text-Datei auf den Server in ein Verzeichniss kopiere?
Bitte warten ..
Mitglied: 6890
23.10.2006 um 17:14 Uhr
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
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
Bitte warten ..
Mitglied: Sage24
24.10.2006 um 08:59 Uhr
Der Client ist aber nur ein Windowsrechner ohne FTP-Server drauf, so dass ich mit dem Net::FTP nicht viel ausrichten kann.
Gibt es nicht einen Befehl wie diesen: system(xcopy \\192.168.64.163\waage\waage.txt ./daten",$temp,"/waage.txt);
oder so ähnlich.
Der Client hat nur die Freigabe waage und ist ein alter Win98 PC, an dem wir nichts ändern wollen.
Der ApacheServer ist ein XP-Prof.

Übringens geht das gesamte Script nun wenn ich die Dateien per Hand in ein Verzeichniss kopiere... es fehlt halt nur noch die Dateiho-Funktion
Bitte warten ..
Mitglied: Sage24
24.10.2006 um 11:13 Uhr
Habe es nun endlich:
#!C:/Programme/xampp/perl/bin/perl.exe

use CGI;
use MD5;
use File::Copy;

  1. tempdirname
$temp = substr(MD5->hexhash(MD5->hexhash(time(). {}. rand(). $$)), 0, 32);

  1. daten von den pcs holen

#system("mkdir ./daten/$temp");
mkdir ("./daten/$temp");
copy( '192.168.64.163/waage/waage2.txt', './daten/'.$temp.'/waage2.txt');
copy('
192.168.64.164/waage/waage2.txt', './daten/'.$temp.'/waage.txt');
copy( '192.168.64.165/spl/stoerung.csv', './daten/'.$temp.'/stoerung.csv');
#copy('
192.168.64.165/spl/stoerung', './daten/stoerung');

$query = new CGI;

  1. dateien einlesen
open (WAAGE, "daten/$temp/waage.txt");
@waage = <WAAGE>;
close (WAAGE);

so läuft nun alles)) Und zwar auf einem Xampp)

Lösung war also nur dass unter Unix/Linux der Smaba-Client angesprochen wurd (smbclient) dieser ist ja bei Win nicht nötig, so dass bei Standartfreigaben ohne Probleme der copy Befehl gentuzt werden kann.
Wenn man dann noch die Bibliothek: use File::Copy; einbindet dann ist alles geritzt.

Oh man bin so froh dass die *** endlich klappt, so brauchen wir nicht mehr angst haben dass der alte server abraucht.

BESTEN DANK an alle !!!!!
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows 10
gelöst PdfFactory defekt - Windows 10 Profil reparieren - wie geht das? (4)

Frage von Rene1976 zum Thema Windows 10 ...

Groupware
Alten Zimbra-Server "schrotten" und umsatteln? (2)

Frage von QQR700 zum Thema Groupware ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
gelöst Active Directory CA öffentlich vertrauenswürdig machen, geht das? (2)

Frage von DeathangelCH zum Thema Windows Server ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...