cron - 종료 코드 및 grep에 if 문이 포함된 bash 스크립트

cron - 종료 코드 및 grep에 if 문이 포함된 bash 스크립트

나는 Linux와 bash의 세계에서 상대적으로 '초보자'이고 이것을 이해할 수 없습니다.

무엇보다도 'string'이 거기에 없으면 iptables를 수정하고 싶지만 작동하지 않는 것 같습니다. if 문, 종료 코드, 구문 또는 sudo 권한 등으로 인한 것인지 확실하지 않습니다.

cron을 통해 스크립트가 자동으로 실행되면 찾고 있는 문자열이 포함되어 if있어도 해당 절을 수행합니다. iptables이는 다음으로 확인됩니다.

  1. 예약된 실행 전후에 터미널에서 iptables 인쇄
  2. echo "this" >>/log/file.logif 절에 an을 추가하면 됩니다 .

1번을 선택하세요:

#!/bin/bash
iptables -L -n -v | grep 8.8.8.8
if [ $? != 0 ]; then
    command-to-perform
fi

2번:

#!/bin/bash
iptablesvar=$(iptables -L -v -n)
if [[ $iptablesvar != *"8.8.8.8"* ]]; then
    command-to-perform
fi

나는 다음 줄을 사용하여 (sudo) crontab에 의해 트리거된 두 가지를 모두 시도했습니다.

*/1 * * * * /bin/bash /home/username/path/to/script-file.sh

나를 당황하게 만드는 것은 위의 두 옵션이 다음과 같이 터미널에 직접 입력될 때 작동하는 것 같다는 것입니다.

sudo iptables -L -n -v | grep 8.8.8.8
if [ $? != 0 ]; then echo "not found" ;fi
if [ $? == 0 ]; then echo "found" ;fi

var=$(sudo iptables -L -n -v)
if [[ $var != *"8.8.8.8"* ]]; then echo "n" ;fi
if [[ $var == *"8.8.8.8"* ]]; then echo "y" ;fi

무엇을 제공합니까?

해당되는 경우 내 시스템은 최신 Linux Mint 19.3 Tricia입니다.

답변1

그러면 내가 직접 대답하겠습니다. 모든 크레딧은 다음과 같습니다.@스틸드라이버'에스논평:
iptables크론에 없습니다 PATH. 전체 경로를 포함하도록 명령이 변경되었습니다 /sbin/iptables.

관련 정보