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