sendmail programm Pfad per Perl ermitteln
shadow
- perl
Wie oben genannt, ist es möglich per Perl den Pfad des Sendmail programmes zu ermitteln?
Danke im Vorraus
Moin.
$perlPath = which perl
;
print $perlPath;
Geht aber nur, wenn Du Perl ausführen kannst - und der Pfed zu Perl schon bekannt ist ;-)
Gruß Frank
Moin.
Oh - bin wohl noch nicht ganz wach...
$sendmailPath = which sendmail
;
print $sendmailPath;
Wichtig: die BackTicks um das Kommando.
Gruß Frank
Moin.
Oh - bin wohl noch nicht ganz wach...
$sendmailPath =
which sendmail
;
print $sendmailPath;Wichtig: die BackTicks um das Kommando.
Gruß Frank
Danke Frank, das sollte mir helfen, werd das mal testen ;-)
so, hab mal schnell was geschrieben:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<html><body>";
$sendmailPath = which sendmail
;
print $sendmailPath;
print "</body></html>";
was dabei rauskommt:
<html><body></body></html>
Was ist daran falsch???
Hallo,
nimm mal
#!/usr/bin/perl
use strict;
use warnings;
use CGI::Carp qw(fatalsToBrowser);
print "Content-type: text/html\n\n";
print "<html><body>";
$sendmailPath =which sendmail
;
print $sendmailPath;
print "</body></html>";
Bert
Hallo,
nimm mal
#!/usr/bin/perl
use strict;
use warnings;
use CGI::Carp qw(fatalsToBrowser);
print "Content-type: text/html\n\n";
print "<html><body>";
my $sendmailPath =which sendmail
;
print $sendmailPath;
print "</body></html>";Bert
Bring nichts, auf der dann erscheinen Seite ist wieder der gleiche Source !!!
(<html><body></body></html>)
Hallo,
vielleicht ist kein sendmail installiert?!
Bert
Hallo,
vielleicht ist kein sendmail installiert?!
Bert
Ich hab das auf zwei Systemen durchprobiert, und auf beiden weiß ich ganz sicher das Sendmail installiert ist, da ich es auch schon benutzt hab, ich brauch das nur um ein Install-Programm zu schreiben, damit man den Pfad des Sendmail Programmes nicht mehr angeben muss
Moin.
Bei mir geht das Script so - mit einer Einschränkung: ich krieg den Pfad von sendmail nicht raus :(
Ein which perl
geht ohne Probleme. Ich muß mich mal auf'ner anderen UNIX-Maschine einloggen und es da probieren...
<html><body></body></html>
Was ist daran falsch???
Eigentlich nix, jedenfalls am Script. Es sieht so aus, wäre der Header nicht richtig und Dein Browser kriegt nicht mit, daß es HTML ist...
Gruß Frank
Moin.
Bei mir geht das Script so - mit einer Einschränkung: ich krieg den Pfad von sendmail nicht raus :(
Ein
which perl
geht ohne Probleme. Ich muß mich mal auf'ner anderen UNIX-Maschine einloggen und es da probieren...<html><body></body></html>
Was ist daran falsch???
Eigentlich nix, jedenfalls am Script. Es sieht so aus, wäre der Header nicht richtig und Dein Browser kriegt nicht mit, daß es HTML ist...Gruß Frank
ich hab mal which sendmail direkt in der Konsole ausprobiert, dabei bekomme ich nichts als Antwort, mache ich jedoch which joe, bekomme ich den Pfad.
Anmerkung:
sendmail liegt in /usr/sbin/
joe liegt in /usr/bin/
kann es daran liegen ???
Moin.
ich hab mal which sendmail direkt in der Konsole ausprobiert, dabei bekomme ich nichts als Antwort, mache ich jedoch which joe, bekomme ich den Pfad.
kann es daran liegen ???
Which durchsucht nur den Path des users.
DESCRIPTION
which takes a list of names and looks for the files which
would be executed had these names been given as commands.
Each argument is expanded if it is aliased, and searched for
along the user's path. Both aliases and path are taken from
the user's .cshrc file.
Da bleibt nur ein `find / -name sendmail'. Da wir Dir der Admin aber gleich was auf die Finger geben ;)
Oder so (Aufruf von der Kommandozeile, Start-Pfad als Parameter übergeben, ohne Parameter suchts von /):
use File::Find;
@ARGV = qw(/) unless @ARGV;
#File-Liste erstellen (incl. Verzeichnissen)
find sub { push (@flist, $File::Find::name) }, @ARGV;
#alle Files aus Liste durchsuchen
foreach ( @flist){
if ((-f $_) and ($_ =~ /sendmail/)){
print "$1 \n";
}
}
Problem: Auch das Progrämmchen kann ein Langläufer werden, wenn DU von / suchst, und da wird möglicher Weise das time out vom Webserver zuschlagen.
Gruß Frank
Also, ich werd das erstmal auf meinem Home System versuchen, wo ich selber der Admin bin ;-)
Das will auch nicht so wirklich.
Hab da nen Skript gefunden, der wie folgt aussieht !!!
#!/usr/local/bin/perl -w
use Net::SMTP;
$smtp = Net::SMTP->new('mailhost');
$smtp->mail($ENV{USER});
$smtp->to('postmaster');
$smtp->data();
$smtp->datasend("To: postmaster\n");
$smtp->datasend("\n");
$smtp->datasend("A simple test message\n");
$smtp->dataend();
$smtp->quit;
muss ich an der Stelle wo mailhost steht dessen Pfad angeben oder nicht ???
ok, das hätte sich auch geklärt, das muss ich, gibt es nicht irgendein Standart-Modul, welches den Mailhost von selber ermittelt?
Hallo shadow,
ok, das hätte sich auch geklärt, das muss ich, gibt es nicht irgendein Standart-Modul, welches den Mailhost von selber ermittelt?
Nein, eine solche Standarte gibt es nicht :-)
Deswegen teilen Hoster einem standardmäßig mit, welche Pfade zu verwenden sind.
Hingegen könnte auf vielen Systemen
whereis
vorhanden sein, das in vielen Fällen zum Erfolg führen kann, in speziellen auch versagen wird, siehe
man whereis
Du könntest auch die Ausgabe von
locate
auswerten.
Freundliche Grüsse,
Vinzenz
Danke, das mit whereis hat wunderbar geklappt !!!
Moin.
Danke, das mit whereis hat wunderbar geklappt !!!
Habe ich auch wieder was gelernt! Biete aber bei Deinem Installationsscript trotzdem an, den Pfad händisch einzugeben.
Der Grund: es kann sein, daß sendmail nicht gefunden wird, weil "whereis" nur in einer vordefinierten Liste sucht (Beispiel SunOS 5.8):
DESCRIPTION
The whereis utility locates source/binary and manuals sec-
tions for specified files. The supplied names are first
stripped of leading pathname components and any (single)
trailing extension of the form .ext, for example, .c. Pre-
fixes of s. resulting from use of source code control are
also dealt with. whereis then attempts to locate the desired
program in a list of standard places:
/usr/bin
/usr/bin
/usr/5bin
/usr/games
/usr/hosts
/usr/include
/usr/local
/usr/etc
/usr/lib
/usr/share/man
/usr/src
/usr/ucb
Beispiel FreeBSD 4.8:
The default path searched is the string returned by the sysctl(8) utility for the ``user.cs_path'' string, with /usr/libexec and the current user's $PATH appended. Manual pages are searched by default along the $MANPATH. Program sources are located in a list of known standard places, including all the subdirectories of /usr/src and /usr/ports.
Oder: "whereis" findet mehrere Ergebnisse (sucht ja nach source, binary und manuals):
agapanthus % whereis sendmail
sendmail: /usr/sbin/sendmail /usr/share/man/man8/sendmail.8.gz /usr/ports/mail/sendmail
agapanthus %
Dann muß der User doch noch wählen bzw. editieren können.
Gruß Frank
agapanthus % whereis sendmail
sendmail: /usr/sbin/sendmail /usr/share/man/man8/sendmail.8.gz /usr/ports/mail/sendmail
agapanthus %
Ich nehme auf jeden Fall die mans und ports raus, weil das ja nicht das Programm ist, ich wollte sowieso die Manuelle eingabe als möglichkeit geben, nur das das Feld schon ausgefüllt ist, wenn sendmail über den Befehl gefunden wurde !!!
Hallo shadow,
Ich nehme auf jeden Fall die mans und ports raus, weil das ja nicht das Programm ist, ich wollte sowieso die Manuelle eingabe als möglichkeit geben, nur das das Feld schon ausgefüllt ist, wenn sendmail über den Befehl gefunden wurde !!!
Freundliche Grüsse,
und das geht am einfachsten mit
whereis -b sendmail
siehe "man whereis"
OPTIONS
-b Search only for binaries
Vinzenz