ip.txt
IP 규칙( )이 포함된 파일이 있습니다.
/sbin/iptables -A INPUT -p tcp -s 140.237.4.252 -j DROP
/sbin/iptables -A INPUT -p tcp -s 143.227.5.22 -j DROP
/sbin/iptables -A INPUT -p udp -s 140.237.4.252 -j DROP
/sbin/iptables -A INPUT -p tcp -s 143.227.5.22 -j DROP
removeip.sh
파일에서 특정 IP에 속하는 udp 및 tcp 행을 제거하기 위해 다음 bash 스크립트()를 사용하고 있습니다 ip.txt
.
function removeip(){
ip="$1"
udprule="/sbin/iptables -A INPUT -p udp -s "$ip" -j DROP"
tcprule="/sbin/iptables -A INPUT -p tcp -s "$ip" -j DROP"
sed --in-place /"$udprule"/d /root/ip.txt
sed --in-place /"$udprule"/d /root/ip.txt
}
removeip $1
터미널에서 다음 명령을 사용할 때
./removeip.sh 140.237.4.252
그것은 던진다
sed: -e expression #1, char 59: unterminated `s' command
이 문제의 원인과 해결 방법은 무엇입니까?
답변1
이 /
역할은 의 운영자입니다 sed
. 기본적으로 다음과 같이 끝납니다.
sed '//sbin/iptables -A INPUT -p tcp -s "{ip}" -j DROP/d' /root/ip.txt
이는 '//sb'를 sed 명령으로 실행하려고 시도 중이며 b
구분 기호는 어디에 있으며 다른 'b'를 찾을 수 없음을 의미합니다.
특수 문자를 인용해야 합니다.
udprule="\/sbin\/iptables -A INPUT -p udp -s "$ip" -j DROP"
같은 이유로 $ip에 무엇이 들어 있는지 주의를 기울여야 합니다.