Sendmail und Perl Module auf Mietservern
Vorbemerkung:
Diese Seite entstand 1999 im Rahmen des Perl-Stammtisches und beschreibt die Verwendung von Perl, um nützliche Informationen über seinen Mietserver zu erhalten.
Problem:
"Jetzt habe ich endlich einen Server gefunden, der Perl, ein cgi-bin Verzeichnis und vieleicht auch Sendmail unterstützt. Aber wo liegt Sendmail, und welche Perl Module sind installiert?"
Lösung
Wir verwenden folgendes kleine Perlprogramm
#!/usr/bin/perl -w use strict; use CGI qw/:standard/; use File::Find; # Gibt Pfad zu sendmail und Enviroment von perl aus my @mail = split(/ /, `whereis sendmail`); print header, start_html, h1('Sendmail'), ul(li([@mail])), br, h1("Perl Enviroment: $ENV{SERVER_NAME}"), p("Perl Version: $]"), p("CGI.pm Version: $CGI::VERSION"), p("Library Path(\@INC):"), ul(li([@INC])), p('Modules: '); foreach my $dir (@INC) { my @mods; find(sub { push @mods, $File::Find::name if /\.pm$/ }, $dir); print ul(li($dir), ul(li([sort @mods]))); } print end_html;
Diskussion
Das Programm ist eigentlich ganz einfach. Zuerst binden wir die benötigten Module ein, CGI (sollte bei jeder
neueren Perl Distribution dabei sein), File::Find (ist in der Standard Distribution enthalten) und natürlich
wie immer strict. Der Befehl `whereis sendmail`
liefert einen String zurück, in dem alle Pfade
aufgeführt sind die das Wort "sendmail" enthalten. Mit dem split Befehl trennen wir das ganze an den
Leerzeichen auf. Dann geben wir den notwendigen HTTP Header, und eine Überschrift aus. Die gefundenen
Sendmaileinträge werden in einer Liste dar gestellt. Jetzt kommt der Servername, die Perl Version und die
Version des CGI Moduls. In @INC
stehen die Pfade, in denen Perl nach installierten Module sucht.
Jeden einzelnen Pfadeintrag verfüttern wir an das Modul File::Find, mit der Prämisse, nur nach Einträgen zu
suchen, die auf .pm
enden. Das Ergebnis steht dann in @mods
, welches wir wieder als
Liste ausgeben.
Viel Spaß beim experimentieren.
Literaturhinweise
- O Reilly Perl Module Doku
- perldoc CGI
- perldoc perlmod
- perldoc perlvar
Zurück zum Anfang von Tips und Tricks