Search code examples
bashshellsh

iptable Bad argument `ACCEPT'


I am trygin the following..

#!/bin/bash

NOIPHOST=example.noip.me
LOGFILE=iptables_update.log

Current_IP=$(host $NOIPHOST | cut -f4 -d' ')

if [ $LOGFILE = "" ] ; then
  /sbin/iptables -I INPUT -m tcp -p tcp -s $Current_IP -j ACCEPT
  echo $Current_IP > $LOGFILE
else

  Last_IP=$(cat $LOGFILE)

  if [ "$Current_IP" = "$Last_IP" ] ; then
    echo IP address has not changed
  else
    /sbin/iptables -D INPUT -m tcp -p tcp -s $Last_IP -j ACCEPT
    /sbin/iptables -I INPUT -m tcp -p tcp -s $Current_IP -j ACCEPT
    iptables-persistent save
    echo $Current_IP > $LOGFILE
    echo iptables have been updated
  fi
fi

I am getting this error..

Bad argument ACCEPT' Tryiptables -h' or 'iptables --help' for more information. iptables have been updated

I have also tried using these..

iptables -D INPUT -m tcp -p tcp -s $Last_IP -j ACCEPT
iptables -I INPUT -m tcp -p tcp -s $Current_IP -j ACCEPT

but still same error.

Anyway to fix this?


Solution

  • Are you sure you don't have any newlines in your $Last_IP variable? Can you try adding the following before your iptables -D... line?

    Last_IP=$(echo $Last_IP|tr -d '\n')