#!/bin/sh # Description: Ignite-UX via NFSV4 and SSH tunnel # # If you obtain this script via Web, convert it to Unix format. # For example: # dos2ux HP-UX-ignite-via-NFSv4-and-SSH-tunnel.sh.txt > HP-UX-ignite-via-NFSv4-and-SSH-tunnel.sh # # Last Update: 24 May 2012 # Designed by: Dusan U. Baljevic (dusan.baljevic@ieee.org) # Coded by: Dusan U. Baljevic (dusan.baljevic@ieee.org) # # Due to bugs with Secure Shell on HP-UX (GR8 Calls QXCR4000252191 # and QXCR1001216058), I used OpenSSH 6.0p1 from Porting and # Archiving Centre for HP-UX # Set default PATH # PATH=/usr/bin:/usr/sbin:/sbin:/opt/ignite/bin; export PATH # The name of the Ignite-UX server # IGNHOST="ignserv" MYHOST=$(uname -n) # The port used on localhost for tunneling NFSv4 via SSH # PORT="2323" # Default NFS port # NFSPORT="2049" # mount and umount programs and Ignite save_config # MOUNTCMD="/sbin/mount" UMOUNTCMD="/sbin/umount" SAVECFG="/opt/ignite/bin/save_config" # File name extension to save original programs # EXT="IGN" # Set up singal handling # trap "INTERRUPT_HANDLER" 1 2 3 9 15 # Prerequisites for NFS premounts # mountcmd() { # QXCR1001169724 provides this suggestion # echo "INFO: Executing mount and umount program changes in /sbin" cd /sbin if [ $? -ne 0 ] then echo "ERROR: Cannot cd to /sbin" exit 1 fi mv $MOUNTCMD ${MOUNTCMD}.${EXT} if [ $? -eq 0 ] then ln -s /usr/bin/true $MOUNTCMD else echo "ERROR: Cannot copy $MOUNTCFG" exit 1 fi mv $UMOUNTCMD ${UMOUNTCMD}.${EXT} if [ $? -eq 0 ] then ln -s /usr/bin/true $UMOUNTCMD else echo "ERROR: Cannot copy $UMOUNTCFG" exit 1 fi echo "INFO: Modifying $SAVECFG" cp -p $SAVECFG ${SAVECFG}.${EXT} if [ $? -eq 0 ] then sed -e "s/^mount -lp/mount.${EXT} -lp/g" $SAVECFG > ${SAVECFG}.$$ if [ -s "${SAVECFG}.$$" ] then mv ${SAVECFG}.$$ $SAVECFG chown bin:bin $SAVECFG chmod 755 $SAVECFG fi else echo "ERROR: Cannot copy $SAVECFG" exit 1 fi } # Cleanup after the work is done # cleancmd() { if [ \( -x "${MOUNTCMD}.${EXT}" \) -a \( -x "${UMOUNTCMD}.${EXT}" \) ] then rm $MOUNTCMD rm $UMOUNTCMD mv ${MOUNTCMD}.${EXT} $MOUNTCMD mv ${UMOUNTCMD}.${EXT} $UMOUNTCMD mv ${SAVECFG}.${EXT} $SAVECFG umount -f /var/opt/ignite/recovery/client_mnt umount -f /var/opt/ignite/recovery/arch_mnt pkill -f "ssh -fN -L" fi } # Catch interrupts and handle them # INTERRUPT_HANDLER() { trap "" 1 2 3 9 15 echo "WARN: Interrupt received... Terminating program and cleaning up" cleancmd exit 0 } SSHtunnel() { echo "INFO: Creating tunnel..." echo "CMD: ssh -fN -L ${PORT}:${IGNHOST}:${NFSPORT} ${IGNHOST}" /usr/local/bin/ssh -fN -L ${PORT}:${IGNHOST}:${NFSPORT} ${IGNHOST} if [ $? -ne 0 ] then echo "ERROR: SSH tunnel failed" exit 1 else echo "SUCCESS: SSH tunnel created" fi } NFSv4mnt() { echo "INFO: Running NFSv4 mount via SSH tunnel..." echo "CMD: mount -o port=${PORT},vers=4 localhost:/var/opt/ignite/clients /var/opt/ignite/recovery/client_mnt" ${MOUNTCMD}.${EXT} -o port=${PORT},vers=4 localhost:/var/opt/ignite/clients /var/opt/ignite/recovery/client_mnt if [ $? -ne 0 ] then echo "ERROR: NFS mount of ${IGNHOST}:/var/opt/ignite/clients failed" exit 1 else echo "SUCCESS: NFS mount of ${IGNHOST}:/var/opt/ignite/clients created" fi echo "CMD: mount -F nfs -o port=${PORT},vers=4 localhost:/var/opt/ignite/recovery/archives/${MYHOST} /var/opt/ignite/recovery/arch_mnt" ${MOUNTCMD}.${EXT} -F nfs -o port=${PORT},vers=4 localhost:/var/opt/ignite/recovery/archives/${MYHOST} /var/opt/ignite/recovery/arch_mnt if [ $? -ne 0 ] then echo "ERROR: NFS mount of ${IGNHOST}:/var/opt/ignite/recovery/archives/${MYHOST} failed" exit 1 else echo "SUCCESS: NFS mount of ${IGNHOST}:/var/opt/ignite/recovery/archives/${MYHOST} created" fi } Ignitebck() { echo "INFO: Running Ignite backups on server $IGNHOST" make_net_recovery -s localhost -P s -x inc_entire=vg00 -x exclude=/tmp -x exclude=/var/tmp -d "Archive_of_${MYHOST}_via_NFSv4" if [ $? -ne 0 ] then echo "ERROR: Ignite backups have errors" cleancmd exit 1 else echo "SUCCESS: Ignite backups completed" fi } echo "INFO: Memory usage before Ignite-UX backups" swapinfo -tm mountcmd SSHtunnel NFSv4mnt Ignitebck cleancmd echo "INFO: Memory usage after Ignite-UX backups" swapinfo -tm exit 0