Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Автоматический бэкап конфигурации

    Scheduled Pinned Locked Moved Russian
    12 Posts 5 Posters 5.0k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      pakko
      last edited by

      Всем добрый день.

      У меня появилось желание бэкапить автоматом конфиг 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
      
      

      Замечания и уточнения принимаются.

      1 Reply Last reply Reply Quote 0
      • A
        aleksvolgin
        last edited by

        который удалённо подключается к pfSense и, собственно, нажимает кнопку "Download configuration".

        Грамотней если бы скрипт присылал письмо на мыло, а в аттаче бэкап конфига.

        1 Reply Last reply Reply Quote 0
        • A
          alexandrnew
          last edited by

          А кто скажет, что поменялось в 2.1, что вгет способ не срабатывает?
          А по замечанию- кому то в мыло надо, кому то на фтп -там уже проще добавить пару строк кода.

          1 Reply Last reply Reply Quote 0
          • werterW
            werter
            last edited by

            А сами wget, curl у вас установлены? Может после обновления pfsense до 2.1 стоит эти пакеты переустановить если они были в 2.0.х ?

            http://www.milliondollarserver.com/install-wget-curl-on-pfsense-freebsd/

            1 Reply Last reply Reply Quote 0
            • P
              pakko
              last edited by

              В 2.1 появилась защита в виде csrf

              а я как-то раньше писал похожий скрипт для бэкапа NAS4Free конфига - там похоже реализована защита web-интерфейса. Поэтому и сделал на curl по аналогии

              1 Reply Last reply Reply Quote 0
              • P
                pakko
                last edited by

                @werter:

                А сами wget, curl у вас установлены? Может после обновления pfsense до 2.1 стоит эти пакеты переустановить если они были в 2.0.х ?

                http://www.milliondollarserver.com/install-wget-curl-on-pfsense-freebsd/

                я захожу из другой системы - vMA

                1 Reply Last reply Reply Quote 0
                • A
                  alexandrnew
                  last edited by

                  @pakko:

                  В 2.1 появилась защита в виде csrf

                  Вроде в 2.0 тоже было. я на данную страницу (бекапа) его отключал в рнр файлах.

                  1 Reply Last reply Reply Quote 0
                  • P
                    pakko
                    last edited by

                    я только в 2.1 столкнулся. В коде привел пример прежнего скрипта.

                    1 Reply Last reply Reply Quote 0
                    • P
                      pakko
                      last edited by

                      Может кто-нибудь поможет переписать скрипт под 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+"
                      
                      
                      1 Reply Last reply Reply Quote 0
                      • A
                        alexandrnew
                        last edited by

                        странно.
                        я сталкивался. не думаю что у меня бета стояла, я решал так:
                        в 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
                        }

                        1 Reply Last reply Reply Quote 0
                        • P
                          pakko
                          last edited by

                          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
                          
                          
                          1 Reply Last reply Reply Quote 0
                          • T
                            temyshk
                            last edited by

                            @pakko:

                            Написал скрипт для bash, который удалённо подключается к pfSense и, собственно, нажимает кнопку "Download configuration".

                            А есть скрипт или способы сделать бекап конфигурации на самом pfsense, и скопировать созданный на pfsense файл конфигурации, самим pfsensом на удаленный ftp?
                            Потом этот скрипт поместить в cron.
                            И еще послать емаил о fail или sucsess.

                            Мне кажется это более логичным

                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post
                            Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.