
나는 Linux와 bash의 세계에서 상대적으로 '초보자'이고 이것을 이해할 수 없습니다.
무엇보다도 'string'이 거기에 없으면 iptables를 수정하고 싶지만 작동하지 않는 것 같습니다. if 문, 종료 코드, 구문 또는 sudo 권한 등으로 인한 것인지 확실하지 않습니다.
cron을 통해 스크립트가 자동으로 실행되면 찾고 있는 문자열이 포함되어 if
있어도 해당 절을 수행합니다. iptables
이는 다음으로 확인됩니다.
- 예약된 실행 전후에 터미널에서 iptables 인쇄
echo "this" >>/log/file.log
if 절에 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입니다.