#!/bin/sh # IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html # Opens the specified table in the users editor;writes changes back to the db function cexit { if [ -d /tmp/tabedit.$$ ]; then rm -rf /tmp/tabedit.$$; fi exit } trap cexit 2 15 if [ -r /etc/profile.d/xcat.sh ]; then #Source for environment variables source /etc/profile.d/xcat.sh fi TABLE=$1 if [ $TABLE = "eventlog" ] || [ $TABLE = "auditlog" ]; then echo "The auditlog and eventlog tables may not be edited. Editing will cause index regeneration. Use the tabprune command."; exit 1 fi if [ -z "$TABEDITOR" ]; then TABEDITOR=$EDITOR fi if [ -z "$TABEDITOR" ]; then #echo "WARNING: Define TABEDITOR or EDITOR environment variable before running this command" TABEDITOR=vi fi if [ -z "$TABLE" -o "$TABLE" = "-?" -o "$TABLE" = "-h" -o "$TABLE" = "--help" ]; then echo "Usage: tabedit "; echo " tabedit [-? | -h | --help]"; exit 1 fi # Dump the table to a temporary file mkdir -p /tmp/tabedit.$$/ $XCATROOT/bin/xcatclientnnr tabdump $TABLE > /tmp/tabedit.$$/$TABLE.csv # Save the checksum to see if it actually changes.. if [ `uname` = "AIX" ]; then SUMPROGRAM=sum else SUMPROGRAM=md5sum fi SUM=`$SUMPROGRAM /tmp/tabedit.$$/$TABLE.csv` # Edit the file, then check it EXIT=0 while [ $EXIT -eq 0 ]; do cd /tmp/tabedit.$$ $TABEDITOR $TABLE.csv cd - >/dev/null NEWSUM=`$SUMPROGRAM /tmp/tabedit.$$/$TABLE.csv` if [ "$NEWSUM" == "$SUM" ]; then echo "No file modifications detected, not restoring." break; fi if `dirname $0`/tabrestore /tmp/tabedit.$$/$TABLE.csv; then break; else echo "Above errors occured, hit enter to edit, or ctrl-c to abort" read JNK fi done cexit