Бэкап на почту 2.1



  • В продолжение к http://forum.pfsense.org/index.php/topic,39476.0.html
    В новой версии появился кривоватый SMTP демон поэтому танцы с бубнами стали более простыми.
    В делаем файл с вот таким содержанием

    
    #!/usr/local/bin/php -f
    require_once("/etc/inc/functions.inc");
    require_once("/etc/inc/config.inc");
    require_once("/etc/inc/notices.inc");
    notify_via_smtp(file_get_contents("/conf/config.xml"));
    ?>
    
    

    и ставим ему права "755"
    Дальше всё как обычно, поставить пакет "cron" и прописать нужное нам расписание.
    пример настроек для отправки на gmail смотрите во вложении.



  • А в сей бэкап настройки установленных пакетов попадают?



  • дык оно тупо сливает в текст письма основной файл конфига "/conf/config.xml"
    вот у меня в письме с конфигом строчки

    
     <installedpackages><package><name>Cron</name></package></installedpackages> 
    

    думаю что настройки пакетов сохранятся.

    Если интересно могу кинуть вариант с использованием PHPMailer  там конфиг можно по человечьи аттачем кинуть.



  • Интересно, ждем!  :)



  • Вариант с использованием phpmailer.

    скачиваем пакет, например отсюда
    https://code.google.com/a/apache-extras.org/p/phpmailer/
    разворачиваем куда нибудь, и немного переписываем пример "PHPMailer_5.2.2\examples\test_smtp_gmail_advanced.php"
    добавляем строку для запуска php интерпретатора и делаем скрипт исполняемым

    у меня получилось так

    –--от-сих-tg2.php----
    #!/usr/local/bin/php -f
    require_once('../class.phpmailer.php');
    //include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded

    $mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
    $mail->CharSet = 'Windows-1251';  //Без этой строчки русские буквы кодируются не правильно
    $mail->IsSMTP(); // telling the class to use SMTP

    try {
     $mail->Host       = "smtp.gmail.com";      // sets GMAIL as the SMTP server
     $mail->Port       = 465;                   // set the SMTP port for the GMAIL server
     $mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
     $mail->SMTPAuth   = true;                  // enable SMTP authentication
     $mail->SMTPSecure = "ssl";                 // sets the prefix to the servier
     $mail->Username   = "bla-bla-bla@gmail.com";  // GMAIL username
     $mail->Password   = "bla-bla-bla";            // GMAIL password
     $mail->AddAddress('bla-bla-bla@gmail.com', 'bla-bla');
     $mail->SetFrom('bla-bla-bla@gmail.com', 'First Last');
     $mail->AddReplyTo('bla-bla-bla@gmail.com', 'First Last');
     $date = date(DATE_RFC822);
     $mail->Subject = "Pfsense текущий конфиг на $date";  
     $mail->Body     = "текущий конфиг";
     $mail->AddAttachment('/conf/config.xml'); // attachment
     $mail->Send();
     echo "Message Sent OK\n";
    } catch (phpmailerException $e) {
     echo $e->errorMessage(); //Pretty error messages from PHPMailer
    } catch (Exception $e) {
     echo $e->getMessage(); //Boring error messages from anything else!
    }
    ?>
    ----до-сих-tg2.php----
    ну и как заработает отключаем дебуг и вешаем на крон



  • Shraik, твоим методом бэкапит только конфиг, а остальные файлы на почту не идут.



  • А что значит остальные файлы ?
    У меня конфиг в одном файле. Если надо получить несколько файлов я вижу такие пути:

    если про первый метод то там придется делать несколько вызовов (ес-но будет несколько писем)
    notify_via_smtp(file_get_contents("/conf/config.xml"));
    notify_via_smtp(file_get_contents("/conf/нужный_нам_файл.xml"));
    но отправка идет в тексте письма, поэтому бинарники так отправлять нельзя и придется изобретать UUENCODE или использовать второй метод.

    Если мы говорим про отправку через PHP то там всё просто
    делаем несколько вызовов
    $mail->AddAttachment('/conf/config.xml'); // attachment
    $mail->AddAttachment('/conf/bla-bla.lib'); // attachment2
    и когда отправим в письме будет несколько вложений.



  • Shraik, спасибо. Все так и есть)


Locked