Thread Ist dieses Script bei mir möglich, wenn ja wie?
(10 answers)
Opened by Knevil at 2008-09-10 11:40
Hi,
ich muss direkt sagen ich bin ein ziemlicher Perl noob nur habe ich im moment ein Preoblem das ich ein Perl Script brauche und keine Ahnung habe wie ich dieses einbauen soll. Hier erstmal die Serverdaten: Apache/1.3.37 (Unix) (Gentoo) TuxTrafficLogRotate/20051209-00 TuxSQLConf/20070207-00 mod_perl/1.29 PHP/4.4.7-tuxtools FrontPage/5.0.2.2635 Das Script soll per FTP hochgeladene Logdateien auslesen,mit dem Perl Programm Stasiscl (läuft im mom noch Lokal bei mir und funzt, darum ja jetzt dieses Script) parsen und dann die Ausgabe im Vorgefertigten Ordner Speichern. und hier das Script: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 #!/usr/bin/perl TMP=/tmp #### Directories & Stasis Location #### #### Edit these to suit your needs # RAID = where you want your raid files RAID=~/raidstats/logs/raids/ LOGS=~/raidstats/logs-in OLD=~/raidstats/logs-old REPO=~/raidstats/logs/ # Directory in which stasis lives STASIS=~/raidstats/stasiscl mkdir -p $RAID $LOGS $OLD $REPO # Lockfile if [ -f /tmp/log.processing ]; then exit; fi touch /tmp/log.processing # The commented out line is what I use, because I process these on a different host than people ftp them to. I left it in for example only. cd $LOGS # /usr/local/bin/wget --quiet --delete-remote --ftp-user=wildly_logs --ftp-password=XXXX ftp://www.XXXX.org/* if [ `ls $LOGS | wc -l` -eq 0 ]; then rm /tmp/log.processing exit fi ls $LOGS if [ `ls *.zip 2> /dev/null | wc -l` -gt 0 ]; then for ZIP in *.zip ; do /usr/local/bin/unzip -qq "$ZIP" mv "$ZIP" $OLD done fi if [ `ls *.ZIP 2> /dev/null | wc -l` -gt 0 ]; then for ZIP in *.ZIP ; do /usr/local/bin/unzip -qq "$ZIP" mv "$ZIP" $OLD done fi if [ `ls *.gz 2> /dev/null | wc -l` -gt 0 ]; then for GZ in *gz; do /usr/bin/gunzip -q -c "$GZ" > "$GZ.txt" mv "$GZ" $OLD done fi # Mac cleanup rm -rf $LOGS/__MACOSX for LOG in *; do if [ -f "$LOG" ]; then echo "Processing $LOG..." cp "$LOG" $TMP mv "$LOG" $OLD # Date stuff ODATE=`head -10 "$TMP/$LOG" | tail -1 | awk '{ print $1 }'` DAY=${ODATE##*/} MON=${ODATE%%/*} YEAR=`date +%y` if [ $MON -eq "12" ]; then if [ `date +%m` -eq "01" ]; then YEAR=`date -v-1y +%y` fi fi if [ ${#DAY} -eq 1 ]; then DAY=0$DAY; fi if [ ${#MON} -eq 1 ]; then MON=0$MON; fi DATE=${MON}-${DAY}-${YEAR} if [ -f "$REPO/$LOG" ]; then rm /tmp/log.processing exit fi grep "^${ODATE}" "$TMP/$LOG" > "$TMP/$LOG.out" rm "$TMP/$LOG" # What raid? INSTANCE=`~/bin/getraid.pl "$TMP/$LOG.out"` # Other logs? LAST=1 if [ -f $REPO/${DATE}-${INSTANCE}.1.txt.gz ]; then LAST=`ls $REPO | tail -1` LAST=${LAST#*.} LAST=${LAST%.txt.gz} LAST=$(( $LAST + 1 )) fi # Move into place cp "$TMP/$LOG.out" $REPO/${DATE}-${INSTANCE}.${LAST}.txt rm "$TMP/$LOG.out" # Prep directory mkdir -p $RAID/$MON-$YEAR # Stasis START=`date +%s` cd $STASIS ./stasis add -dir $RAID/$MON-$YEAR -file $REPO/${DATE}-${INSTANCE}.${LAST}.txt -attempt -trash -overall -collapse echo -n "Run time: " echo -n $(( `date +%s` - $START )) echo " seconds." # Tidy up echo "Added $REPO/${DATE}-${INSTANCE}.${LAST}.txt" gzip $REPO/${DATE}-${INSTANCE}.${LAST}.txt cd $LOGS fi done rm -f /tmp/log.processing Das 2. Script ist np da muss man nix anpassen darum hab ichs mal nicht gepostet, Der Pfad zu Perl stimmt auch, abgelegt habe ich das Script bei mir in CGI-BIN (wo ich denke das es auch hingehört) Hoffe jemand könnte mir sagen woran es liegt das es nicht läuft, angezeigt wird: The server encountered an internal error or misconfiguration and was unable to complete your request. |