Как я могу проверить, является ли текущий веб-сервер NGINX или Apache, используя скрипт bash? - PullRequest
0 голосов
/ 11 марта 2019

У меня есть проект Laravel, развернутый на Ubuntu VM. У меня есть скрипт, над которым я сейчас работаю, чтобы узнать, развернута ли текущая виртуальная машина с помощью nginx или Apache программным способом.

Я знаю, что могу просто проверить с помощью этих команд ps и grep, я выясню это

root@theawsbiz:~# ps -aux | grep apache                                                                                                                 
root      3446  0.0  1.8 544540 37144 ?        Ss   17:02   0:00 /usr/sbin/apache2 -k start                                                             
www-data  3449  0.1  1.9 550388 39796 ?        S    17:02   0:00 /usr/sbin/apache2 -k start                                                             
www-data  3454  0.0  1.0 547336 21532 ?        S    17:02   0:00 /usr/sbin/apache2 -k start                                                             
www-data  3457  0.0  1.8 548196 37864 ?        S    17:02   0:00 /usr/sbin/apache2 -k start                                                             
www-data  3458  0.0  1.0 547320 21428 ?        S    17:02   0:00 /usr/sbin/apache2 -k start                                                             
www-data  3462  0.0  1.7 550008 36264 ?        S    17:02   0:00 /usr/sbin/apache2 -k start                                                             
www-data  3465  0.0  1.8 550408 38160 ?        S    17:02   0:00 /usr/sbin/apache2 -k start                                                             
www-data  3466  0.0  1.9 550400 40512 ?        S    17:02   0:00 /usr/sbin/apache2 -k start                                                             
www-data  3467  0.0  1.0 547320 21416 ?        S    17:02   0:00 /usr/sbin/apache2 -k start                                                             
www-data  3468  0.0  1.7 548228 36236 ?        S    17:02   0:00 /usr/sbin/apache2 -k start                                                             
www-data  3520  0.0  0.9 546872 19964 ?        S    17:06   0:00 /usr/sbin/apache2 -k start                                                             
root      3526  0.0  0.0  14856  1036 pts/1    S+   17:06   0:00 grep --color=auto apache                                                               
root@theawsbiz:~# ps -aux | grep nginx                                                                                                                  
root      3529  0.0  0.0  14856  1092 pts/1    S+   17:06   0:00 grep --color=auto nginx                                                                
root@theawsbiz:~# 

С этими результатами я знаю, что эта виртуальная машина использует Apache.

Но я понятия не имею, как это проверить с помощью Bash-скрипта. Как можно пойти и сделать это? Я открыт для любых предложений в данный момент.

enter image description here

Ответы [ 3 ]

1 голос
/ 11 марта 2019

Поскольку вы пытаетесь достичь этого с помощью grep и ps, вы можете сделать что-то вроде этого:

if [[ `ps -acx|grep apache|wc -l` > 0 ]]; then
    echo "VM Configured with Apache"
fi
if [[ `ps -acx|grep nginx|wc -l` > 0 ]]; then
    echo "VM Configured with Nginx"
fi
1 голос
/ 12 марта 2019

ss команда может сказать вам, какой процесс прослушивает порт.

Например, ss -tlnp | grep -E ":80\b" сообщает вам, какой процесс прослушивает tcp порт 80. Вы можете видеть, что это apache или nginx.

1 голос
/ 11 марта 2019
  1. Вы можете свернуться с localhost и получить заголовки
$ curl -v api.company.co.ke 2>&1 |grep -i server | awk -F: '{print $2}'

nginx/1.10.3

You can run the command in a subshell and get the output

 ❯ get_server_version=$(curl -v api.company.co.ke 2>&1 |grep -i server | awk -F: '{print $2}') 
 ❯ echo $get_server_version                                                                            
 nginx/1.10.3

Или просто запустите pgrep

 ❯ { pgrep nginx && server_version="nginx"; } || { pgrep apache  && server_version="apache"; } || server_version="unknown"

# On server running nginx
 ❯ echo $server_version
nginx


# On server with neither nginx nor apache
 ❯ echo $server_version
unknown

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...