Нотатка для себе. CARP monitoring script pfsense.
Маю два сервери pfsense (2.5.1-RELEASE ) у різних віртуальних машинах з налаштованими Proxy сервер - Squid, та Virtual IP type CARP.
Задача мати на напоготові резервний Proxy сервер у випадку коли ведуться роботи на одному з гіпервізорів.
Для цього існує пункт налаштування “Squid General Settings/CARP Status VIP”, і теоретично тут достатньо вибрати у списку необхідний спільний Virtual IP.
Але виявленні були проблеми з тим що сервіс автоматично не змінює свій стан синхронно зі зміною CARP (Master/Backup). При завантаженні завжди вмикається сервіс squid ігноруючи /rc.start_packages: [squid] Do not start service… (CARP BACKUP/INIT).

pfSense Proxy Server - CARP Status VIP
Тому для швидкого вирішення проблеми було застосований скрипт на базі автора “maxxoverclocker”.
#!/bin/csh
set path = ($path /bin /sbin /usr/bin /usr/local/bin)
set carp_check_interface='hn1'
set startminute=`date +"%M"`
@ bootseconds=`date +%s` - `sysctl kern.boottime | awk '{print $5}' | sed 's/,//g'`
#echo $bootseconds
if ( $bootseconds >= 60 ) then
set carp_status=`/sbin/ifconfig $carp_check_interface | grep 'carp:' | awk '{print $2}'`
if ( "$carp_status" =~ 'MASTER' ) then
echo "CARP status is 'MASTER'"
if ( ! -e "/var/run/squid/squid.pid" ) then
echo "SQUID start"
/usr/sbin/service squid.sh restart
endif
else if ( "$carp_status" =~ 'BACKUP' ) then
echo "CARP status is 'BACKUP'"
if ( -e /var/run/squid/squid.pid ) then
echo "SQUID shutdown"
/usr/local/sbin/squid -k shutdown
endif
endif
endif
endif
Змінна carp_check_interface має назву інтерфейсу, потрібно змінити на реальний.
Скрипт збережено до файлу /root/carp-scan.sh.
І він запускається кожної хвилини через додаток cron.

