Parcourir la source

popeye scripts

David Marec il y a 10 mois
Parent
commit
721c6c3fcf

+ 77 - 0
popeye/finger.sh

@@ -0,0 +1,77 @@
+#!/bin/sh
+
+STATUSFILE='/usr/home/finger/status.txt'
+#STATUSFILE='/dev/stdout'
+
+
+STATUS () {
+	echo "${*}" >> ${STATUSFILE}
+}
+
+wip()
+{
+	echo 'Standby Server.'  > ${STATUSFILE}
+	STATUS ''
+	STATUS 'Update in progress'
+	STATUS
+	STATUS `date "+DATE: %Y-%m-%d%nTIME: %H:%M:%S"`
+	STATUS 
+	/usr/local/bin/boxes -d important ${STATUSFILE} ${STATUSFILE}.boxes
+	exit 0
+
+}
+
+[ -r "/tmp/wip.lock" ] && wip
+
+PRESTATUS () {
+	echo -n "${*}" >> ${STATUSFILE}
+}
+
+is_service_running() {
+service -j ${1} ${2} status > /dev/null 2>&1
+}
+
+echo 'salut la foule!' > $STATUSFILE
+echo '' >> $STATUSFILE
+
+service nginx status > /dev/null 2>&1
+[ ${?} -ne 0 -a -z "`sockstat -q -lc -6 -p 80 -P tcp`" ] && STATUS 'The server is down' && exit 1
+
+STATUS 'The webserver is running'
+STATUS '------------------------'
+STATUS
+STATUS `date "+DATE: %Y-%m-%d%nTIME: %H:%M:%S"`
+STATUS 
+
+
+RES='KO'
+is_service_running pg15 postgresql && [ -n "`sockstat -j pg15 -ql4 -p 5432 -P tcp`" ] && RES='OK'
+STATUS 'Postgresql      : ............ '${RES}
+RES='KO'
+is_service_running mariadb mysql-server && [ -n "`sockstat -j pg15 -ql4 -p 5432 -P tcp`" ] && RES='OK'
+STATUS 'MariaDB         : ............ '${RES}
+RES='OK'
+jexec synapse sockstat  -ql -p 8008 -P tcp > /dev/null 2>&1
+STATUS 'Matrix synapse  : ............ '${RES}
+jexec d14 sockstat -qlu | grep -e ".*ruby.*diaspora" > /dev/null 2>&1
+[ ${?} -ne 0 ] && RES='KO'
+STATUS 'Diaspora*       : ............ '${RES}
+
+RES='KO'
+is_service_running php php_fpm && RES='OK'
+STATUS 'Wiki FreeBSD    : ............ '${RES}
+
+RES='KO'
+is_service_running epee php_fpm && RES='OK'
+STATUS 'Forum Epee      : ............ '${RES}
+
+RES='KO'
+is_service_running git git_daemon && RES='OK'
+STATUS 'serveur git     : ............ '${RES}
+
+/usr/local/bin/boxes -d peek ${STATUSFILE} ${STATUSFILE}.boxes
+
+if [ -r "/tmp/wip.plan" ]; then
+	echo ''  >> $STATUSFILE.boxes
+	echo 'Update scheduled for the evening...' | /usr/local/bin/boxes -d nuke >> $STATUSFILE.boxes
+fi

+ 13 - 0
popeye/fingercal.sh

@@ -0,0 +1,13 @@
+#!/bin/sh
+
+STATUSFILE='/usr/home/finger/cal.txt'
+
+/usr/bin/cal -3 > ${STATUSFILE}
+
+echo >> ${STATUSFILE}
+echo '       --------' >> ${STATUSFILE}
+echo >> ${STATUSFILE}
+/usr/bin/calendar -f /usr/local/share/calendar/calendar.history >> ${STATUSFILE}
+
+/usr/local/bin/boxes -d peek  ${STATUSFILE} ${STATUSFILE}.boxes
+

+ 25 - 0
popeye/fullBackup.sh

@@ -0,0 +1,25 @@
+#!/bin/sh
+ZROOT_BASE="zroot"
+SSH="/usr/bin/ssh"
+ZFS="/sbin/zfs "
+REMOTE="matarje"
+REMOTE_USER="david"
+REMOTE_KEY="~/.ssh/zfs"
+REMOTE_POOL="breiz/BCK/master/popeye"
+# ICLUDE="-o canmount=off"
+XCLUDE="-x mountpoint -x canmount"
+
+# getting last snapshot id
+# if one cannot trust the snap id one can use creation time
+
+
+for i in usr usr/home JAILS/master JAILS/master/php  JAILS/master/git JAILS/master/d14 JAILS/master/epee
+do
+	
+ZROOT="${ZROOT_BASE}/${i}"
+ZLAST=`${ZFS} list -o name -Hp -t snap -d 1 ${ZROOT} | cut -d '@' -f 2 | sort | tail -1` 
+
+echo "sending incremental backup from " "${REMOTE_ZLAST} to ${ZLAST}" -- /${ZROOT}
+#
+${ZFS} send -L -e -c ${ZROOT}@${ZLAST} | ${SSH} -i  ${REMOTE_KEY} ${REMOTE_USER}@${REMOTE} ${ZFS} recv -d ${ICLUDE} ${XCLUDE} ${REMOTE_POOL}
+done 

+ 82 - 0
popeye/jail_update.sh

@@ -0,0 +1,82 @@
+#!/bin/sh
+
+# Update freebsd base of all running jails
+# 
+# one has first to create the suitable configuration file 
+# by default /usr/local/etc/jail-update.conf
+# or pass it as the first argument
+# 
+#
+
+export PAGER=/bin/cat
+
+usage() {
+	echo 'Usage: ...'
+	echo -e '-c\tconfiguration file'
+	echo -e '\t\tdefault to /usr/local/etc/jail-update.conf'
+	echo -e '-j\tjail list'
+	echo -e '\t\tdefault to all running jails'
+	echo -e '-u\tthis message'
+	echo '-------------------------------------------------'
+}
+
+parse() {
+	RED='\033[0;31m'
+	NC='\033[0m' # No Color
+	while getopts "cuj:" option 
+	do
+		case ${option} in
+			c)
+				CONF=${OPTARG}
+				;;
+			j)
+				JLIST=${OPTARG}
+				;;
+			*)
+				usage
+				exit 0
+				;;
+		esac
+	done
+}
+
+# default parameters
+CONF=/usr/local/etc/jail-update.conf
+# get currently running names (or jids) list
+JLIST=`jls name 2>/dev/null`
+echo $JLIST
+#JLIST=`echo ${JLIST} | sed 's/d14//g'`
+echo $JLIST
+
+parse ${*}
+
+[ -z "${JLIST}" ] && echo 'no jail to check.exiting.' && exit 0
+[ ! -r "${CONF}" ] && echo 'no configuration file for updating.exiting.' && exit 1
+
+echo ''
+echo 'Ready to update jail(s) <'${JLIST}'>, according to the <'${CONF}'> configuration.'
+echo ''
+
+for J in ${JLIST};
+do
+	# jail path
+	JPATH=`jls -j ${J} path 2>/dev/null` 
+	if [ -n "${JPATH}" ]; then
+		echo '[ :: ' $J ' ::]'
+		# freebsd version this jail is running
+		JVERSION=`jexec ${J} freebsd-version -u`
+		if [ -n "${JVERSION}" ]; then
+			echo 'Updating <'${J}'> from version <'${JVERSION}'>, path <'${JPATH}'>.'
+			freebsd-update -f  ${CONF} --currently-running ${JVERSION}  -b ${JPATH} --not-running-from-cron fetch install 
+
+		else
+			echo 'Unable to get jail <'${J}'> path.Skipping'
+
+		fi
+
+	else
+		echo 'Jail <'${J}'> unavailable.Skipping.'
+
+	fi
+done
+

+ 87 - 0
popeye/jail_upgrade.sh

@@ -0,0 +1,87 @@
+#!/bin/sh
+
+# Update freebsd base of all running jails
+# 
+# one has first to create the suitable configuration file 
+# by default /usr/local/etc/jail-update.conf
+# or pass it as the first argument
+# 
+#
+
+FAILURE() {
+	echo ${*}
+	exit 1
+}
+
+usage() {
+	echo 'Usage: ...'
+	echo -e '-c\tconfiguration file'
+	echo -e '\t\tdefault to /usr/local/etc/jail-update.conf'
+	echo -e '-j\tjail list'
+	echo -e '\t\tdefault to all running jails'
+	echo -e '-u\tthis message'
+	echo '-------------------------------------------------'
+}
+
+parse() {
+	RED='\033[0;31m'
+	NC='\033[0m' # No Color
+	while getopts "cur:j:" option 
+	do
+		case ${option} in
+			c)
+				CONF=${OPTARG}
+				;;
+			r)	TOREV=${OPTARG}
+				;;
+			j)	J=${OPTARG}
+				;;
+			*)
+				usage
+				exit 0
+				;;
+		esac
+	done
+}
+
+export PAGER=/bin/cat
+# default parameters
+CONF=/usr/local/etc/jail-update.conf
+# get currently running names (or jids) list
+parse ${*}
+
+[ -z "${J}" ] && echo 'no jail to check.exiting.' && exit 0
+[ ! -r "${CONF}" ] && echo 'no configuration file for updating.exiting.' && exit 1
+
+echo ''
+echo 'Ready to update jail(s) <'${J}'> to '${TOREV}', according to the <'${CONF}'> configuration.'
+echo ''
+
+# jail path
+JPATH=`jls -j ${J} path 2>/dev/null` 
+if [ -n "${JPATH}" ]; then
+	echo '[ :: ' $J ' ::]'
+	# freebsd version this jail is running
+	JVERSION=`jexec ${J} freebsd-version -u`
+	if [ -n "${JVERSION}" ]; then
+		echo 'Updating <'${J}'> from version <'${JVERSION}'>, path <'${JPATH}'>.'
+		jail -r ${J} || echo skipping
+		freebsd-update -f ${CONF} --currently-running ${JVERSION} -b ${JPATH}  -r ${TOREV} upgrade || FAILURE upgrade failed
+		freebsd-update -f ${CONF} -b ${JPATH}  install || FAILURE install
+		jail -c ${J}
+		freebsd-update -f ${CONF} -b ${JPATH}  install || FAILURE install
+		jail -r ${J}
+		jail -c ${J}
+		pkg -j ${J} bootstrap -f
+		pkg -j ${J} update
+		pkg -j ${J} upgrade -f
+	else
+		echo 'Unable to get jail <'${J}'> path.Skipping'
+
+	fi
+
+else
+	echo 'Jail <'${J}'> unavailable.Skipping.'
+
+fi
+

+ 3 - 0
popeye/jail_version.sh

@@ -0,0 +1,3 @@
+#!/bin/sh
+for i in $(jls name); do printf "%-10s- %s
+" $i $(freebsd-version -j ${i}) ; done

+ 34 - 0
popeye/llanura14Backup.sh

@@ -0,0 +1,34 @@
+#!/bin/sh
+ZROOT_BASE="zroot"
+SSH="/usr/bin/ssh"
+ZFS="/sbin/zfs "
+REMOTE="davidmarec.ddns.net"
+REMOTE_USER="david"
+REMOTE_KEY=~david/.ssh/id_ed25519
+REMOTE_POOL="dmarec/popeye"
+
+
+failure() 
+{
+	echo ${@}
+	exit 1
+}
+
+ssh-add ${REMOTE_KEY} || failure 'ssh-agent required.'
+
+# getting last snapshot id
+# if one cannot trust the snap id one can use creation time
+
+for i in usr JAILS
+
+do
+	ZROOT="${ZROOT_BASE}/${i}"
+	ZLAST=`${ZFS} list -o name -Hp -t snap -d 1 ${ZROOT} | cut -d '@' -f 2 | sort | tail -1` 
+	echo '---------------------------------------------------'
+	echo "sending backup ${ZROOT}@${ZLAST} to ${REMOTE_POOL}"
+	echo
+	${ZFS} send -R -e -L -c ${ZROOT}@${ZLAST} | \
+		${SSH} -i  ${REMOTE_KEY} ${REMOTE_USER}@${REMOTE} \
+		${ZFS} recv -Fdu -o canmount=off -x mountpoint -x logbias -x dedup -x copies ${REMOTE_POOL}
+	echo '^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^'
+done 

+ 22 - 0
popeye/oneBackup.sh

@@ -0,0 +1,22 @@
+#!/bin/sh
+ZROOT_BASE="zroot"
+SSH="/usr/bin/ssh"
+ZFS="/sbin/zfs "
+REMOTE="davidmarec.ddns.net"
+REMOTE_USER="david"
+REMOTE_KEY="~/.ssh/zfs"
+REMOTE_POOL="llroot/BCK/popeye"
+
+# getting last snapshot id
+# if one cannot trust the snap id one can use creation time
+
+
+for i in usr usr/home JAILS/master/php JAILS/master/d14 JAILS/master JAILS/master/git
+do
+	ZROOT="${ZROOT_BASE}/${i}"
+	ZLAST=`${ZFS} list -o name -Hp -t snap -d 1 ${ZROOT} | cut -d '@' -f 2 | sort | tail -1` 
+	ZFILE=`echo "${i}" | sed 's/\//_/g'`
+	echo 'sending backup '${ZLAST}' to '${ZFILE}
+	${ZFS} send -e -c ${ZROOT}@${ZLAST} > /backup/${ZFILE}.bck 
+
+done 

+ 22 - 0
popeye/onelocalBackup.sh

@@ -0,0 +1,22 @@
+#!/bin/sh
+ZROOT_BASE="zroot"
+SSH="/usr/bin/ssh"
+ZFS="/sbin/zfs "
+REMOTE="matarje"
+REMOTE_USER="david"
+REMOTE_KEY="~/.ssh/zfs"
+REMOTE_POOL="breiz/BCK/master/popeye"
+
+# getting last snapshot id
+# if one cannot trust the snap id one can use creation time
+
+
+for i in usr usr/home JAILS/master/php JAILS/master/d14 JAILS/master JAILS/master/git
+do
+	ZROOT="${ZROOT_BASE}/${i}"
+	ZLAST=`${ZFS} list -o name -Hp -t snap -d 1 ${ZROOT} | cut -d '@' -f 2 | sort | tail -1` 
+	echo 'sending backup '${ZLAST}' to '${REMOTE_POOL}
+	${ZFS} send -e -c ${ZROOT}@${ZLAST} | \
+		${SSH} -i  ${REMOTE_KEY} ${REMOTE_USER}@${REMOTE} \
+		${ZFS} recv -Fdu ${REMOTE_POOL}
+done 

+ 73 - 0
popeye/portupgrade.sh

@@ -0,0 +1,73 @@
+#!/bin/sh
+
+all_jails=`jls jid`
+#all_jails="php git synapse epee next mariadb pg15"
+
+DO_CLEAN=""
+DO_DIST=""
+
+do_snap()
+{
+	zfs snap -r zroot/JAILS/master@up || exit 0
+}
+
+do_all_jails(){
+
+	echo '---------------------------------------'
+	echo ":: Host ::"
+	echo
+	pkg upgrade
+	echo
+	echo Cleaning host 
+	echo
+	[ -n "${DO_CLEAN}" ] && pkg ${DO_CLEAN}
+	[ -n "${DO_DIST}" ] && pkg ${DO_DIST}
+	echo '---------------------------------------'
+	for j in ${all_jails}
+	do
+		echo
+		echo '---------------------------------------'
+		echo ":: jail `jls -j ${j} name` [ ${j} ] ::"
+		echo ''
+
+		pkg -j ${j} upgrade
+		echo
+		echo Cleaning 
+		echo
+		[ -n "${DO_CLEAN}" ] && pkg -j ${j} ${DO_CLEAN}
+		echo
+		echo Cleanup distfiles
+		echo
+		[ -n "${DO_DIST}" ] && pkg -j ${j} ${DO_DIST}
+		echo '---------------------------------------'
+	done
+}
+
+echo 
+read -r -p "Would you like to clean up (autoremove) ports ? [Y/n] " yn
+echo 
+
+case "${yn}" in
+	[Yy][eE][sS]|[yY])
+		DO_CLEAN="autoremove"
+		;;
+	*) 
+		;;
+esac
+
+
+echo 
+read -r -p "Would you like to remove distfiles ? [Y/n] " yn
+echo 
+
+case "${yn}" in
+	[Yy][eE][sS]|[yY])
+		DO_DIST="clean -a -y"
+		;;
+	*) 
+		;;
+esac
+
+zfs list -H -t snap -r zroot/JAILS/master@up || do_snap
+
+do_all_jails 

+ 28 - 0
popeye/selfBackup.sh

@@ -0,0 +1,28 @@
+#!/bin/sh
+ZROOT_BASE="zroot"
+SSH="/usr/bin/ssh"
+ZFS="/sbin/zfs "
+REMOTE="matarje"
+REMOTE_USER="david"
+REMOTE_KEY="~/.ssh/zfs"
+REMOTE_POOL="breiz/BCK/master/popeye"
+# ICLUDE="-o canmount=off"
+XCLUDE="-x mountpoint -x canmount"
+
+# getting last snapshot id
+# if one cannot trust the snap id one can use creation time
+
+${ZFS} list -H -t snap -r zroot/JAILS/master@up && zfs destroy -r zroot/JAILS/master@up 
+
+for i in usr usr/home JAILS/master JAILS/master/pg15 JAILS/master/php  JAILS/master/git JAILS/master/d14 JAILS/master/epee JAILS/master/synapse JAILS/master/mariadb  JAILS/master/next
+do
+	
+ZROOT="${ZROOT_BASE}/${i}"
+ZLAST=`${ZFS} list -o name -Hp -t snap -d 1 ${ZROOT} | cut -d '@' -f 2 | sort | tail -1` 
+REMOTE_ZLAST=`${SSH} -i ${REMOTE_KEY} ${REMOTE_USER}@${REMOTE} ${ZFS} list -o name -Hp -t snap  -d 1 ${REMOTE_POOL}/${i} | cut -d '@' -f 2 | sort | tail -1` 
+
+
+echo "sending incremental backup from " "${REMOTE_ZLAST} to ${ZLAST}" -- /${ZROOT}
+#
+${ZFS} send -L -e -c -i ${ZROOT}@${REMOTE_ZLAST} ${ZROOT}@${ZLAST} | ${SSH} -i  ${REMOTE_KEY} ${REMOTE_USER}@${REMOTE} ${ZFS} recv -Fdu ${ICLUDE} ${XCLUDE} ${REMOTE_POOL}
+done 

+ 33 - 0
popeye/zfssnap.sh

@@ -0,0 +1,33 @@
+#!/bin/sh
+SNAPDATE=`date "+%y%m%d"`
+ZROOT="zroot"
+ZFS="/sbin/zfs "
+# Seven day ago
+# -------------
+
+SEVEND=`date -j -v"-7d" +"%s"`
+
+for z in ROOT usr usr/home JAILS 
+do
+	echo "Creating snapshot tree at "${ZROOT}"@"${SNAPDATE}
+	${ZFS} snap -r ${ZROOT}/${z}@${SNAPDATE} 
+	if [ ${?} -ne 0 ]; then
+		echo  "unable to create a snapshot for ${ZROOT} at ${SNAPDATE}."
+	fi
+
+	echo "Cleaning " ${ZROOT}/${z} "snapshots."
+	for i in `${ZFS} list -d 1 -H -t snap -o name -r ${ZROOT}/${z}`  
+	do
+		SNAPCREATED=`${ZFS} list -Hp -t snap -o creation ${i}`
+		if [ ${?} -eq 0 ] 
+		then
+			di=`expr ${SNAPCREATED} - ${SEVEND}`
+			if [ ${di} -lt 0 ] 
+			then
+				echo "removing " ${i}
+				${ZFS} destroy -r ${i} 
+			fi
+		fi
+	done
+
+done