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/02_local/ |
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/02_local SYSCONFIG_DIR=/etc/sysconfig/network-scripts # get_text variables [[ -f $submenu_dir/functions.txt ]] && \ . $submenu_dir/functions.txt export CURRENT_HOSTNAME=$(hostname) configure_hostname_local() { new_h="${1}" if [[ -z $new_h ]]; then return 1 fi test_hostname $new_h || return $? get_os_type # CentOS Stream 9 if [[ $OS_VERSION -eq 9 ]]; then hostnamectl set-hostname $new_h # CentOS 7 elif [[ $OS_VERSION -eq 7 ]]; then hostnamectl set-hostname $new_h else sysconfig_network=/etc/sysconfig/network etc_hostname=/etc/hostname sed -i".bak" '/HOSTNAME=/d' $sysconfig_network echo "HOSTNAME=$new_h" >> $sysconfig_network print_color_text "$(get_text "$CH003" "$sysconfig_network")" echo $new_h > $etc_hostname print_color_text "$(get_text "$CH003" "$etc_hostname")" hostname $new_h fi print_color_text "$(get_text "$CH004" "$CURRENT_HOSTNAME" "$new_h")" return 0 } configure_hostname_pool() { new_h="$1" cur_h="$2" # get ansible id for the server cur_id=$(get_server_id "$cur_h") cur_id_rtn=$? if [[ $cur_id_rtn -eq 1 ]]; then print_message "$CH100" "$(get_text "$CH005" "$cur_h")" "" any_key return 1 elif [[ $cur_id_rtn -eq 2 ]]; then print_message "$CH100" "$(get_text "$CH006" "$cur_h")" "" any_key return 1 fi # test new hostname, should not exist in the server pool. if_hostname_exists_in_the_pool "$new_h" if [[ $? -gt 0 ]]; then print_message "$CH100" "$(get_text "$CH007" "$new_h")" "" any_key return 1 fi # bx_host_script cmd="$bx_host_script -a change_hostname --host $cur_id --hostname $new_h" if [[ $DEBUG -gt 0 ]]; then echo "cmd=$cmd" fi exec_pool_task "$cmd" "change hostname" } check_default_route() { HOST_ROUTE_EXIST=0 HOST_ROUTE_INTERFACE= route_info=$(ip route list | grep default -w | grep -w $INT) if [[ -n "$route_info" ]]; then HOST_ROUTE_EXIST=1 HOST_ROUTE_INTERFACE=$(echo "$route_info" | egrep -o 'dev\s+\S+' | awk '{print $2}') fi } get_network_info() { export HWADDR=$(ip addr show $INT | \ egrep -o "link/ether\s+\S+" | awk '{print $2}') export IP=$(ip addr show $INT | \ egrep -o "inet\s+\S+" | \ awk '{print $2}' | awk -F'/' '{print $1}') if [[ $DEBUG -gt 0 ]]; then echo "HWADDR: $HWADDR" echo " IP: $IP" fi } restart_network_daemon() { [[ -z $OS_VERSION ]] && get_os_type # CentOS Stream 9 if [[ $OS_VERSION -eq 9 ]]; then NETD=NetworkManager systemctl restart ${NETD} >/dev/null 2>&1 rtn=$? fi # CentOS 7 if [[ $OS_VERSION -eq 7 ]]; then NETD=network NM_CONFIG=/etc/NetworkManager/conf.d/01-bitrix.conf NETWORK_CONFIG=$SYSCONFIG_DIR/ifcfg-$INT if [[ $(systemctl is-enabled NetworkManager.service | \ grep -wc enabled) -gt 0 ]]; then echo "[main]" > $NM_CONFIG echo "plugins=keyfile,ifcfg-rh" >> $NM_CONFIG echo "dns=none" >> $NM_CONFIG echo "NM_CONTROLLED=yes" >> $NETWORK_CONFIG NETD=NetworkManager fi /etc/init.d/network restart >/dev/null 2>&1 systemctl restart ${NETD} >/dev/null 2>&1 rtn=$? fi print_color_text "$(get_text "$CH012" "$NETD" "$rtn")" return $rtn } configure_network_in_pool() { # run ansible task get_client_settings get_network_info if [[ $DEBUG -gt 0 ]]; then echo "INPOOL: $IN_POOL" echo "IP: $IP" echo "CIP: $CURRENT_IP" fi if [[ ( $IN_POOL -gt 0 ) && ( -n $IP ) && ( $CURRENT_IP != "$IP" ) ]]; then # get ansible id for the server cur_id=$(get_server_id "$CURRENT_HOSTNAME") cur_id_rtn=$? if [[ $cur_id_rtn -eq 1 ]]; then print_message "$CH100" "$(get_text "$CH005" "$CURRENT_HOSTNAME")" "" any_key return 1 elif [[ $cur_id_rtn -eq 2 ]]; then print_message "$CH100" "$(get_text "$CH006" "$cur_h")" "" any_key return 1 fi # bx_host_script cmd="$bx_host_script -a change_ip --hostname $cur_id --ip $IP" if [[ $DEBUG -gt 0 ]]; then echo "cmd=$cmd" fi exec_pool_task "$cmd" "change ip" fi } configure_network_by_dhcp() { [[ -z $OS_VERSION ]] && get_os_type # CentOS Stream 9 if [[ $OS_VERSION -eq 9 ]]; then INT="${1}" get_network_info export CURRENT_IP=$IP DEFAULT_NOTICE='(y|N)' DEFAULT_ANSWER='n' if [[ -z $CURRENT_IP ]]; then DEFAULT_NOTICE='(Y|n)' DEFAULT_ANSWER='y' fi print_message "$CH101 $DEFAULT_NOTICE: " "" "" ans_saved "$DEFAULT_ANSWER" if [[ $(echo "$ans_saved" | grep -iwc "n" ) -gt 0 ]]; then return 1 fi # get connection name for device CONNECTION=$(nmcli -t -f GENERAL.CONNECTION device show $INT | cut -c 20-) # modify connection and reconnect nmcli connection modify "${CONNECTION}" ipv4.method auto >/dev/null 2>&1 # reload settings and restart connection nmcli connection reload >/dev/null 2>&1 nmcli connection down "${CONNECTION}" >/dev/null 2>&1 nmcli connection up "${CONNECTION}" >/dev/null 2>&1 nohup $PROGPATH/restart_network_daemon.sh $IP $INT &>/dev/null & get_network_info if [[ ( -n $IP ) ]]; then print_message "$CH100" "$(get_text "$CH014" "$INT")" "" any_key else print_message "$CH100" "$CH015" "" any_key fi fi # CentOS 7 if [[ $OS_VERSION -eq 7 ]]; then INT="${1}" NETWORK_CONFIG=$SYSCONFIG_DIR/ifcfg-$INT RESOLVE_CONFIG=/etc/resolv.conf get_network_info export CURRENT_IP=$IP DEFAULT_NOTICE='(y|N)' DEFAULT_ANSWER='n' if [[ -z $CURRENT_IP ]]; then DEFAULT_NOTICE='(Y|n)' DEFAULT_ANSWER='y' fi print_message "$CH101 $DEFAULT_NOTICE: " "" "" ans_saved "$DEFAULT_ANSWER" if [[ $(echo "$ans_saved" | grep -iwc "n" ) -gt 0 ]]; then return 1 fi echo "# $INT" > $NETWORK_CONFIG echo "HWADDR=$HWADDR" >> $NETWORK_CONFIG echo "DEVICE=$INT" >> $NETWORK_CONFIG echo "BOOTPROTO=dhcp" >> $NETWORK_CONFIG echo "ONBOOT=yes" >> $NETWORK_CONFIG echo "TYPE=Ethernet" >> $NETWORK_CONFIG print_color_text "$(get_text "$CH013" "$NETWORK_CONFIG")" nohup $PROGPATH/restart_network_daemon.sh $IP $INT &>/dev/null & get_network_info if [[ ( -n $IP ) ]]; then print_message "$CH100" "$(get_text "$CH014" "$INT")" "" any_key else print_message "$CH100" "$CH015" "" any_key fi fi } configure_network_by_hand() { [[ -z $OS_VERSION ]] && get_os_type # CentOS Stream 9 if [[ $OS_VERSION -eq 9 ]]; then INT="${1}" get_network_info export CURRENT_IP=$IP DEFAULT_NOTICE='(y|N)' DEFAULT_ANSWER='n' if [[ -z $CURRENT_IP ]]; then DEFAULT_NOTICE='(Y|n)' DEFAULT_ANSWER='y' fi print_message "$CH016" "" "" address #print_message "$CH017" "" "" broadcast print_message "$CH018" "" "" netmask # nmcli has no params like broadcast # nmcli netmask param #netmask="24" IF_ROUTE_CONFIGURE=1 [[ ( $HOST_ROUTE_EXIST -gt 0 ) && ( "$HOST_ROUTE_INTERFACE" != "$INT" ) ]] && IF_ROUTE_CONFIGURE=0 if [[ $IF_ROUTE_CONFIGURE -eq 1 ]]; then print_message "$CH019" "" "" gateway fi print_message "$CH020" "" "" ans_dns "y" if [[ $(echo "$ans_dns" | grep -wci "y") -gt 0 ]]; then print_message "$CH021" "" "" dns fi echo "$MENU_SPACER" print_color_text "$(get_text "$CH022" $INT)" echo "$MENU_SPACER" printf "%-20s: %s\n" "IP Address" "$address" #printf "%-20s: %s\n" "Broadcast" "$broadcast" printf "%-20s: %s\n" "Network Mask" "$netmask" printf "%-20s: %s\n" "Default Gateway" "$gateway" printf "%-20s: %s\n" "DNS Server" "$dns" print_color_text "$CH0092" red print_message "$CH101 $DEFAULT_NOTICE: " "" "" ans_saved "$DEFAULT_ANSWER" if [[ $(echo "$ans_saved" | grep -iwc "n" ) -gt 0 ]]; then return 1 fi if [[ $DEBUG -gt 0 ]]; then echo "nmcli: display devices" nmcli device echo "" fi # get connection name for device CONNECTION=$(nmcli -t -f GENERAL.CONNECTION device show $INT | cut -c 20-) # set ipv4 address nmcli connection modify "${CONNECTION}" ipv4.addresses $address/$netmask >/dev/null 2>&1 # set gateway nmcli connection modify "${CONNECTION}" ipv4.gateway $gateway >/dev/null 2>&1 # set dns - for multiple dns, specify with space separated "10.0.0.10 10.0.0.11 10.0.0.12" nmcli connection modify "${CONNECTION}" ipv4.dns $dns >/dev/null 2>&1 # set dns search base (your domain name - for multiple one, specify with space separated "rr.bx zz.bb") # nmcli connection modify $INT ipv4.dns-search example.com # set manual for static setting nmcli connection modify "${CONNECTION}" ipv4.method manual >/dev/null 2>&1 # reload settings and restart connection nmcli connection reload >/dev/null 2>&1 nmcli connection down "${CONNECTION}" >/dev/null 2>&1 nmcli connection up "${CONNECTION}" >/dev/null 2>&1 if [[ $DEBUG -gt 0 ]]; then echo "nmcli: show dev status" nmcli device status echo "" echo "nmcli: show $INT settings" nmcli device show $INT echo "" echo "nmcli: show connections" nmcli connection show echo "" echo "ip: show settings" ip a echo "" fi nohup $PROGPATH/restart_network_daemon.sh $IP $INT &>/dev/null & if [[ ( -n $IP ) ]]; then print_message "$CH100" "$(get_text "$CH014" "$INT")" "" any_key else print_message "$CH100" "$CH015" "" any_key fi fi # CentOS 7 if [[ $OS_VERSION -eq 7 ]]; then INT="${1}" NETWORK_CONFIG=$SYSCONFIG_DIR/ifcfg-$INT RESOLVE_CONFIG=/etc/resolv.conf get_network_info export CURRENT_IP=$IP DEFAULT_NOTICE='(y|N)' DEFAULT_ANSWER='n' if [[ -z $CURRENT_IP ]]; then DEFAULT_NOTICE='(Y|n)' DEFAULT_ANSWER='y' fi print_message "$CH016" "" "" address print_message "$CH017" "" "" broadcast print_message "$CH018" "" "" netmask IF_ROUTE_CONFIGURE=1 [[ ( $HOST_ROUTE_EXIST -gt 0 ) && ( "$HOST_ROUTE_INTERFACE" != "$INT" ) ]] && IF_ROUTE_CONFIGURE=0 if [[ $IF_ROUTE_CONFIGURE -eq 1 ]]; then print_message "$CH019" "" "" gateway fi print_message "$CH020" "" "" ans_dns "y" if [[ $(echo "$ans_dns" | grep -wci "y") -gt 0 ]]; then print_message "$CH021" "" "" dns fi echo "$MENU_SPACER" print_color_text "$(get_text "$CH022" $INT)" echo "$MENU_SPACER" printf "%-20s: %s\n" "IP Address" "$address" printf "%-20s: %s\n" "Broadcast" "$broadcast" printf "%-20s: %s\n" "Default Gateway" "$gateway" printf "%-20s: %s\n" "Network Mask" "$netmask" printf "%-20s: %s\n" "DNS Server" "$dns" print_color_text "$CH0092" red print_message "$CH101 $DEFAULT_NOTICE: " "" "" ans_saved "$DEFAULT_ANSWER" if [[ $(echo "$ans_saved" | grep -iwc "n" ) -gt 0 ]]; then return 1 fi echo "# $INT" > $NETWORK_CONFIG echo "HWADDR=$HWADDR" >> $NETWORK_CONFIG echo "DEVICE=$INT" >> $NETWORK_CONFIG echo "BOOTPROTO=static" >> $NETWORK_CONFIG echo "ONBOOT=yes" >> $NETWORK_CONFIG echo "TYPE=Ethernet" >> $NETWORK_CONFIG echo "IPADDR=$address" >> $NETWORK_CONFIG echo "NETMASK=$netmask" >> $NETWORK_CONFIG echo "BROADCAST=$broadcast" >> $NETWORK_CONFIG if [[ -n $gateway ]]; then echo "GATEWAY=$gateway" >> $NETWORK_CONFIG fi print_color_text "$(get_text "$CH013" "$NETWORK_CONFIG")" if [[ -n $dns ]]; then sed -i".bak" '/nameserver/d' $RESOLVE_CONFIG id=1 for name in $dns; do echo "nameserver $name" >> $RESOLVE_CONFIG echo "DNS$id=$name" >> $NETWORK_CONFIG id=$(($id + 1)) done print_color_text "$(get_text "$CH013" "$RESOLVE_CONFIG")" fi nohup $PROGPATH/restart_network_daemon.sh $IP $INT &>/dev/null & if [[ ( -n $IP ) ]]; then print_message "$CH100" "$(get_text "$CH014" "$INT")" "" any_key else print_message "$CH100" "$CH015" "" any_key fi fi } configure_network() { local conf_type="${1:-manual}" local conf_int="$2" if [[ ( $conf_type != "manual" ) && ( $conf_type != "dhcp" ) ]]; then print_message "$CH100" "$(get_text "$CH023" "$conf_type")" "" any_key return 1 fi if [[ -z "$conf_int" ]]; then print_message "$CH100" "$CH011" "" any_key return 1 fi [[ -z $HOST_NETWORK_INFO ]] && get_local_network if [[ $(echo "$HOST_NETWORK_INFO" | grep -c "#$conf_int#") -eq 0 ]]; then print_message "$CH100" "$(get_text "$CH024" "$conf_int")" "" any_key return 1 fi [[ $conf_type == "manual" ]] && configure_network_by_hand $conf_int [[ $conf_type == "dhcp" ]] && configure_network_by_dhcp $conf_int }