if [ ! $# -eq 2 ];then echo "Usage:`basename $0` IP PORT" && exit 1 else echo $1 | grep -oq "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}$" if [ ! $? -eq 0 ]; then echo "Illegal IP $1" exit 2 else echo "Correct IP format $1" fi
echo $2 | grep -oq "[0-9]\{1,5\}$" if [ ! $? -eq 0 ]; then echo "Illegal PORT $2" exit 3 else echo "Correct PORT format $2" fi fi IP=$1 PORT=$2
# set all rules default if you want read -p "Do you want to restor the firewall first?" -t 10 an [ $an = "y" -o $an = "yes" ] && echo "Reatoring..." && iptables-restore < /etc/rc.d/firewall.rule
# set portforward rules read -p "${IP}:${PORT} Is it right ? [y/n]" -t 10 ans ans=${ans:-"n"} case "$ans" in y|Y|yes|YES) iptables -t nat -I PREROUTING -d 219.140.A.B -p tcp \ --dport $PORT -j DNAT --to $IP iptables -t nat -I POSTROUTING -d $IP -p tcp \ --dport $PORT -j SNAT --to 192.168.0.1 echo "Have done , please check your iptables" ;; n|N|no|NO) echo "You canceled . Exit now" exit ;; *) echo "Only can enter y or n!" exit esac