Автоматический бэкап конфигурации
-
Всем добрый день.
У меня появилось желание бэкапить автоматом конфиг pfSense. Написал скрипт для bash, который удалённо подключается к pfSense и, собственно, нажимает кнопку "Download configuration".
Возможно, кому-нибудь из вас также пригодится и сохранит время.
#!/bin/bash user="user" pass="password" cookies="/home/vi-admin/bin/cookies/pfSense_cookies.txt" config="/mnt/nas4free/configs/pfSense/pfSense_$(date +%F_%H-%M-%S).xml" ip="https://192.168.1.1/" token="/home/vi-admin/bin/cookies/pf_token" # For pfSense 2.0 log="/home/vi-admin/bin/log_get_config_pfSense" wget --no-check-certificate --delete-after --keep-session-cookies --save-cookies $cookies --output-file=$log --post-data="usernamefld=$user&passwordfld=$pass&login=Login" $ip"index.php" wget --no-check-certificate --keep-session-cookies --load-cookies $cookies --append-output=$log --post-data="donotbackuprrd=yes&Submit=download" $ip"diag_backup.php" -O $config # For pfSense 2.1 curl -k -s -S -L -c $cookies $ip"index.php" | grep "input type='hidden' name='__csrf_magic'" | echo $(awk '{print substr($0,120,55)}') > $token && csrf_magic=$(cat $token) curl -k -s -S -L -b $cookies -d "usernamefld=$user&passwordfld=$pass&login=Login&__csrf_magic=$csrf_magic" $ip"index.php" > /dev/null curl -k -s -S -L -b $cookies -d "donotbackuprrd=yes&Submit=download" --output $config $ip"diag_backup.php" > /dev/null if [ "$( wc -c $config | awk '{ print $1 }' )" == "0" ] then rm $config $cookies $token else rm $cookies $token fi
Замечания и уточнения принимаются.
-
который удалённо подключается к pfSense и, собственно, нажимает кнопку "Download configuration".
Грамотней если бы скрипт присылал письмо на мыло, а в аттаче бэкап конфига.
-
А кто скажет, что поменялось в 2.1, что вгет способ не срабатывает?
А по замечанию- кому то в мыло надо, кому то на фтп -там уже проще добавить пару строк кода. -
А сами wget, curl у вас установлены? Может после обновления pfsense до 2.1 стоит эти пакеты переустановить если они были в 2.0.х ?
http://www.milliondollarserver.com/install-wget-curl-on-pfsense-freebsd/
-
В 2.1 появилась защита в виде csrf
а я как-то раньше писал похожий скрипт для бэкапа NAS4Free конфига - там похоже реализована защита web-интерфейса. Поэтому и сделал на curl по аналогии
-
А сами wget, curl у вас установлены? Может после обновления pfsense до 2.1 стоит эти пакеты переустановить если они были в 2.0.х ?
http://www.milliondollarserver.com/install-wget-curl-on-pfsense-freebsd/
я захожу из другой системы - vMA
-
В 2.1 появилась защита в виде csrf
Вроде в 2.0 тоже было. я на данную страницу (бекапа) его отключал в рнр файлах.
-
я только в 2.1 столкнулся. В коде привел пример прежнего скрипта.
-
Может кто-нибудь поможет переписать скрипт под cmd.exe?
Цель, чтобы сотрудник удаленно будил свой комп не ходя по вкладкам pfSense, а просто запуском батника.
Для версии 2.0 я использовал что-то вроде этого:
curl.exe -k -L -с cookies.txt -d "usernamefld=wol&passwordfld=123&login=Login" https://192.168.1.1/index.php > WakeOnLAN_Smartpro_log.txt curl.exe -k -b cookies.txt "https://192.168.1.1/services_wol.php?mac=f0:de:f1:b9:e8:3d&if=lan" >> WakeOnLAN_Smartpro_log.txt curl.exe -k -b cookies.txt "https://192.168.1.1/index.php?logout" >> WakeOnLAN_Smartpro_log.txt DEL cookie.txt ECHO Waking up the remote computer and starting RealVNC. ECHO Wait a minute... :pinging ping -n 1 -w 1 192.168.1.43 | Find /I "TTL=" || goto pinging start "Remote access via VNC" "c:\Users\user\Desktop\smart.vnc+"
-
странно.
я сталкивался. не думаю что у меня бета стояла, я решал так:
в services_captiveportal_vouchers_edit.php и services_captiveportal_vouchers.php
добавлял экранировал строку $nocsrf = true;
получалось: #$nocsrf = true;сами строки такие (весь скрипт не привожу, думаю понятно будет)
#get cookies
wget -qO/dev/null –quiet --keep-session-cookies --save-cookies ./cookies.txt --post-data "login=Login&usernamefld=${pfsense_login}&passwordfld=${pfsense_pass}" --no-check-certificate --timeout=10 https://${pfsense_ip}:${pfsense_port}/diag_backup.php
#echo -Download Config
wget --quiet --keep-session-cookies --load-cookies ./cookies.txt --post-data "Submit=download&donotbackuprrd=yes" --no-check-certificate -O ./pfsense_backup/${pfsense_name}-${pfsense_ip}-$TIMESTAMP.xml --timeout=10 https://${pfsense_ip}:${pfsense_port}/diag_backup.php
} -
2 alexandrnew:
Мне не хотелось менять/отключать стандартный функционал.Для bat-ника сам что-то похожее на рабочий вариант попробовал написать. Вот что получилось:
@echo off SET user=wol SET pass=wolwol SET server=https://192.168.1.1/ SET wol_comp=192.168.1.43 SET cookies=cookies.txt SET tfile1=WakeOnLAN_temp1.tmp SET tfile2=WakeOnLAN_temp2.tmp SET str=csrfMagicToken curl.exe -k -L -s -S -c cookies.txt "%server%index.php" | findstr %str% > %tfile1% set /p a=<%tfile1% set csrf_magic=%a:~152,55% curl.exe -k -L -s -S -o %tfile2% -b %cookies% -d "usernamefld=%user%&passwordfld=%pass%&login=Login&__csrf_magic=%csrf_magic%" "%server%index.php" curl.exe -k -L -s -S -o %tfile2% -b %cookies% "%server%services_wol.php?mac=f0:de:f1:b9:e8:3d&if=lan" curl.exe -k -L -s -S -o %tfile2% -b %cookies% "%server%index.php?logout" DEL /F %cookies% %tfile1% %tfile2% ECHO. ECHO Waking up the remote computer and will start RealVNC. ECHO Wait a minute... :pinging ping -n 1 -w 1 %wol_comp% | Find /I "TTL=" || goto pinging start "Remote access via VNC" "c:\Users\Anatol\Desktop\comp1.vnc+" exit
-
Написал скрипт для bash, который удалённо подключается к pfSense и, собственно, нажимает кнопку "Download configuration".
А есть скрипт или способы сделать бекап конфигурации на самом pfsense, и скопировать созданный на pfsense файл конфигурации, самим pfsensом на удаленный ftp?
Потом этот скрипт поместить в cron.
И еще послать емаил о fail или sucsess.Мне кажется это более логичным