나는 해야 할 일이 있다.
실행 중인 서비스를 찾으려면 다음 포트를 검색해야 합니다.
포트 53과 55를
사용할 수 없으므로 경고를 보내야 합니다.
다음 코드에서 포트의 논리와 구문을 수정하세요.
ntstat=`netstat -tulpn | grep :53 | grep LISTEN | awk {'print $4'}`
port="*:53"
#Just to echo for testing
echo $ntstat
echo $port
if [[ "$ntstat" == "$port" ]];
then
echo " X Service at port number $port"
else
echo " Port is not listing "
fi
산출:
127.0.1.1:53
*:53
Port is not listing
문자열(127.0.1.1:53 ~ *:53)을 일치시키려고 합니다.
답변1
53
포트(또는 )에 실행 중인 서비스가 있는지 확인하려면 55
다음과 같은 최적화된 솔루션을 권장합니다.
port=":53"
if netstat -tulpn | grep --line-buffered -q "$port .*LISTEN"; then
echo " X Service at port number $port"
else
echo " Port is not listing "
fi
답변2
text-processing
포트와 일치하도록 현재 출력에 대해 작업을 수행 할 수도 있습니다 . 그냥 추가하세요sed -e 's/.*:/:/g'
#!/bin/bash
ntstat=`netstat -tulpn | grep ":53 " | grep LISTEN | awk {'print $4'} | sed -e 's/.*:/:/g'`
port=":53 "
#Just to echo for testing
echo $ntstat
echo $port
if [[ "$ntstat" == "$port" ]]
then
echo " X Service at port number $port"
else
echo " Port is not listing "
fi
다른 포트에 다음이 포함되지 않도록 포트 번호 뒤에 공백을 추가했습니다.53
이것이 연산자이기 때문에 스크립트 맨 위에 bash
셔뱅을 넣어야 하므로 스크립트를 로 실행할 때 인터프리터를 로 처리하고 , 스크립트를 다음과 같이 실행하면 인터프리터를 으로 처리하게 됩니다.#!/bin/bash
./portlisten.sh
/bin/bash
$ bash portlisten.sh
답변3
netstat
더 이상 사용되지 않는 명령이므로 사용하지 말고 대신 사용하십시오 ss
.
귀하의 경우 다음과 같은 것을 사용할 수 있습니다.
ss -H -o state listening '( sport = :53 or sport = :55 )'