Бэкап на почту 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 SMTPtry {
$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, спасибо. Все так и есть)