From 68def16b69900b781eab3f36f27d94eaf42a360b Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Fri, 30 Dec 2011 13:03:20 -0600
Subject: linhes-system: add new utils for backup/update/and restore

---
 abs/core/LinHES-system/fix_myth_mount.py         | 51 ++++++++++++++++
 abs/core/LinHES-system/fix_myth_mount.sh         | 22 +++++++
 abs/core/LinHES-system/lh_system_all_host_update |  8 +++
 abs/core/LinHES-system/lh_system_backup_job      | 64 ++++++++++++++++++++
 abs/core/LinHES-system/lh_system_host_update     | 56 +++++++++++++++++
 abs/core/LinHES-system/lh_system_restore_job     | 76 ++++++++++++++++++++++++
 6 files changed, 277 insertions(+)
 create mode 100644 abs/core/LinHES-system/fix_myth_mount.py
 create mode 100644 abs/core/LinHES-system/fix_myth_mount.sh
 create mode 100644 abs/core/LinHES-system/lh_system_all_host_update
 create mode 100644 abs/core/LinHES-system/lh_system_backup_job
 create mode 100644 abs/core/LinHES-system/lh_system_host_update
 create mode 100644 abs/core/LinHES-system/lh_system_restore_job

diff --git a/abs/core/LinHES-system/fix_myth_mount.py b/abs/core/LinHES-system/fix_myth_mount.py
new file mode 100644
index 0000000..9f3cc54
--- /dev/null
+++ b/abs/core/LinHES-system/fix_myth_mount.py
@@ -0,0 +1,51 @@
+#!/usr/bin/python2
+import os
+import sys
+cmd="cp -f /etc/fstab /etc/fstab.backup.pre_acl"
+os.system(cmd)
+f = open('/etc/fstab', 'r')
+fstab=f.readlines()
+f.close()
+mp='/data/mnt/d1'
+
+def check_fstab_mount():
+    #first check if media/d1 is in list, if not add it.
+    newfstab=[]
+    mnt_in_fstab=False
+    for line in fstab:
+        split_line=line.split()
+        try:
+            if split_line[1] == mp :
+                print "found mountpoint if fstab"
+                mnt_in_fstab = True
+                break
+        except:  pass
+    return mnt_in_fstab
+
+def add_mnt_to_fstab():
+    newfstab=[]
+    for line in fstab:
+        newfstab.append(line)
+        split_line=line.split()
+        try:
+            if split_line[1] == "/myth":
+               split_line[1] = mp
+               new_line='\t'.join(split_line)+"\n"
+               newfstab.append(new_line)
+        except:
+            pass
+
+    return newfstab
+
+
+
+if check_fstab_mount() == False:
+    print "I need to add it"
+    newfstab=add_mnt_to_fstab()
+    f = open('/tmp/fstab', 'w')
+    for i in newfstab:
+        f.write(i)
+        #f.write("\n")
+    f.close()
+
+
diff --git a/abs/core/LinHES-system/fix_myth_mount.sh b/abs/core/LinHES-system/fix_myth_mount.sh
new file mode 100644
index 0000000..2ed9783
--- /dev/null
+++ b/abs/core/LinHES-system/fix_myth_mount.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+function checkmount {
+  mounted=1
+    for i in `cat /proc/mounts | cut -d' ' -f2`; do
+       if [ "x$1" = "x$i" ]; then
+          mounted=0
+          break
+       fi
+
+    done
+  return $mounted
+}
+
+checkmount $1
+rc=$?
+
+if [ $rc == 0 ]
+then
+   echo "fs is mounted"
+else
+   echo "fs is not mounted"
+fi
\ No newline at end of file
diff --git a/abs/core/LinHES-system/lh_system_all_host_update b/abs/core/LinHES-system/lh_system_all_host_update
new file mode 100644
index 0000000..98fe668
--- /dev/null
+++ b/abs/core/LinHES-system/lh_system_all_host_update
@@ -0,0 +1,8 @@
+#!/bin/bash
+results=`cat /data/srv/xymon/server/etc/hosts.cfg|grep -v ^#|awk '{print $2}' `
+for i in $results
+do		
+   echo "$i"
+   echo "-------------------------------------------"
+   sudo /usr/bin/func $i call pacman update_system $1		
+done
diff --git a/abs/core/LinHES-system/lh_system_backup_job b/abs/core/LinHES-system/lh_system_backup_job
new file mode 100644
index 0000000..3abd5f9
--- /dev/null
+++ b/abs/core/LinHES-system/lh_system_backup_job
@@ -0,0 +1,64 @@
+#!/bin/bash
+#process that uses this system backup script
+# - myth_mtc.py
+# - supplemental web, process.py  backup
+#
+echo "#########################################################"
+echo "Starting  backup	"
+. /etc/profile
+. /etc/systemconfig
+BACKUPDIR=/myth/system_backups
+DATE=`date +%F_%H-%M`
+mkdir -p $BACKUPDIR/$DATE
+
+#backup db
+pacman -Q mysql 2>/dev/null
+if [ $? = 0 ]
+then
+	mysqldump mythconverg > $BACKUPDIR/$DATE/mythconverg
+	mysqldump ncid > $BACKUPDIR/$DATE/ncid
+fi
+
+#backup etc
+cp -rp /etc  $BACKUPDIR/$DATE/etc
+cp -rp /var/lib/oss $BACKUPDIR/$DATE/oss
+
+#backup func keys
+cp -rp /data/srv/func $BACKUPDIR/$DATA/func
+
+#make_zip file
+cd $BACKUPDIR
+tar -zcvf $BACKUPDIR/backup.$DATE.tgz  $DATE
+
+if [ -d $BACKUPDIR/$DATE ]
+then
+	rm -rf $BACKUPDIR/$DATE
+fi
+
+if [ -f /data/srv/hobbit/server/ext/hbnotes.py ]
+then
+	/data/srv/hobbit/server/ext/hbnotes.py
+	chown nobody:nobody /data/srv/httpd/htdocs/hobbit/notes/* 2> /dev/null >/dev/null
+
+
+fi
+
+
+#Remote copy
+if [ x$RemoteBackup = x1 ]
+then
+    localRemoteCheck=`echo $RemoteBackupDir | cut -d: -f1`
+    if [  x$localRemoteCheck =  xdir ]
+    then
+        localRemotedir=`echo $RemoteBackupDir | cut -d: -f2`
+        cmd="cp $BACKUPDIR/backup.$DATE.tgz  $localRemotedir"
+        echo "copying$BACKUPDIR/backup.$DATE.tgz to  $localRemotedir  "
+    else
+	/usr/bin/func  ${RemoteBackupDir} copyfile  -f  $BACKUPDIR/backup.$DATE.tgz  --remotepath $BACKUPDIR/backup.$DATE.tgz
+	
+        echo "copying$BACKUPDIR/backup.$DATE.tgz to  ${RemoteBackupDir}:/data/database_backup/"
+    fi
+    $cmd
+fi
+
+echo "#########################################################"
diff --git a/abs/core/LinHES-system/lh_system_host_update b/abs/core/LinHES-system/lh_system_host_update
new file mode 100644
index 0000000..1a4d714
--- /dev/null
+++ b/abs/core/LinHES-system/lh_system_host_update
@@ -0,0 +1,56 @@
+#!/bin/bash
+# Process that call this script
+# func  update 
+# supplemental web
+echo "#####################################################"
+echo "Starting update"
+. /etc/profile
+
+if  [ x$1 = x ]
+then
+    . /etc/systemconfig
+else
+Hostupdateplan=$1
+fi
+
+
+case $Hostupdateplan in
+	"Myth_only")
+		echo "Updating myth packages"
+		postfix=`cat $INSTALL_DIR/usr/local/share/mythtv/.releasetype`
+		for mythl in mythphone mytharchive mythbrowser mythnews mythgame mythflix mythweather mythcontrols mythgallery mythmovietime mythmusic mythsmolt mythvideo mythweb mythtv
+		do
+			mythlist="$mythlist $mythl$postfix"
+		done
+
+		pacman -Sy
+        	list=`pacman -Qu $pkg |grep Targets`
+        	for pkg in LinHES-config LinHES-system mythinstall $mythlist
+        	do
+	            echo $list|grep -q  $pkg
+            		if  [ $? = 0 ]
+            		then
+                		echo "Updating  $pkg"
+                		pacman --noconfirm -S $pkg
+            		else
+                		echo  "$pkg is up to date"
+                	fi
+	        done
+	;;
+	"All")
+		echo "" 
+		echo "Updating ALL packages"
+		pacman -Sy
+		pacman --noconfirm -Sfu
+	;;
+	"None")
+		echo ""
+		echo "Updating NO packages"
+		;;
+    *)  echo ""
+        echo "Unknown  $Hostupdateplan, skipping updates"
+        ;;
+esac
+
+
+echo "##################################################################################"
diff --git a/abs/core/LinHES-system/lh_system_restore_job b/abs/core/LinHES-system/lh_system_restore_job
new file mode 100644
index 0000000..9c66e2a
--- /dev/null
+++ b/abs/core/LinHES-system/lh_system_restore_job
@@ -0,0 +1,76 @@
+#!/bin/bash
+#  This script is used to perform a quick restore of a database that was backed up via the nightly system backup
+#  The restore only does the database it does NOT restore system files (even if they are in the backup file)
+#
+BACKUPDIR=/myth/system_backups
+backupfile=$1
+
+function usage(){
+    echo "------------------------------------------------------"
+    echo "This program will restore the database from a system backup."
+
+    echo "Files are expected to be in the $BACKUPDIR"
+    echo "usage:"
+    echo ""
+    echo "lh_system_restore_job \$filename  [yes]"
+    echo ""
+    echo "example: lh_system_restore_job backup.2011-12-22_15-34.tgz "
+    echo ""
+    echo ""
+
+    echo "If the script is passed a second argument, it will not cleanup the the restore dir."
+    echo "------------------------------------------------------"
+
+    exit 1
+    }
+
+
+
+if [ x$backupfile = x ]
+then
+    usage
+fi
+
+. /etc/profile
+
+RESTOREDIR=$BACKUPDIR/restore
+DIR=`echo $backupfile |cut -d. -f2`
+CSQL="create database mythconverg;"
+DSQL="drop database mythconverg; "
+MYSQL="mysql  -u mythtv -pmythtv"
+
+
+
+mkdir -p $RESTOREDIR
+cp $BACKUPDIR/$backupfile $RESTOREDIR
+cd $RESTOREDIR && tar -xf  $backupfile && cd $DIR
+
+if [ -f mythconverg ]
+then
+    #drop the db
+    $MYSQL -e "$DSQL"
+    #create the db
+    $MYSQL  -e "$CSQL"
+    #restore the database_backup
+    echo "Restoring the database  $DIR"
+    $MYSQL  mythconverg < mythconverg
+    if [ $? = 0 ]
+    then
+        echo "Done"
+    else
+        echo "An error occured"
+    fi
+ else
+    echo "Couldn't file a file to restore"
+fi
+
+
+#cleanup
+if [ x$2 = x ]
+then
+    echo "Cleaning up the restore dir"
+    rm -rf $RESTOREDIR/$DIR
+    rm -f $RESTOREDIR/$backupfile
+else
+    echo "Not doing a cleanup of $RESTOREDIR"
+fi
-- 
cgit v0.12

