TSM node replikacios iranyt forgato szkript

A szkript két replikációs TSM szervert tud kezelni. (Egy cél és egy hozzá tartozó forrás szerver.) Paraméterként megadott node, vagy node-ok replikációs szerepkörét cseréli meg (megfordítja a node replikációs irányát), törli, vagy teszi szinkron módba.

Működése:

Node lista készítése: Egy fájlba lekérdezi az 1. szerveren lévő, replikációra beállított node-ok listáját. Opcionális paraméterrel szűkíthetjük csak a Send vagy csak a Receive módúakra.

Replikációs irány megfordítása (szerepcsere): A szkript egymás után megy végig a node-okon. (Ha nem egy node-ra futtatjuk). Megállapítja, hogy jelenleg melyik szerveren van küldő és melyiken fogadó szerepkörben. Miután leellenőrizte, hogy nincs futó replikáció, vagy kliens session a node-ra a jelenlegi küldő szerveren (ha van valami, akkor megvárja, míg az befejeződik, de magától nem állítja le), lockolja a node-ot, hogy egy esetleges kliens csatlakozás ne tudjon már bele írni. Ezután futtat egy utolsó replikációt, hogy egy szinkronba kerüljenek a node adatai a két szerveren. Ha ez sikeresen lefutott, törli a replikációs szerepköröket a node-ról mindkét szerveren, majd beállítja, hogy a jelenlegi küldő legyen az új fogadó és fordítva (A SyncSend és SyncReceive paramétereket használva.) Ezután futtat egy „preview” replikációt az új küldő szerveren, hogy lássuk működik-e, majd felengedi a lockolt node-ot, és tovább lép a következő node-ra. (Ha van.)

Replikációs szabály törlése: Leveszi a node-okról a replikációs szabályt. Opcionálisan meg lehet adni, hogy csak az egyik, vagy csak a másik oldalon tegye ezt meg.

Szinkron módba állítás: A node-okat, SyncSend/SyncReceive módba állítja, hogy újra repéikálhatóak legyenek egy replikációs szabály törlés után.

A futást egy fájlba is logolja.

Paraméterként megadhatunk node nevet, fájl nevet (soronként node listával), vagy a „-m” paramétert, mely minden szerveren replikációra beállított node-ra lefuttatja a szerepkör cserét.

tsm_change_repl_roles.sh
#!/bin/bash
###################################################################################
# TSM replikacios parameter vezerlo szkript v1.3
# created by Agoston Peter
###################################################################################
TSMSRV1=TSM1 # Az egyik TSM szerver sztanza neve
TSMSRV2=TSM2 # A másik TSM szerver sztanza neve
TSMUSER=tsm_admin # TSM adminisztrátor
TSMPASS=jelszo # TSM adminisztrátor jelszava
LOG_FILE="/var/log/tsm_change_repl_roles.log" # Futási log fájl neve
TMP_FILE="/var/log/tsm_change_repl_roles.tmp" # Futási ideiglenes munkaállomány neve
# Innen ne módosíts, csak ha tudod mit csinálsz!
DSMADMC1="dsmadmc -id=$TSMUSER -pa=$TSMPASS -se=$TSMSRV1 -dataonly=y -tabdelim"
DSMADMC2="dsmadmc -id=$TSMUSER -pa=$TSMPASS -se=$TSMSRV2 -dataonly=y -tabdelim"
SQL_REPLNODES="select node_name from nodes where REPL_STATE='ENABLED' order by node_name"
white=$(tput bold;tput setaf 7)          # bright white text
normal=$(tput sgr0)                      # normal text
blue="\033[00;94m"                       # blue text
red=$(tput bold;tput setaf 1)            # bright red text
 
function log() {
	szin=$1
	shift
        echo -e $blue$(date "+%Y.%m.%d %H:%M") $szin$*$normal
        echo $(date "+%Y.%m.%d %H:%M") $* >> $LOG_FILE
}
 
function help() {
        echo
        echo "TSM replikacios parameter vezerlo szkript $(grep -o 'v[0-9]\+\.[0-9]\+' $0 | head -n1) - created by Agoston Peter"
        echo "Hasznalat: $0 [-m|-n NODE_NEV|-f NODE_LISTA.lst] [-c|-d(-ds|-dt)(-r|-s)|-sy(-r|-s)]"
        echo "Node-ok kijelolese (egyik kotelezoen valasztando):"
        echo "  -m			# A -m kapcsolo eseten minden replikalt node-on vegighalad"
        echo "  -n NODE_NEV	 	# A -n kapcsolo utan megadott node-dal fog dolgozni"
        echo "  -f NODE_LISTA.LST	# A -f kapcsolo utan megadott fajlban soronkent felsorolt node-okkal fog dolgozni"
        echo
	echo "Opciok (egyik kotelezoen valasztando):"
        echo "  -l |--list-repl-nodes	# A $TSMSRV1 szerveren listat keszit a tsm_change_repl_roles.[DATUM].[REPL_MODE].txt fajlba a replikaciora beallitott node-okrol"
        echo "  -c |--change-role	# A $TSMSRV1 szerveren a [-n/-m/-f] parameterrel deklaralt node-ok repliikacios iranyat megforditja"
        echo "  -d |--del-role		# A $TSMSRV1 es $TSMSRV2 szerveren a [-n/-m/-f] parameterrel deklaralt node-okrol torli a replikacios szabalyt"
        echo "  -sy|--set-sync-role	# A $TSMSRV1 szerveren a [-n/-m/-f] parameterrel deklaralt node-okon SyncSend, a $TSMSRV2 szerveren SyncReceive modba allitja a node-ot"
        echo
	echo "Opcionalis parameterek a -d kapcsolohoz (egyszerre csak az egyik valaszthato):"
        echo "  -ds|--del-source-role	# A $TSMSRV1 szerveren a [-n/-m/-f] parameterrel deklaralt node-okrol leveszi a replikacios szabalyt"
        echo "  -dt|--del-target-role	# A $TSMSRV2 szerveren a [-n/-m/-f] parameterrel deklaralt node-okrol leveszi a replikacios szabalyt"
        echo
	echo "Opcionalis parameterek a -d es -sy kapcsolokhoz (egyszerre csak az egyik valaszthato):"
        echo "  -r|--receive-only	# A $TSMSRV1 szerveren RECEIVE replikacios modban levo node-okkal fog csak foglalkozni a [-n/-m/-f] parameterrel deklaralt node-ok kozul"
        echo "  -s|--send-only 		# A $TSMSRV1 szerveren SEND replikacios modban levo node-okkal fog csak foglalkozni a [-n/-m/-f] parameterrel deklaralt node-ok kozul"
	echo
}
 
# Megnezzuk irhato-e a log es temp fajlunk
touch $TMP_FILE
if [[ $? -ne 0 ]]; then echo "A $TMP_FILE munkaallomany nem irhato."; exit 1; fi
touch $LOG_FILE
if [[ $? -ne 0 ]]; then echo "A $LOG_FILE log allomany nem irhato."; exit 1; fi
echo "----------------------------------------------------">> $LOG_FILE
log $white "Futasi log: \"$LOG_FILE\""
# A forgatando node-ok listajanak elokeszitese a szkriptnek adott parameter alapjan
 
NUMARGS=$#
IF_REPL_MODE='tetszoleges replikacios '
for ((i=1 ; i <= NUMARGS ; i++)); do
    case "$1" in
    -m)
	$DSMADMC1 $SQL_REPLNODES > $TMP_FILE
        log $white "Valasztott node-ok:"
	log $white "Minden $TSMSRV1 szerveren replikalt node (akar cel, akar forras node)."
	;;
    -f)
	shift
	if [[ -f $1 ]]; then
          log $white "Valasztott node-ok:"
    	  log $white "A \"$1\" file-ban felsorolt node-ok:"
    	  cat $1 | tee $TMP_FILE 
	  cat $1 >> $LOG_FILE
	else
	  log $red "A $1 fajl nem letezik."
	  log $red "Futas vege."
	  exit 1
	fi
	;;
    -n)
	shift
        log $white "Valasztott node-ok:"
	log $white "  $1"
        echo $1 | tee $TMP_FILE >> $LOG_FILE
	;;
    -r|--receive-only)
	IF_REPL_MODE='RECEIVE'
        ;;
    -s|--send-only)
	IF_REPL_MODE='SEND'
        ;;
    -c|--change-role)
        ROTATE=true
        ;;
    -d|--del-role)
        REMOVE=true
        ;;
    -ds|--del-source-role)
	REMOVE_SOURCE_ONLY=true
	;;
    -dt|--del-target-role)
	REMOVE_TARGET_ONLY=true
	;;
    -sy|--set-sync-role)
	SET_SYNC_ROLE=true
	;;
    -l|--list-repl-nodes)
	LIST_REPL_NODES=true
	;;
    *)
        ;;
    esac
	shift
done
 
if [[ $ROTATE ]]; then
    log $white "Minden $TSMSRV1 szerveren $IF_REPL_MODE modban levo node replikacios iranyat megforditjuk (a valasztott node-ok kozul)."
elif [[ $REMOVE ]]; then
    if [[ $REMOVE_SOURCE_ONLY ]]; then
        log $white "Minden $TSMSRV1 szerveren $IF_REPL_MODE modban levo node replikacios szabalyat toroljuk (a valasztott node-ok kozul)."
    elif [[ $REMOVE_TARGET_ONLY ]]; then
        log $white "Minden $TSMSRV2 szerveren $IF_REPL_MODE modban levo node replikacios szabalyat toroljuk (a valasztott node-ok kozul)."
    else
        log $white "Minden $TSMSRV1 es $TSMSRV2 szerveren $IF_REPL_MODE modban levo node replikacios szabalyat toroljuk (a valasztott node-ok kozul)."
    fi
elif [[ $LIST_REPL_NODES ]]; then
    if [[ 'tetszoleges replikacios ' = $IF_REPL_MODE ]]; then IF_REPL_MODE2="any"; else IF_REPL_MODE2=$IF_REPL_MODE; fi
    log $white "Minden $TSMSRV1 szerveren $IF_REPL_MODE modban levo node-ot kilistazunk a 'tsm_change_repl_roles.$(date "+%Y%m%d%H%M").$IF_REPL_MODE2.nodes' fajba."
elif [[ $SET_SYNC_ROLE ]]; then
    log $white "Minden $TSMSRV1 szerveren $IF_REPL_MODE modban levo node-ot SyncSend, a $TSMSRV2 szerveren ugyanezeket SyncReceive modba allitjuk (a valasztott node-ok kozul)."
fi
 
if [[ $NUMARGS -eq 0 || ! ( $REMOVE || $ROTATE || $SET_SYNC_ROLE || $LIST_REPL_NODES ) ]]; then
	log $red "Hianyzo parameter! (-c|-d|-sy|-l)"
	log $red "Futas vege."
	help
	exit
fi
 
# Itt kezdodik a lenyeg
grep -v '^$' $TMP_FILE | while read NODE; do
    if [[ $ROTATE ]]; then
	echo -e $blue$(date "+%Y.%m.%d %H:%M") $white-=[ $red$NODE$white ]=-$normal
	echo $(date "+%Y.%m.%d %H:%M")" -=[ $NODE ]=-" >> $LOG_FILE
	REPL_MODE=`$DSMADMC1 "select REPL_MODE from nodes where node_name=upper('$NODE')"`
	# Ha nem olyan modban van, mint amit a program parameterben kapott, megyunk a kovetkezo node-ra
	if [[ $REPL_MODE != $IF_REPL_MODE && 'tetszoleges replikacios ' != $IF_REPL_MODE ]]; then
            log $red "A $NODE kihagyasra kerul, mert nem $IF_REPL_MODE modban van (vagy egyeb problema van a node-dal)."
	    continue;
	fi
	case $REPL_MODE in
	  SEND) 
	    log $white "A jelenlegi replikacios irany: $TSMSRV1 -> $TSMSRV2"
 
	    # Varunk, mig nincs sessionje
	    while [[ $($DSMADMC1 "select session_id from sessions where CLIENT_NAME='$NODE' and SESSION_TYPE='Node'" | egrep -v 'AN[SR]'| wc -l) -gt 0 ]]; do
		log $white "A node-nak van aktiv sessionje, megvarjuk..."
		sleep 30
	    done
	    # Varunk, mig nincs processe
	    while [[ $($DSMADMC1 "select process_num from processes where STATUS like '%$NODE%'" | egrep -v 'AN[SR]'| wc -l) -gt 0 ]]; do
		log $white "A node-nak van aktiv processze, megvarjuk...."
		sleep 30
	    done
	    # Node lockolasa
	    log $white "Node lockolasa:" 
	    $DSMADMC1 lock node $NODE | tee -a $LOG_FILE
	    RC=${PIPESTATUS[0]}
	    if [[ $RC -ne 0 ]]; then log $red "A node lockolasa sikertelen, ezert a node kihagyasra kerul."; continue; fi
	    # Utolso replikacio futtatasa a forgatas elott
	    log $white "Futtatunk egy utolso replikaciot a forgatas elott, hogy biztosan szinkronban legyen a ket oldal..."
	    $DSMADMC1 repl n $NODE wait=y | tee -a $LOG_FILE
	    RC=${PIPESTATUS[0]}
	    if [[ $RC -ne 0 ]]; then log $red "A node replikalasa sikertelen, ezert a node kihagyasra kerul."; continue; fi
	    # Toroljuk a node-okrol a replikacios szabalyt
	    log $white "Toroljuk a node-rol a replikacios szabalyt mindket szerveren..."
	    log $white "- $TSMSRV1:" 
	    $DSMADMC1 remove replnode $NODE | tee -a $LOG_FILE 
	    RC=${PIPESTATUS[0]}
	    if [[ $RC -ne 0 ]]; then log $red "A $TSMSRV1 szerveren nem sikerult torolni a replikacios szabalyt a node-rol, ezert a node kihagyasra kerul."; continue; fi
	    log $white "- $TSMSRV2:" 
	    $DSMADMC2 remove replnode $NODE | tee -a $LOG_FILE 
	    RC=${PIPESTATUS[0]}
	    if [[ $RC -ne 0 ]]; then log $red "A $TSMSRV2 szerveren nem sikerult torolni a replikacios szabalyt a node-rol, ezert a node kihagyasra kerul."; continue; fi
	    # Beallitjuk az uj replikacios parametereket
            log $white "Beallitjuk a 'SyncReceive' replikacios parametert a $TSMSRV1 szerveren..."
	    $DSMADMC1 update node $NODE replstate=enabled replmode=syncreceive | tee -a $LOG_FILE
	    RC=${PIPESTATUS[0]}
	    if [[ $RC -ne 0 ]]; then log $red "A $TSMSRV1 szerveren nem sikerult beallitani az uj replikacios szabalyt, ezert a node kihagyasra kerul."; continue; fi
            log $white "Beallitjuk a 'SyncSend' replikacios parametert a $TSMSRV2 szerveren..."
	    $DSMADMC2 update node $NODE replstate=enabled replmode=syncsend | tee -a $LOG_FILE
	    RC=${PIPESTATUS[0]}
	    if [[ $RC -ne 0 ]]; then log $red "A $TSMSRV2 szerveren nem sikerult beallitani az uj replikacios szabalyt, ezert a node kihagyasra kerul."; continue; fi
	    # Replikacios szabalyok validalasa
	    #RC=$($DSMADMC2 validate replication $NODE verify=y | grep 'Connection Status' | grep 'Valid Connection' | wc -l)
	    #log $white "Az uj replikacios szabalyok validalasa: RC$RC"
	    #if [[ $RC -ne 0 ]]; then log $white "A $TSMSRV2 szerveren nem sikerult beallitani az uj replikacios szabalyt, ezert a node kihagyasra kerul."; continue; fi
	    # Node replikalasa az uj forras oldalon
#	    log $white "Node replikalas inditasa 'preview' modban a $TSMSRV2-n:"
#	    $DSMADMC2 repl node $NODE preview=y wait=y | tee -a $LOG_FILE
#	    RC=${PIPESTATUS[0]}
#	    if [[ $RC -ne 0 ]]; then log $red "A teszt replikacio sikertelen!"; else log $white "A teszt replikacio sikeresnek tunik."; fi
	    # Node felengedese
	    log $white "Node felengedese:"
	    $DSMADMC1 unlock node $NODE | tee -a $LOG_FILE
	    RC=${PIPESTATUS[0]}
	    if [[ $RC -ne 0 ]]; then log $red "A node felengedese sikertelen!"; continue; fi
	    log $white "A replikacio megforditva, az uj irany: $TSMSRV2 -> $TSMSRV1"
	    ;;
	  RECEIVE) 
	    log $white "A jelenlegi replikacios irany: $TSMSRV2 -> $TSMSRV1"
	    # Varunk, mig nincs sessionje
	    while [[ $($DSMADMC2 "select session_id from sessions where CLIENT_NAME='$NODE' and SESSION_TYPE='Node'" | egrep -v 'AN[SR]'| wc -l) -gt 0 ]]; do
		log $white "A node-nak van aktiv sessionje, megvarjuk..."
		sleep 30
	    done
	    # Varunk, mig nincs processe
	    while [[ $($DSMADMC2 "select process_num from processes where STATUS like '%$NODE%'" | egrep -v 'AN[SR]'| wc -l) -gt 0 ]]; do
		log $white "A node-nak van aktiv processze, megvarjuk...."
		sleep 30
	    done
	    # Node lockolasa
	    log $white "Node lockolasa:"
	    $DSMADMC2 lock node $NODE | tee -a $LOG_FILE
	    RC=${PIPESTATUS[0]}
	    if [[ $RC -ne 0 ]]; then log $red "A node lockolasa sikertelen, ezert a node kihagyasra kerul."; continue; fi
	    # Utolso replikacio futtatasa a forgatas elott
	    log $white "Futtatunk egy utolso replikaciot a forgatas elott, hogy biztosan szinkronban legyen a ket oldal..."
	    $DSMADMC2 repl n $NODE wait=y | tee -a $LOG_FILE
	    RC=${PIPESTATUS[0]}
	    if [[ $RC -ne 0 ]]; then log $red "A node replikalasa sikertelen, ezert a node kihagyasra kerul."; continue; fi
	    # Toroljuk a node-okrol a replikacios szabalyt
	    log $white "Toroljuk a node-rol a replikacios szabalyt mindket szerveren..."
	    log $white "- $TSMSRV2:"
	    $DSMADMC2 remove replnode $NODE | tee -a $LOG_FILE
	    RC=${PIPESTATUS[0]}
	    if [[ $RC -ne 0 ]]; then log $red "A $TSMSRV2 szerveren nem sikerult torolni a replikacios szabalyt a node-rol, ezert a node kihagyasra kerul."; continue; fi
	    log $white "- $TSMSRV1:"
	    $DSMADMC1 remove replnode $NODE | tee -a $LOG_FILE
	    RC=${PIPESTATUS[0]}
	    if [[ $RC -ne 0 ]]; then log $red "A $TSMSRV1 szerveren nem sikerult torolni a replikacios szabalyt a node-rol, ezert a node kihagyasra kerul."; continue; fi
	    # Beallitjuk az uj replikacios parametereket
            log $white "Beallitjuk a 'SyncReceive' replikacios parametert a $TSMSRV2 szerveren..."
	    $DSMADMC2 update node $NODE replstate=enabled replmode=syncreceive | tee -a $LOG_FILE
	    RC=${PIPESTATUS[0]}
	    if [[ $RC -ne 0 ]]; then log $red "A $TSMSRV2 szerveren nem sikerult beallitani az uj replikacios szabalyt, ezert a node kihagyasra kerul."; continue; fi
            log $white "Beallitjuk a 'SyncSend' replikacios parametert a $TSMSRV1 szerveren..."
	    $DSMADMC1 update node $NODE replstate=enabled replmode=syncsend | tee -a $LOG_FILE
	    RC=${PIPESTATUS[0]}
	    if [[ $RC -ne 0 ]]; then log $red "A $TSMSRV1 szerveren nem sikerult beallitani az uj replikacios szabalyt, ezert a node kihagyasra kerul."; continue; fi
	    # Replikacios szabalyok validalasa
	    #RC=$($DSMADMC2 validate replication $NODE verify=y | grep 'Connection Status' | grep 'Valid Connection' | wc -l)
	    #log $white "Az uj replikacios szabalyok validalasa: RC$RC"
	    #if [[ $RC -ne 0 ]]; then log $white "A $TSMSRV2 szerveren nem sikerult beallitani az uj replikacios szabalyt, ezert a node kihagyasra kerul."; continue; fi
	    # Node replikalasa az uj forras oldalon
	    log $white "Node replikalas inditasa 'preview' modban a $TSMSRV1-n:"
#	    $DSMADMC1 repl node $NODE preview=y wait=y | tee -a $LOG_FILE
#	    RC=${PIPESTATUS[0]}
#	    if [[ $RC -ne 0 ]]; then log $red "A teszt replikacio sikertelen!"; else log $white "A teszt replikacio sikeresnek tunik."; fi
	    # Node felengedese
	    log $white "Node felengedese:"
	    $DSMADMC2 unlock node $NODE | tee -a $LOG_FILE
	    RC=${PIPESTATUS[0]}
	    if [[ $RC -ne 0 ]]; then log $red "A node felengedese sikertelen!"; continue; fi
	    log $white "A replikacio megforditva, az uj irany: $TSMSRV1 -> $TSMSRV2"
	    ;;
	  SYNCRECEIVE) 
	    log $white "A node szerepkor csere alatt van mar, es a $TSMSRV2 lesz az uj aktiv oldala."
	    ;;	
	  SYNCSEND) 
	    log $white "A node szerepkor csere alatt van mar, es a $TSMSRV1 lesz az uj aktiv oldala."
	    ;;	
	    *) 
	    log $red "Ellenorizd a node replikacios allapotat ($REPL_MODE)!"
	    ;;
	esac
	log $red "10mp varakozas a kovetkezo node megkezdese elott..."
	sleep 10
        echo
    elif [[ $REMOVE ]]; then
        echo -e $blue$(date "+%Y.%m.%d %H:%M") $white-=[ $red$NODE$white ]=-$normal
        echo $(date "+%Y.%m.%d %H:%M")" -=[ $NODE ]=-" >> $LOG_FILE
        REPL_MODE=`$DSMADMC1 "select REPL_MODE from nodes where node_name=upper('$NODE')"`
        # Ha nem olyan modban van, mint amit a program parameterben kapott, megyunk a kovetkezo node-ra
        if [[ $REPL_MODE != $IF_REPL_MODE ]]; then
            log $red "A $NODE kihagyasra kerul, mert nem $IF_REPL_MODE modban van (vagy egyeb problema van a node-dal)."
            continue;
        fi
        # Toroljuk a node-okrol a replikacios szabalyt
	if [[ ! $REMOVE_TARGET_ONLY ]]; then
		log $white "Toroljuk a node-rol a replikacios szabalyt $TSMSRV1 szerveren..."
		$DSMADMC1 remove replnode $NODE | tee -a $LOG_FILE
		RC=${PIPESTATUS[0]}
		if [[ $RC -ne 0 ]]; then log $red "A $TSMSRV1 szerveren nem sikerult torolni a replikacios szabalyt a node-rol, ezert a node kihagyasra kerul."; continue; fi
	fi
	if [[ ! $REMOVE_SOURCE_ONLY ]]; then
		log $white "Toroljuk a node-rol a replikacios szabalyt $TSMSRV2 szerveren..."
		$DSMADMC2 remove replnode $NODE | tee -a $LOG_FILE
		RC=${PIPESTATUS[0]}
		if [[ $RC -ne 0 ]]; then log $red "A $TSMSRV2 szerveren nem sikerult torolni a replikacios szabalyt a node-rol, ezert a node kihagyasra kerul."; continue; fi
	fi
    # Replikációra beállított node-od listájának kiírása fáljba
    elif [[ $LIST_REPL_NODES ]]; then
	if [[ $IF_REPL_MODE = 'tetszoleges replikacios ' ]]; then
		$DSMADMC1 "select node_name from nodes where REPL_STATE='ENABLED' order by node_name" > "tsm_change_repl_roles.$(date "+%Y%m%d%H%M").$IF_REPL_MODE2.nodes"
	else 
		$DSMADMC1 "select node_name from nodes where REPL_STATE='ENABLED' and REPL_MODE='$IF_REPL_MODE' order by node_name" > "tsm_change_repl_roles.$(date "+%Y%m%d%H%M").$IF_REPL_MODE2.nodes"
	fi
    # Beallitjuk a TSM szervereken a SyncSend es SyncReceive modot az ujraszinkronizalashoz
    elif [[ $SET_SYNC_ROLE ]]; then
        echo -e $blue$(date "+%Y.%m.%d %H:%M") $white-=[ $red$NODE$white ]=-$normal
        echo $(date "+%Y.%m.%d %H:%M")" -=[ $NODE ]=-" >> $LOG_FILE
        REPL_MODE=`$DSMADMC1 "select REPL_MODE from nodes where node_name=upper('$NODE')"`
        # Ha nem olyan modban van, mint amit a program parameterben kapott, megyunk a kovetkezo node-ra
        if [[ $REPL_MODE != $IF_REPL_MODE ]]; then
            log $red "A $NODE kihagyasra kerul, mert nem $IF_REPL_MODE modban van (vagy egyeb problema van a node-dal)."
            continue;
        fi
        log $white "Beallitjuk a 'SyncReceive' replikacios parametert a $TSMSRV2 szerveren..."
        $DSMADMC2 update node $NODE replstate=enabled replmode=syncreceive | tee -a $LOG_FILE
        RC=${PIPESTATUS[0]}
        if [[ $RC -ne 0 ]]; then log $red "A $TSMSRV2 szerveren nem sikerult beallitani az uj replikacios szabalyt, ezert a node kihagyasra kerul."; continue; fi
        log $white "Beallitjuk a 'SyncReceive' replikacios parametert a $TSMSRV1 szerveren..."
        $DSMADMC1 update node $NODE replstate=enabled replmode=syncsend | tee -a $LOG_FILE
        RC=${PIPESTATUS[0]}
        if [[ $RC -ne 0 ]]; then log $red "A $TSMSRV1 szerveren nem sikerult beallitani az uj replikacios szabalyt, ezert a node kihagyasra kerul."; continue; fi
    fi
done 
log $white "Futas vege."