예기치 않은 태그 'iptables' 근처에 구문 오류가 있습니다.

예기치 않은 태그 'iptables' 근처에 구문 오류가 있습니다.

내 스크립트에서 이 오류가 발생합니다 iptable.

./iptables-firewall.sh line 4: syntax error near unexpected token 'iptables'

./iptables-firewall.sh line 4: iptables -A OUTPUT -p udp -s $SERVER_IP --sport 1024:65535 -d $ip --dport 53 -m state -- state NEW, ESTABLISHED -j ACCEPT

이 코드에서:

SERVER_IP="ppp"
DNS_SERVER="8.8.8.8"
for ip in $DNS_SERVER do
iptables -A OUTPUT -p udp -s $SERVER_IP --sport 1024:65535 -d $ip --dport 53 -m state -- state NEW, ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -s $ip --sport 53 -d $SERVER_IP --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
done

답변1

doin for루프는 자체 라인에 있어야 합니다.

쉘은 그것이 키워드인지 do라는 매개변수인지 추측할 수 없습니다.

쓰다

SERVER_IP="ppp"
DNS_SERVER="8.8.8.8"
for ip in $DNS_SERVER 
do
iptables -A OUTPUT -p udp -s $SERVER_IP --sport 1024:65535 -d $ip --dport 53 -m state -- state NEW, ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -s $ip --sport 53 -d $SERVER_IP --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
done

또 다른 방법은 세미콜론으로 명령문을 끝내는 것입니다.

for id in $DNS_SERVER ; do
...

답변2

$DNS_SERVER앞뒤에 세미콜론을 추가하세요 do.

관련 정보