есть вот такой скрипт
#!/bin/bash
execute="netstat -tulpn |grep 22"
cmpl2=$($execute)
echo $cmpl2
и после выполнения имеем вот это. как будто не отработал | grep 22 и как будто все в одну строку записалось
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:29851 0.0.0.0:* LISTEN 1413/rmon tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 449/apache2 tcp 0 0 0.0.0.0:29852 0.0.0.0:* LISTEN 1413/rmon tcp 0 0 0.0.0.0:29853 0.0.0.0:* LISTEN 1413/rmon tcp 0 0 0.0.0.0:29854 0.0.0.0:* LISTEN 1413/rmon tcp 0 0 0.0.0.0:65534 0.0.0.0:* LISTEN 350/nrpe tcp 0 0 0.0.0.0:29855 0.0.0.0:* LISTEN 1413/rmon tcp 0 0 10.16.3.94:5667 0.0.0.0:* LISTEN 30542/nsca tcp 0 0 0.0.0.0:29803 0.0.0.0:* LISTEN 804/monsrv tcp 0 0 0.0.0.0:29807 0.0.0.0:* LISTEN 374/monsrv tcp 0 0 0.0.0.0:29809 0.0.0.0:* LISTEN 804/monsrv tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 439/sshd tcp 0 0 0.0.0.0:29813 0.0.0.0:* LISTEN 1414/mondn tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 439/sshd
пробовал execute=«netstat -tulpn |grep -v 22» и результат был один и тотже, то есть grep не отрабатывает.
подскажите как быть и что сделать?
в execute=«netstat -tulpn |grep 22» используются «» так как это в расширенной версии скрипта это массив, вида
cmd_action=(
"netstat -tulpn |grep 22"
"netstat -tulpn |grep 80"
"netstat -tulpn |grep 443"
"/usr/local/sbin/check_disk_usage.pl /"
"/usr/local/sbin/check_cpu_usage.pl all"
"/usr/local/sbin/check_mem_usage.pl free,all,swap"
)
и дальше по скрипту выбирается каждый элемент массива и исполняется с записью результата в переменную
но другие комманды успешно отрабатывают если в них нету символа |