У меня есть следующий скрипт, который вставляет «#» перед IP-адресом в конфигурации nginx, чтобы действовать как комментарий.
#!/bin/bash
hosts=( 84.19.155.71 84.19.155.72 )
for i in "${hosts[@]}"
do
CHECK=`grep $i nginx.conf`
if [[ ! "$CHECK" =~ ^#.*$ ]]
then
nc -zw 5 $i 5044
if [ "$?" != "0" ]
then
sed -i "/$i/s/^/#/" nginx.conf
else
sed -i 's/#*$i/$i/' nginx.conf
fi
fi
done
Он работает для вставки «#» в начале строки, но теперь я хочу удалить его, если код выхода команды nc
равен 0. Я попробовал его с помощью своего оператора else, как показано выше, но нет помогло. Вот как выглядит nginx.conf
:
user root;
worker_processes auto;
pid /run/nginx.pid;
load_module /usr/lib/nginx/modules/ngx_stream_module.so;
worker_rlimit_nofile 1000000;
events {
worker_connections 20000;
# multi_accept on;
}
stream {
log_format basic '$time_iso8601 $remote_addr '
'$protocol $status $bytes_sent $bytes_received '
'$session_time $upstream_addr '
'"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';
# Enable access_log statements for debugging
access_log /var/log/nginx/stream.log basic;
upstream syslog_udp {
#hash $remote_addr;
server 84.19.155.71:514 max_fails=2 fail_timeout=5s;
# server 84.19.155.72:514 max_fails=2 fail_timeout=5s;
}
server {
listen 514 udp;
proxy_pass syslog_udp;
proxy_responses 0;
#proxy_timeout 2s;
proxy_bind $remote_addr transparent;
#proxy_next_upstream_timeout 2s;
}
}
Может кто-нибудь помочь удалить символ "#" с IP-адреса?