diff options
Diffstat (limited to 'abs/core/tweaker/bin/create-linhes-sql.sh')
-rwxr-xr-x | abs/core/tweaker/bin/create-linhes-sql.sh | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/abs/core/tweaker/bin/create-linhes-sql.sh b/abs/core/tweaker/bin/create-linhes-sql.sh new file mode 100755 index 0000000..478eed0 --- /dev/null +++ b/abs/core/tweaker/bin/create-linhes-sql.sh @@ -0,0 +1,166 @@ +#!/bin/bash + +# Written by Bob Igo from the MythTV Store at http://MythiC.TV +# Email: bob@stormlogic.com +# +# If you run into problems with this script, please send me email + +# PURPOSE: +# -------------------------- +# This script automates the creation of a new LinHES.sql based +# on the contents of the current mythconverg database. + +if [ `whoami` != "root" ]; then + echo "This script must be run as root." + exit -1 +fi + +# Every file we may create, edit, or delete +########################################### +export LINHES_SQL_PROTOTYPE=/data/database/LinHES.sql-new +export MYTHTV_SQL_OLD=/data/database/LinHES.sql-backup +export TMPFILE=/tmp/LinHES.sql-tmp + +echo "" +echo " ** ONLY CESMAN SHOULD EVER NEED TO RUN THIS SCRIPT **" +echo "" +echo " WARNING: This will archive your mythconverg database to a file," +echo " then delete mythconverg from MySQL. It will then launch mythbackend" +echo " to repopulate mythconverg, with a goal of creating the smallest-possible" +echo " mythconverg database that MythTV can load without complanining." +echo " Every attempt will be made to restore your original database, but" +echo " ***no guarantee is made***." +echo "" +echo " ** ONLY CESMAN SHOULD EVER NEED TO RUN THIS SCRIPT **" +echo "" + +echo -n "Proceed? [y|N] " +read FEAR + +if [ "$FEAR" != "y" ] && [ "$FEAR" != "Y" ]; then + echo "***NO OPERATION WILL BE PERFORMED***" + exit +fi + +# Archive the current mythconverg table from the MySQL database: +echo "DROP DATABASE IF EXISTS mythconverg; CREATE DATABASE mythconverg; USE mythconverg;" > $MYTHTV_SQL_OLD +mysqldump mythconverg >> $MYTHTV_SQL_OLD + +# delete the mythconverg database from MySQL +killall mythbackend +mysql -e "DROP DATABASE IF EXISTS mythconverg; CREATE DATABASE mythconverg;" + +mythtv-setup --geometry 640x480 2>&1 > /dev/null & + +echo "*" +echo "* 1) PICK ANY LANGUAGE WHEN PROMPTED." +echo "* 2) AGREE TO THE SCHEMA UPGRADE." +echo "* 3) PRESS ENTER HERE WHEN THE MYTHTV-SETUP MENU LAUNCHES." +echo "*" +read KEYPRESS + +mysql -e "USE mythconverg; \ +INSERT INTO settings VALUES ('SecurityPin','0000','"`hostname`"'); \ +INSERT INTO settings VALUES ('BackendServerIP','127.0.0.1','"`hostname`"'); \ +INSERT INTO storagegroup VALUES ('\N', 'Default','"`hostname`"','/');" + +echo "*" +echo "* 1) EXIT MYTHTV-SETUP" +echo "* 2) PRESS ENTER HERE WHEN READY TO CONTINUE." +echo "*" +read KEYPRESS + +# let mythbackend repopulate mythconverg from scratch +mythbackend 2>&1 > /dev/null & +sleep 3 + +mythfrontend --geometry 640x480 2>&1 > /dev/null & +echo "*" +echo "* 1) EXIT MYTHFRONTEND" +echo "* 2) PRESS ENTER HERE WHEN READY TO CONTINUE." +echo "*" +read KEYPRESS + +killall mythfrontend +killall mythbackend + +# save off the mostly-pristine MythTV myconverg database +# (It would be 100% pristine, but mythbackend won't run unless BackendServerIP is given a value, +# and both mythtv-setup and the mythfrontend won't proceed until you've picked a language.) + +# Edit the pristine MythTV mythconverg database so that we can use it to prime +# the database during a semi-automated LinHES installation. + +SQL_FILENAME=$LINHES_SQL_PROTOTYPE + +# load our library functions +. /usr/LH/tweaker/bin/SQLtweaker.sh +# +echo "*" +echo "* Writing $LINHES_SQL_PROTOTYPE..." +echo "*" +# +echo "/*" > $LINHES_SQL_PROTOTYPE +echo " * MythTV raw SQL creation file." >> $LINHES_SQL_PROTOTYPE +echo " */" >> $LINHES_SQL_PROTOTYPE +echo "" >> $LINHES_SQL_PROTOTYPE +echo "-- #################################################################### --" >> $LINHES_SQL_PROTOTYPE +echo "-- Drop any initial database:" >> $LINHES_SQL_PROTOTYPE +echo "DROP DATABASE IF EXISTS mythconverg;" >> $LINHES_SQL_PROTOTYPE +echo "" >> $LINHES_SQL_PROTOTYPE +echo "-- #################################################################### --" >> $LINHES_SQL_PROTOTYPE +echo "-- Create an empty new database:" >> $LINHES_SQL_PROTOTYPE +echo "CREATE DATABASE mythconverg;" >> $LINHES_SQL_PROTOTYPE +echo "GRANT ALL ON mythconverg.* TO mythtv@localhost IDENTIFIED BY \"mythtv\";" >> $LINHES_SQL_PROTOTYPE +echo "FLUSH PRIVILEGES;" >> $LINHES_SQL_PROTOTYPE +echo "GRANT CREATE TEMPORARY TABLES ON mythconverg.* TO mythtv@localhost IDENTIFIED BY \"mythtv\";" >> $LINHES_SQL_PROTOTYPE +echo "FLUSH PRIVILEGES;" >> $LINHES_SQL_PROTOTYPE +echo "USE mythconverg;" >> $LINHES_SQL_PROTOTYPE +echo "" >> $LINHES_SQL_PROTOTYPE +echo "-- #################################################################### --" >> $LINHES_SQL_PROTOTYPE +echo "-- Create all the tables:" >> $LINHES_SQL_PROTOTYPE +echo "" >> $LINHES_SQL_PROTOTYPE + +# Dump the database, removing all unneeded DB inserts - when LinHES launches mythtv-setup and mythfrontend, +# anything undefined will be given default values by the applications, except for the INSERTs below. +mysqldump mythconverg | sed -e "s/`hostname`/MythTVhost'/g" -e "s/AUTO_INCREMENT=[0-9]* //g" > $TMPFILE +grep -v "INSERT INTO" $TMPFILE >> $LINHES_SQL_PROTOTYPE +sed "s/,(/,\n(/g" $TMPFILE | grep DBSchema | sed "s/\(.*\)NULL),/INSERT INTO settings VALUES \1'MythTVhost');/g" >> $LINHES_SQL_PROTOTYPE +echo "INSERT INTO settings VALUES ('SecurityPin','0000','MythTVhost');" >> $LINHES_SQL_PROTOTYPE +echo "INSERT INTO settings VALUES ('BackendServerIP','127.0.0.1','MythTVhost');" >> $LINHES_SQL_PROTOTYPE +echo "INSERT INTO settings VALUES ('MasterServerIP','127.0.0.1','MythTVhost');" >> $LINHES_SQL_PROTOTYPE +echo "INSERT INTO settings VALUES ('MasterServerPort','6543','MythTVhost');" >> $LINHES_SQL_PROTOTYPE +echo "INSERT INTO settings VALUES ('Theme', 'LinHES','MythTVhost');" >> $LINHES_SQL_PROTOTYPE +echo "INSERT INTO settings VALUES ('HostMyhostname', 'type_hostname_here','MythTVhost');" >> $LINHES_SQL_PROTOTYPE +echo "INSERT INTO storagegroup VALUES ('\N', 'Default','MythTVhost','/');" >> $LINHES_SQL_PROTOTYPE + +rm $TMPFILE + +# +echo "*" +echo "...DONE" +echo "*" +# + +echo "*" +echo "* PRESS ENTER HERE WHEN READY TO RESTORE THE OLD DATABASE" +echo "* AND RE-LAUNCH MYTHBACKEND" +echo "*" +read KEYPRESS + +# +echo "Restoring original database from $MYTHTV_SQL_OLD..." +# +# Restore the original mythconverg database +cat $MYTHTV_SQL_OLD | mysql 2>&1 > /dev/null +# +echo "...DONE" +# + +# +echo "restarting mythbackend..." +# +mythbackend & +# +echo "...DONE" +# |