Mindwinder
Mitglied
Hi hab hier folgendes Script des Apaches:
Das Script soll mir eigentlich mein access_log auf einzelne Dateien aufsplitten - hab nur keinen Schimmer wie der Aufruf in der Shell aussehen muß. Zudem wüßte ich gerne, ob der Ausdruck ${vhost:01} mir auch in Perl den ersten Buchstaben des Strings zurückgibt.
Nette Grüße,
Mindwinder
Code:
#!/usr/bin/perl
%is_open = ();
while ($log_line = <STDIN>) {
#
# Get the first token from the log record; it's the
# identity of the virtual host to which the record
# applies.
#
($vhost) = split (/\s/, $log_line);
#
# Normalize the virtual host name to all lowercase.
# If it's blank, the request was handled by the default
# server, so supply a default name. This shouldn't
# happen, but caution rocks.
#
$vhost = lc ($vhost) or "access";
#
# if the vhost contains a "/" or "\", it is illegal so just use
# the default log to avoid any security issues due if it is interprted
# as a directory separator.
if ($vhost =~ m#[/\\]#) { $vhost = "access" }
#
# If the log file for this virtual host isn't opened
# yet, do it now.
#
if (! $is_open{$vhost}) {
open $vhost, ">>${vhost}.log"
or die ("Can't open ${vhost}.log");
$is_open{$vhost} = 1;
}
#
# Strip off the first token (which may be null in the
# case of the default server), and write the edited
# record to the current log file.
#
$log_line =~ s/^\S*\s+//;
printf $vhost "%s", $log_line;
}
exit 0;
Das Script soll mir eigentlich mein access_log auf einzelne Dateien aufsplitten - hab nur keinen Schimmer wie der Aufruf in der Shell aussehen muß. Zudem wüßte ich gerne, ob der Ausdruck ${vhost:01} mir auch in Perl den ersten Buchstaben des Strings zurückgibt.
Nette Grüße,
Mindwinder