Does anybody know what is wrong here. I am running centOS
the anticrash gives me this.
#!/bin/sh
while true
do
rm banme.tmp
:> banme.txt
/usr/sbin/tcpdump -p -c 100 -n -i eth0 "dst host 66.197.12 6.19 and udp port 7777" >banme.tmp
grep "length 0" banme.tmp | cut -f 3 -d " " | cut -f 1-4 -d "." >> banme.txt
if [ `grep -c . banme.txt` -gt 0 ]
then
ip=`head -1 banme.txt`
if [ `grep -c ${ip} /etc/sysconfig/iptables` -eq 0 ]
then
dat=`date`
echo "${dat} adding ${ip} to iptables" >> banme.log
/sbin/iptables -A INPUT -s ${ip} -j DROP
/sbin/iptables-save > /etc/sysconfig/iptables
else
echo "${ip} is already in iptables"
fi //LINE 20<<
fi
sleep 0
done
[root@inerdtech control]# sh ./anticrash.sh
: command not founde 2:
./anticrash.sh: line 20: syntax error near unexpected token `fi'
'/anticrash.sh: line 20: ` fi
[root@inerdtech control]# sh ./anticrash.sh
: command not founde 2:
./anticrash.sh: line 20: syntax error near unexpected token `fi'
'/anticrash.sh: line 20: ` fi #//LINE20
these are what i get if i use the #//line20 and also no i donot have ^M any other suggestions?
Are you sure that your script file doesn't contain ^M character(s) ?
> cat -v ctrlM.sh
#/usr/bin/bash
# Next line is ctrl-M
^M
date
> sh -vx ctrlM.sh
#/usr/bin/bash
# Next line is ctrl-M
+ $'\r'
ctrlM.sh: line 4: $'\r': command not found
date
+ date
Sun Jul 27 22:34:29 2008
>
Try to remove ^M:
> tr -d '\r' <ctrlM.sh >no_ctrlM.sh
> sh -vx no_ctrlM.sh
#/usr/bin/bash
# Next line is ctrl-M
date
+ date
Sun Jul 27 22:37:49 2008
>
Windows editors produce files that have two characters that define the end of a line - so-called carriage control.
UNIX just uses one character, so files from DOS or Windows show an extra character ascii 13 or control-M == ^M
UNIX shell does not like the ^M character. Delete all of the ^M characters and things will be fine. You can do it with Aigles tr example or with dos2ux (sometimes called dos2unix).
How to get rid of the ^M characters
# way number 1
dos2ux anticrash.sh > tmfile; mv tmfile anticrash.sh; chmod +x anticrash.sh
#way number 2
tr -d '\r' < aniticrash.sh > newanticrash.sh; chmod +x newanticrash.sh
# note '\r' is the return button or ^M