• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst]Cron /bin/sh:-c:line 0: syntax error near unexpected

Hi zusammen,

ich habe ein kleines Script das mir meinen Dynhost in meinen IP-Tables auf meinem Server freigibt, wenn ich das per Cron alle 5 min Ausführen lasse bekomme ich den fehler:
Code:
/bin/sh: -c: line 0: syntax error near unexpected token `newline'
/bin/sh: -c: line 0: `/usr/bin/nice -n 15 /root/firewall-dynhosts.sh > /dev/null  2>&'

(der Fehler kommt auch wenn ich anstelle von "/usr/bin/nice -n 15 /root/firewall-dynhosts.sh > /dev/null 2>&" nur "/root/firewall-dynhosts.sh" ausführen lasse)

Alle anderen per Cron ausgeführten Scripte funktionieren Problemlos und wenn ich das Script direkt ausführe funktioniert es auch ohne weiteres.

Gruß Harv

P.S.: ich hoffe ich bin hier in der richtigen Kategorie ;)
 
klar kein Problem dachte nur dadurch das es ja eigendlich läuft das es irrelevant ist:

Code:
#!/bin/bash
#HOST=$1
HOST="DYN.HOST.TLD"
HOSTFILE="/root/dynhosts/host-$HOST"
CHAIN="dynamichosts"  
IPTABLES="/usr/sbin/iptables"

# lookup host name from dns tables
IP=`/usr/bin/dig +short $HOST | /usr/bin/tail -n 1`
    if [ "${#IP}" = "0" ]; then
    echo "Couldn't lookup hostname for $HOST, failed."
    exit
fi

OLDIP=""
if [ -a $HOSTFILE ]; then
    OLDIP=`cat $HOSTFILE`
    # echo "CAT returned: $?"
fi

# save off new ip.
echo $IP>$HOSTFILE

echo "Updating $HOST in iptables."

if [ "${#OLDIP}" != "0" ]; then
    echo "Removing old rule ($OLDIP)"
    `$IPTABLES -D $CHAIN -s $OLDIP/32 -j ACCEPT`
fi

echo "Inserting new rule ($IP)"
`$IPTABLES -A $CHAIN -s $IP/32 -j ACCEPT`
 
per touch die Datei angelegt und dann mit mcedit bearbeitet (direkt auf dem System)

habe testweise auch schonmal den Cron Dienst und die Bash neuinstalliert.
 
crontab -e :
Code:
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/bin/nice -n 15 /root/firewall-dynhosts.sh > /dev/null  2>&
 
Versuch mal das:
Code:
*/5 * * * * /usr/bin/nice -n 15 /root/firewall-dynhosts.sh > /dev/null  2>&

EDIT:
Evt. auch mal mit "cat -A" das Script bzw. den Cron-Job ansehen.
 
Das ganze sieht dann so aus (kannte die -A funktion noch nicht deshalb hab ich auch keine Ahnung wonach ich suchen soll)

Code:
#!/bin/bash$
$
 $
#HOST=$1$
HOST="DYN.HOST.TLD"$
HOSTFILE="/root/dynhosts/host-$HOST"$
CHAIN="dynamichosts"  $
IPTABLES="/usr/sbin/iptables"$
 $
^I     $
# lookup host name from dns tables$
IP=`/usr/bin/dig +short $HOST | /usr/bin/tail -n 1`$
    if [ "${#IP}" = "0" ]; then$
    echo "Couldn't lookup hostname for $HOST, failed."$
    exit$
fi$
^I^I     $
OLDIP=""$
if [ -a $HOSTFILE ]; then$
    OLDIP=`cat $HOSTFILE`$
    # echo "CAT returned: $?"$
fi$
^I^I^I     $
# save off new ip.$
echo $IP>$HOSTFILE$
^I^I^I     $
echo "Updating $HOST in iptables."$
$
if [ "${#OLDIP}" != "0" ]; then$
    echo "Removing old rule ($OLDIP)"$
    `$IPTABLES -D $CHAIN -s $OLDIP/32 -j ACCEPT`$
fi$
$
echo "Inserting new rule ($IP)"$
`$IPTABLES -A $CHAIN -s $IP/32 -j ACCEPT`^I^I^I^I


in der /var/spool/cron/tabs/root sieht das ganze dann so aus (habe ein paar zeilen dazwischen gelöscht):
Code:
# DO NOT EDIT THIS FILE - edit the master and reinstall.$
# (/tmp/crontab.XXXXNqL9EF installed on Mon Aug  3 12:53:42 2009)$
# (Cron version V5.0 -- $Id: crontab.c,v 1.12 2004/01/23 18:56:42 vixie Exp $)$
2,7,12,17,22,27,32,37,42,47,52,57 * * * * /etc/webmin/status/monitor.pl$
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/bin/nice -n 15 /root/firewall-dynhosts.sh > /dev/null  2>&$

Edit:
*/5 hat leider auch nichts gebracht.
Vieleicht noch relevant: Habe den Job per Webmin erstellt und wenn ich ihn dort direkt per Button "Jetzt ausführen" ausführe bekomme ich den selben Fehler
 
Reduziere dein Script mal auf ein minimum. Also am besten auf erstmal auf eine leere Datei. Wenn es dann funktioniert ist es offensichtlich ein Fehler im Script.
 
Das hatte ich schonmal probiert, habe es jetzt trotzdem nochmal gemacht und ich will gar nicht wissen warum aber es geht... Danke

Edit: (ne dumme andere Frage kann den Titel nicht ändern also nicht mit [gelöst] versehen?)
 
Oben