Drron
Advanced Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору А сендмайлом пользоваться религия запрещает? Примерно так: #!/bin/sh PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin ADMIN="admin@myfirma.ru" CODE="$1" SENDER="$2" shift 2 LOG="/var/log/server.log" TMP=/tmp TMPMAIL=$TMP/new_mail.$$ trap "rm -f $TMPMAIL; exit" 0 1 2 15 BOUNDARY="newlog-`date +%s`-$$" # Create mail header: echo "To: $ADMIN" > $TMPMAIL echo "Subject: Log from SERVER " >> $TMPMAIL echo "Mime-Version: 1.0" >> $TMPMAIL echo "Content-Type: multipart/mixed; boundary=$BOUNDARY" >> $TMPMAIL # Create first part of the mail echo "--$BOUNDARY" >> $TMPMAIL echo "Content-Type: text/plain; charset=koi8-r" >> $TMPMAIL echo "" >> $TMPMAIL echo "LOG от SERVER был получен в" >> $TMPMAIL echo "`date`." >> $TMPMAIL echo "" >> $TMPMAIL echo "--$BOUNDARY" >> $TMPMAIL echo "Content-Type: text/plain" >> $TMPMAIL echo "Content-Transfer-Encoding: base64" >> $TMPMAIL echo "Content-Disposition: attachment; filename=\"log.txt\"" >> $TMPMAIL echo "" >> $TMPMAIL cat $LOG | base64 -e >> $TMPMAIL echo "" >> $TMPMAIL echo "--$BOUNDARY--" >> $TMPMAIL # Send out the created mail: sendmail -i -f $SENDER -- $ADMIN -- < $TMPMAIL exit 0 Добавлено: Или через перл: #!/usr/bin/perl use Net::SMTP; use Time::localtime; use MIME::Base64 (); $gm = localtime(); $year = ($gm->year()) + 1900; $mounth = ($gm->mon()) + 1; $mday = $gm->mday(); $mday=sprintf("%02d",$mday); $mounth=sprintf("%02d",$mounth); $date = "$mday:$mounth:$year"; $hour = $gm->hour(); $min = $gm->min(); $sec = $gm->sec(); $hour=sprintf("%02d",$hour); $min=sprintf("%02d",$min); $sec=sprintf("%02d",$sec); $time = "$hour\:$min\:$sec"; my $file="/tmp/000.txt"; my $smtphost="192.168.1.1"; my $ehlo="Mailhost"; my $mail_from='root@myfirma.ru'; my $rcpt_to='admin@myfirma.ru'; my $boundary="logfile-$time\\$date"; my @mail; open (LOG,$file) || die "can't open :$!"; my $file=<LOG>; close(LOG); $encoded = MIME::Base64::encode($file); @mail=("To: $rcpt_to\n", "Subject: LOG from my server\n", "Mime-Version: 1.0\n", "Content-Type: multipart/mixed; boundary=$boundary\n", "\n", "--$boundary\n", "Content-Type: text/plain; charset=koi8-r\n", "\n", "Log on $date in attachment.\n", "\n", "--$boundary\n", "Content-Type: text/plain\n", "Content-Transfer-Encoding: base64\n", "Content-Disposition: attachment; filename=\"file.txt\"\n", "\n", "$encoded", "\n", "--$boundary--"); my $smtp = Net::SMTP->new($smtphost); $smtp->hello($ehlo); $smtp->mail($mail_from); $smtp->to($rcpt_to); $smtp->data(); foreach(@mail){ if (/^to\:/i){$_='To:'.'<' . $rcpt_to . '>' . "\n";}; $smtp->datasend($_); }; $smtp->dataend(); $smtp->quit; exit 0; |