"cat DATEI" in Perlscript nach Update fehlerhaft

Fireball22

Registered User
Hallo zusammen,

nach einem Update meines Servers (hauptsächlich Apache, MySQL, etc.) inkl. Plesk 9.5 habe ich ein Problem mit dem spamdyke-Aufräumscript:

Code:
#!/usr/bin/perl -w
use strict;

use constant DBD => 'DBI:mysql:spamdyke:localhost:3306';        # Set your database where spamdyke logs
use constant DBUSER => 'spamdyke';                              # Database username
use constant DBPASS => `cat /etc/psa/.psa.shadow`;                              # Database password
use constant DELAY => '7';                                      # Delete log entries older than 7 days

use constant MAIL_RECIPIENT => 'root@localhost';                # Set your email for daily report
use constant MAIL_TITLE => '[spamdyke-mysql-cleanup] Daily run';# Set your title for daily report

use DBI;
print "test";
print DBPASS;
print "test";
my $dbh = DBI->connect(DBD,DBUSER,DBPASS) or die "can't connect to db ", $DBI::errstr, ":$!";

my $erg = $dbh->do("delete from spamdyke_log_table where `time` < DATE_ADD(CURDATE(),interval -".DELAY." day)");
$dbh->do("OPTIMIZE TABLE spamdyke_log_table");

my $text="$erg rows deleted";

$dbh->disconnect;

exit;

my $rec = MAIL_RECIPIENT;
my $tit = MAIL_TITLE;

my $SENDMAIL='/usr/sbin/sendmail';
open (SENDMAIL,"|$SENDMAIL -t -f -odq") || &fehler("Kann sendmail nicht öffnen");
print SENDMAIL <<EOF;
To: $rec
Subject: $tit
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 8bit


$text
EOF

close SENDMAIL;

Die Ausgabe von "test" habe ich zu Testzwecken eingefügt, nun gibt er folgendes aus:

testKENNWORT
DBI connect('spamdyke:localhost:3306','spamdyke',...) failed: Access denied for user 'spamdyke'@'localhost' (using password: YES) at ./spamdyke-mysql-cleanup line 16
can't connect to db Access denied for user 'spamdyke'@'localhost' (using password: YES): at ./spamdyke-mysql-cleanup line 16.

Ich habe leider echt keine Ahnung, an was das plötzlich liegt, setzte ich das Passwort in Klartext der Konstante klappt alles wunderbar, aber wieso geht es mit cat plötzlich nach einem Update nicht mehr?!
Was mir auffällt ist, dass das zweite "test" nicht mitausgegeben wird, stimmt da irgendwas anderes nicht?

Ich freue mich auf eure Anregungen!

MfG
Michael
 
Last edited by a moderator:
Ja genau, das sollte ja hoffentlich kein Sicherheitsproblem sein, denn wer sich wirklich Zugang auf Plesk beschafft, der hat dann wohl sowieo auf alles Zugriff und anderst herum dürfte es natürlich erstens mal schwierig sein, durch "Angriff" von Spamdyke an das Kennwort zu gelangen und wenn ja, dann hängt ja im Prinzip Spamdyke auch als Teil des Mail-Message-Flows mit drin.

Das Kennwort hat sich nicht geändert, ich hatte natürlich die Passwort-File auch schon mehrmals überprüft, auf Leerzeichen und Zeilenumbrüche, habe sie auch mal neu erstellt, aber ich konnte nicht's dergleichen feststellen.

Das Script läuft ja auch täglich und erst nach einem System-Update (inkl. Plesk, wie oben beschrieben) läuft das ganze nicht mehr.

MfG
Michael
 
Jap, funktioniert!
Sogar das Script funktioniert ja, wenn ich das Passwort per Hand eintrage!

EDIT: Ich habe jetzt gerade nochmal per Bashscript überprüft, ob evtl. durch cat irgendwelche Leerzeichen oder Zeilenumbrüche ausgelesen werden, aber die Datei ist definitiv perfekt, das Problem scheint tatsächlich irgendwie an dem Perlscript zu liegen.

MfG
Michael
 
Last edited by a moderator:
Eventuell ein Steuerzeichen, dass sich in die Datei eingeschlichen hat? Lies die Datei mal mit "cat -e" aus.
 
Die Datei enthält als letztes Zeichen mindestens einen Zeilenumbruch, wie man an der fehlenden Ausgabe von test sehen kann (das zweite test wird von der Fehlermeldung überschrieben). Das fehlt bei Angabe des Paßwortes direkt in der Datei definitiv.

Eventuell sollte das Paßwort in der Datei ohne Zeilenumbruch stehen (keine Ahnung was Plesk dazu sagt). Alternativ kann Perl mit chomp() auch das letzte Zeichen abschneiden, wenn es ein Zeilenvorschub ist (allerdings nicht von einer Konstante).
 
Dabei kommt folgendes dabei raus:

KENNWORT$

Aber das ist ja glaube ich nur die Anzeige für das Zeilenende, oder?

Durch das Update wurde auch nscd installiert, das habe ich gerade mal gepurged, könnte das evtl. etwas damit zu tun haben?
Verbleiben da noch irgendwo Cache-Dateien?

EDIT:
nscd:
A daemon which handles passwd, group and host lookups for running programs and caches the results for the next query. You should install this package only if you use slow Services like LDAP, NIS or NIS+
Beunruhigend!

MfG
Michael
 
Last edited by a moderator:
@Cenic
Ich habe die Datei jetzt auf Windows übertragen und mit Textpad konnte ich einen Zeilenumbruch erkennen, unglaublich dass weder vi noch cat das erkennen lässt.

Vielen Dank für eure Tipps!

MfG
Michael
 
Back
Top