Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /opt/webdir/bin/menu/10_push/ |
Upload File : |
#!/usr/bin/bash # BASE_DIR=/opt/webdir BIN_DIR=$BASE_DIR/bin . $BIN_DIR/bitrix_utils.sh || exit 1 bx_process_script=$BIN_DIR/bx-process bx_host_script=$BIN_DIR/wrapper_ansible_conf bx_web_script=$BIN_DIR/bx-sites submenu_dir=$BIN_DIR/menu/10_push push_menu=$submenu_dir ansible_web_group=/etc/ansible/group_vars/bitrix-web.yml mysql_menu_dir=$BIN_DIR/menu/03_mysql mysql_menu_fnc=$mysql_menu_dir/functions.sh . $mysql_menu_fnc || exit 1 # get_text variables [[ -f $push_menu/functions.txt ]] && . $push_menu/functions.txt # get status for web servers # return # PUSH_SERVERS - list of web servers # PUSH_SERVERS_CNT - number of push server get_push_servers_status() { PUSH_SERVERS= PUSH_SERVERS_CNT=0 NODE_PUSH_SERVER= #NGX_PUSH_SERVER= # get info from ansible configuration local info=$($bx_host_script) local erro=$(echo "$info" | grep '^error:' | sed -e "s/^error://") local mesg=$(echo "$info" | grep '^message:' | sed -e "s/^message://") if [[ -n $erro ]]; then print_message "Failed to get web servers status. Press ENTER for exit:" "$mesg" "" any_key exit fi IFS_BAK=$IFS IFS=$'\n' for line in $info; do hostname=$(echo "$line" | awk -F':' '{print $2}') ipaddr=$(echo "$line" | awk -F':' '{print $3}') groups=$(echo "$line" | awk -F':' '{print $4}') if [[ $(echo "$groups" | grep -wc "push") -gt 0 ]]; then NODE_PUSH_SERVER="$hostname" fi #if [[ $(echo "$groups" | grep -wc "mgmt") -gt 0 ]]; then # NGX_PUSH_SERVER="$hostname" #fi done # NginxStreamModule is enabled by default and we don't have sign for it #[[ -n $NODE_PUSH_SERVER ]] && NGX_PUSH_SERVER= for line in $info; do hostname=$(echo "$line" | awk -F':' '{print $2}') ipaddr=$(echo "$line" | awk -F':' '{print $3}') groups=$(echo "$line" | awk -F':' '{print $4}') if [[ ( -n $NODE_PUSH_SERVER ) && ( $hostname == "$NODE_PUSH_SERVER" ) ]]; then PUSH_VERSION=$($bx_host_script -a bx_info -H $hostname -o json | \ egrep -o '"push_server_major_version":"[0-9]+"' | awk -F'"' '{print $4}' ) PUSH_SERVERS=$PUSH_SERVERS" NodeJS-PushServer:$hostname:$ipaddr:$PUSH_VERSION" continue fi # if [[ ( -z $NODE_PUSH_SERVER ) && ( $hostname == "$NGX_PUSH_SERVER" ) ]];then # PUSH_SERVERS=$PUSH_SERVERS" #Nginx-PushStreamModule:$hostname:$ipaddr" # continue # fi PUSH_SERVERS=$PUSH_SERVERS" Not-Used:$hostname:$ipaddr" done IFS=$IFS_BAK IFS_BAK= if [[ -n $NODE_PUSH_SERVER ]]; then PUSH_SERVERS_CNT=1 fi } cache_push_servers_status() { PUSH_SERVERS= PUSH_SERVERS_CACHE=$CACHE_DIR/push_servers_status.cache # cache file PUSH_SERVERS_CACHE_LT=3600 # live time for cache file in seconds test_cache_file $PUSH_SERVERS_CACHE $PUSH_SERVERS_CACHE_LT if [[ $? -gt 0 ]]; then get_push_servers_status echo "$PUSH_SERVERS" > $PUSH_SERVERS_CACHE else PUSH_SERVERS=$(cat $PUSH_SERVERS_CACHE) PUSH_SERVERS_CNT=$(echo "$PUSH_SERVERS" | grep -c "^NodeJS-PushServer:") NODE_PUSH_SERVER=$(echo "$PUSH_SERVERS" | grep "^NodeJS-PushServer:" | awk -F':' '{print $2}') #NGX_PUSH_SERVER=$(echo "$PUSH_SERVERS" | grep "^Nginx-PushStreamModule:" | awk -F':' '{print $2}') if [[ -n "$NODE_PUSH_SERVER" ]]; then PUSH_VERSION=$(echo "$PUSH_SERVERS" | grep "^NodeJS-PushServer:" | awk -F':' '{print $4}') fi fi if [[ $DEBUG -gt 0 ]]; then echo "PUSH_SERVERS=$PUSH_SERVERS" echo "PUSH_SERVERS_CNT=$PUSH_SERVERS_CNT" echo "PUSH_VERSION=$PUSH_VERSION" fi } print_push_servers_status() { local exclude=$1 # exclude servers by hostname local push_only=${2:-0} # show only push servers cache_push_servers_status PUSH_SERVERS_FILTERED="$PUSH_SERVERS" PUSH_SERVERS_FILTERED_CNT=0 #[[ $push_only -gt 0 ]] && PUSH_SERVERS_FILTERED=$(echo "$PUSH_SERVERS" | grep "^\(Nginx-PushStreamModule\|NodeJS-PushServer\):") [[ $push_only -gt 0 ]] && PUSH_SERVERS_FILTERED=$(echo "$PUSH_SERVERS" | grep "^\(NodeJS-PushServer\|Not-Used\):") if [[ -n $exclude ]]; then PUSH_SERVERS_FILTERED=$(echo "$PUSH_SERVERS_FILTERED" | grep -v "^$" | egrep -v ":$exclude:") fi PUSH_SERVERS_FILTERED_CNT=$(echo "$PUSH_SERVERS_FILTERED" | grep -vc "^$" ) if [[ $PUSH_SERVERS_FILTERED_CNT -eq 0 ]]; then echo "No matching servers were found." [[ -n $exclude ]] && echo "Exclude: $exclude" [[ $push_only -gt 0 ]] && echo "Show only push-server." echo return 1 fi echo "Found $PUSH_SERVERS_FILTERED_CNT servers" [[ -n $exclude ]] && echo "Exclude: $exclude" echo $MENU_SPACER printf "%-17s | %20s| %s\n" "Hostname" "IP" "Type" echo $MENU_SPACER IFS_BAK=$IFS IFS=$'\n' for line in $PUSH_SERVERS_FILTERED; do echo "$line" | awk -F':' '{printf "%-17s | %20s| %s\n", $2, $3, $1}' done IFS=$IFS_BAK IFS_BAK= echo $MENU_SPACER echo }