ich weis es wurde darube viel geschrieben
aber es tut mir leid das ich nochmal ein theme offne
ich bin seit lange dabei das problem zu lösen aber bekomme ich es nicht hin
mein problem es tut nix keine update
kein log
hab ipc 11.5
skript : DDNSupdater2.sh
Code: Alles auswählen
#!/bin/bash
#
# DynamicDNSupdater - supports: DynDNS.org, NO-IP.com, DYNServ.ca and IPActive.de
#
# Es koennen auch verschiedene Dienste genutzt werden um mehrere DNS-Hosts zu nutzen...
#
# Sonderzeichen im Password werden nun auch supported (danke IDDQD)
#
# credits: Didge2002, SnowHead, r00t, rj.2001, IDDQD
#
### CONFIG - START
# Zugangsdaten...
# es koennen mehrere accounts geupdated werden... (rest auskommentieren)
USERNAME["2"]="xxxx" # DDNS Benutzername1
PASSWORD["2"]="xxxx" # DDNS Passwort1
DDNSHOST["2"]="xxx" # DDNS Hostname1
USERNAME["2"]="xxxx" # DDNS Benutzername1
PASSWORD["2"]="lxxxx" # DDNS Passwort1
DDNSHOST["2"]="xxxxx" # DDNS Hostname1
USERNAME["2"]="xxxxx" # DDNS Benutzername1
PASSWORD["2"]="xxxxx" # DDNS Passwort1
DDNSHOST["2"]="xxxxx" # DDNS Hostname1
USERNAME["2"]="xxxxx" # DDNS Benutzername1
PASSWORD["2"]="xxxx" # DDNS Passwort1
DDNSHOST["2"]="xxxx" # DDNS Hostname1
USERNAME["2"]="xxxxx" # DDNS Benutzername1
PASSWORD["2"]="xxxx" # DDNS Passwort1
DDNSHOST["2"]="xxxx" # DDNS Hostname1
USERNAME["2"]="xxxxx" # DDNS Benutzername1
PASSWORD["2"]="xxxx" # DDNS Passwort1
DDNSHOST["2"]="xxxx" # DDNS Hostname1
USERNAME["2"]="xxxxx" # DDNS Benutzername1
PASSWORD["2"]="xxxx" # DDNS Passwort1
DDNSHOST["2"]="txxx" # DDNS Hostname1
# Provider URL's - pro DDNSHOST muss wie oben ein dazu passendes URL["<zahl>"] angelegt werden!
# (beliebig erweiterbar)
#
# $USERNAME , $PASSWORD , $DDNSHOST werden innerhalb der URL mit %USER% , %PASS% , %HOST% angegeben!
#
#URL["1"]="http://%USER%:%PASS%@members.dyndns.org/nic/update?hostname=%HOST%"
URL["2"]="http://dynupdate.no-ip.com/dns?username=%USER%&password=%PASS%&hostname=%HOST%"
#URL["3"]="http://%USER%:%PASS%@members.dyndns.org/nic/update?hostname=%HOST%"
#
# BEISPIEL URL's
#
# DynDNS.org: "http://%USER%:%PASS%@members.dyndns.org/nic/update?hostname=%HOST%"
# No-IP.com: "http://dynupdate.no-ip.com/dns?username=%USER%&password=%PASS%&hostname=%HOST%"
# DYNServ.ca: "http://dynserv.ca/dyn/dynengine.cgi?name=%USER%&pass=%PASS%&func=set&domain=%HOST%"
# IPActive.de: "http://logon.ipactive.de/cgi-bin/logon_off.pl?V=2.1&B=%USER%&P=%PASS%&IP=%HOST%&F=1"
# two-dns.de: "http://%USER%:%PASS%@update.two-dns.de/update?hostname=%HOST%"
EVERY="300" # Zeit in Sekunden zwischen den Abfragen
LOG="1" # Erstelle Logfile vom update? [0=nein; 1=ja]
# Verschicke EMail bei Problemen? [no=nein; yes=ja]
# ( benoetigt: apt-get install sendEmail )
EMAIL="no"
EMAILFROM="`hostname`@fqdn.net"
EMAILTO='admin@fqdn.net'
EMAILSERVER='mail.fqdn.net'
EMAILUSER=''
EMAILPASS=''
### CONFIG - END
# -------------------------------------------------------------- #
# >>> >> > DO NOT MESS WiTH ANYTHiNG BELOW THiS LiNE! < << <<< #
# -------------------------------------------------------------- #
# required system cmd's:
# basename cat cut date echo expr killall ping rm sed sleep wget
Osrcn="DDNSupdater2.sh"
srcn=$(basename $0)
srcv="2.24"
srccfg="config.$Osrcn"
LOGFILE="/var/log/log.$Osrcn"
CHKFILE="/tmp/.$Osrcn"
PiDFILE="/tmp/.pid.$Osrcn"
OnlinePing="google.de"
ProfileSwitchSleep=2
IPCcfgdir="/var/emu/conf"
IPCfunctions="/var/emu/script/functions.sh"
IPCddnssrc="/var/emu/script/$Osrcn"
IPCddnslinkname="ddns"
C="\033[";Ca="${C}0;33m";Cb="${C}1;33m";Cn="${C}0m";ROT="${C}1;31m";GRUEN="${C}1;32m";BOLD="${C}1;37m"
Bo="${C}1m";Bc="${C}21m"; Ro="${C}3m";Rc="${C}23m"; Uo="${C}4m";Uc="${C}24m"
Blo="${C}5m";Blc="${C}25m"; Io="${C}7m";Ic="${C}27m"
if [ -f "$IPCfunctions" -a ! -f "/sbin/$IPCddnslinkname" ]; then
echo ".. $srcn v$srcv .."
echo "Erstbenutzung dieses Scripts? IPC erkannt... kopiere Script $srcn..."
cp -f $0 $IPCddnssrc ; chmod 755 $IPCddnssrc >/dev/null 2>&1
echo -e "\nErstelle Symlink fuer ${Ro}$IPCddnslinkname${Rc} auf $IPCddnssrc"
ln -sf $IPCddnssrc /sbin/$IPCddnslinkname
echo -e "Nun muss noch der ${Ro}CONFIG${Rc} Abschnitt in dem Script $srcn angepasst werden!"
sleep 3
nano -R $IPCddnssrc
#[ ! -f "$IPCcfgdir/$srccfg" ] && proc_Create_Script_CFG "$IPCcfgdir/$srccfg"
echo -e "Fertig! Das Script kann kuenftig ueber den Befehl ${Ro}$IPCddnslinkname${Rc} ausgefuehrt werden"
$IPCddnssrc help
exit
fi
# load script config?
[ -d "$IPCcfgdir" -a -f "$IPCcfgdir/$srccfg" ] && source $IPCcfgdir/$srccfg
[ ! -d "$IPCcfgdir" -a -f "$srccfg" ] && source $srccfg
# Verschicke EMail..
function send_EMail() {
MESSAGE=$1
SUBJECT="$Osrcn"
if [ $EMAIL = "yes" -o $EMAIL = "1" ]; then
echo "Verschicke EMail.."
sendEmail -f $EMAILFROM -t $EMAILTO -u "$SUBJECT" -m "$MESSAGE" -s $EMAILSERVER -xu "$EMAILUSER" -xp "$EMAILPASS"
fi
}
# Simple URL encoding
function proc_url_encode() {
out=${1//%/%25}; out=${out//\{/%7B}; out=${out//\}/%7D}; out=${out//|/%7C};
out=${out//\\/%5C}; out=${out//^/%5E}; out=${out//~/%7E}; out=${out//[/%5B};
out=${out//]/%5D}; out=${out//\`/%60}; out=${out//#/%23}; out=${out//>/%3E};
out=${out//\$/%24}; out=${out//&/%26}; out=${out//+/%2B}; out=${out//,/%2C};
out=${out//\//%2F}; out=${out//:/%3A}; out=${out//;/%3B}; out=${out//=/%3B};
out=${out//\?/%3F}; out=${out// /%20}; out=${out//</%3C};
out=${out//\!/%21}; out=${out//\"/%22}; out=${out//\@/%40}; out=${out//\'/%27};
out=${out//\(/%28}; out=${out//\)/%29}; out=${out//\*/%2A}; out=${out//\-/%2D};
out=${out//\_/%5F}; out=${out//\./%2E}; out=${out//\€/%80};
echo $out
}
function LOG_msg() {
message=$1
if [ $LOG = "1" ]; then
_DT=$(date +"%d.%m.%Y %H:%M:%S")
echo "$_DT: $message" >> $LOGFILE
fi
}
function abuse_check() {
index=$1
answer=$(cat ${CHKFILE}_answer_$index)
MSG=""
if [ "$answer" = "abuse" ]; then
MSG="WARNING!! You abused the DNS update function! You must Unlock your hostname: ${DDNSHOST[$index]} !"
fi
[ "$answer" = "nohost" ] && MSG="ERROR: Unknown host ${DDNSHOST[$index]} !"
[ "$answer" = "badauth" ] && MSG="ERROR: Bad auth! Check USERNAME and PASSWORD setting for ${DDNSHOST[$index]} !"
if [ ! -z "$MSG" ]; then
echo "$MSG"
LOG_msg "$MSG"
send_EMail "$MSG"
fi
}
function get_IPs() {
CURRENTIP=""
# get current internet ip
CURRENTIP=$(wget -q -O - http://myip.dnsomatic.com)
if [ -z "$CURRENTIP" -o "$CURRENTIP" = " *" -o "$CURRENTIP" = "*1.0 *" ]; then
CURRENTIP=$(wget -q -O - http://my.ip.fi)
fi
if [ -z "$CURRENTIP" -o "$CURRENTIP" = " *" -o "$CURRENTIP" = "*1.0 *" ]; then
CURRENTIP=$(wget -q -O - http://www.myip.ch | grep "IP Address" | cut -d ' ' -f4 | sed -e 's/\$//g' -e 's/\\r//g')
fi
if [ -z "$CURRENTIP" -o "$CURRENTIP" = " *" -o "$CURRENTIP" = "*1.0 *" ]; then
CURRENTIP=$(wget -q -O - http://www.ip-lookup.de | grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>')
fi
if [ -z "$CURRENTIP" -o "$CURRENTIP" = " *" -o "$CURRENTIP" = "*1.0 *" ]; then
CURRENTIP=$(wget -q -O - http://checkip.dyndns.org | sed s/[^0-9.]//g)
fi
if [ -z "$CURRENTIP" -o "$CURRENTIP" = " *" -o "$CURRENTIP" = "*1.0 *" ]; then
CURRENTIP=$(wget -q -O - http://checkip.two-dns.de | grep "IP Address" | cut -d ' ' -f4 | sed -e 's/\$//g' -e 's/\\r//g')
fi
if [ -z "$CURRENTIP" ]; then
eRROR["0"]="Cant get current internet ip"
else
# get current dyndns ip
for index in ${!DDNSHOST[*]}; do
#DYNIP[$index]=$(nslookup ${DDNSHOST[$index]} | tail -n2 | grep A | sed s/[^0-9.]//g)
DYNIP[$index]=$(ping -c1 "${DDNSHOST[$index]}" | sed -n 1p | sed -e 's/(//g' -e 's/)//g' | cut -d " " -f3 | sed -e 's/\://g')
[ -z "${DYNIP[$index]}" ] && eRROR[$index]="Cant get IP of DDNSHOST: ${DDNSHOST[$index]}"
done
fi
}
function do_update() {
index=$1
# Replace %USER% , %PASS% , %HOST%
URL=${URL[$index]}
URL=${URL//%USER%/`proc_url_encode "${USERNAME[$index]}"`}
URL=${URL//%PASS%/`proc_url_encode "${PASSWORD[$index]}"`}
URL=${URL//%HOST%/${DDNSHOST[$index]}}
wget -q -O ${CHKFILE}_answer_$index $URL
answer=$(cat ${CHKFILE}_answer_$index)
echo "DDNSHOST: ${DDNSHOST[$index]} - DYNIP: ${DYNIP[$index]} - CURRENTIP: $CURRENTIP - answer: $answer"
LOG_msg "DDNSHOST: ${DDNSHOST[$index]} - DYNIP: ${DYNIP[$index]} - CURRENTIP: $CURRENTIP - answer: $answer"
}
# fuer jedes "profil" (DDNSHOST) die jeweilige "action" abarbeiten (function-names)
function check_profils() {
ACTION=$1
eRROR=""
get_IPs
for index in ${!DDNSHOST[*]}; do
if [ -z "$eRROR" ]; then
# for each $ACTION...
if [ ! -z "$ACTION" ]; then
for actionfunction in $ACTION; do
$actionfunction "$index"
done
fi
fi
sleep $ProfileSwitchSleep
done
[ ! -z "$eRROR" ] && for Eidx in ${!eRROR[*]}; do echo "${eRROR[$Eidx]}"; done
}
function update_interval() {
PiDs="$$ $!"
echo $PiDs > $PiDFILE
echo "Running Script in Background with PID(s): $PiDs"
while true; do
[ ! -f "$PiDFILE" ] && echo "$srcn: Interval stopped" && break
# check if online...
ONLINE=0
[ "$(ping -c1 "$OnlinePing" | grep -c "seq")" -eq 1 ] && ONLINE=1
# if online, check each DDNSHOST (array)...
if [ "$ONLINE" ]; then
get_IPs
for index in ${!DDNSHOST[*]}; do
[ "${DYNIP[$index]}" != "$CURRENTIP" ] && do_update "$index" && abuse_check "$index"
done
fi
if [ ! -z "$eRROR" ]; then
Error=""
for Eidx in ${!eRROR[*]}; do
Error="$Error ${eRROR[$Eidx]}\n"
done
echo -e "$Error" && LOG_msg "$Error" && send_EMail "$Error"
eRROR=""
fi
sleep $EVERY
done
}
function show_status() {
get_IPs
for index in ${!DDNSHOST[*]}; do
if [ "${DYNIP[$index]}" != "$CURRENTIP" ]; then
echo "The IP of ${DDNSHOST[$index]} (${DYNIP[$index]}) does NOT match your current Internet-IP: $CURRENTIP"
echo "You should update immediately! (with: $0 now)"
else
echo "Your host ${DDNSHOST[$index]} with IP ${DYNIP[$index]} is still up to date: $CURRENTIP"
if [ -f "${CHKFILE}_answer_$index" ]; then
answer=$(cat ${CHKFILE}_answer_$index)
echo "Last Answer was: $answer"
fi
fi
echo " "
done
[ -f "$PiDFILE" ] && echo "Script seems to run in background with PID(s): $(cat $PiDFILE)"
}
function kill_script() {
counter="5"
[ -f "$PiDFILE" ] && PID=$(cat $PiDFILE)
#[ -z "$PID" ] && PID="$$ $!"
if [ ! -z "$PID" ]; then
echo "PID(s): $PID"
echo -n "Stopping Script"
if ( kill -TERM $PID 2> /dev/null ); then
c=1
while [ "$c" -le 300 ]; do
if ( kill -0 $PID 2> /dev/null ); then
echo -n "."
sleep 1
else
break
fi
c=$((++c))
done
fi
if ( kill -0 $PID 2> /dev/null ); then
echo -e "\rScript is not shutting down cleanly - killing"
kill -KILL $PID
else
echo " done"
fi
#for P in $PID; do
# kill -9 $P >/dev/null 2>&1
# echo "Killed PID $P"
#done
killall -9 $IPCddnslinkname $srcn >/dev/null 2>&1
else
echo "Nothing to $1!"
fi
rm -f $PiDFILE
}
function echo_PIDs() {
[ -f "$PiDFILE" ] && PID=$(cat $PiDFILE)
[ -z "$PID" ] && PID="$$ $!"
if [ -z "$PID" ]; then
echo "Seems script isnt running in background"
else
echo "Scripts currently ProcessIDs: $PID"
fi
}
if [ -f "$IPCfunctions" -a -f "$IPCddnssrc" ]; then
linkname=$IPCddnslinkname
else
linkname=$0
fi
case "$1" in
"")
update_interval &
;;
[aA][uU][tT][oO]|[sS][tT][aA][rR][tT])
bash $0 & >/dev/null 2>&1
;;
[kK][iI][lL][lL]|[sS][tT][oO][pP])
kill_script $1
;;
[nN][oO][wW])
check_profils "do_update abuse_check"
;;
[pP][iI][dD]*)
echo_PIDs
;;
[sS][tT][aA][tT][uU][sS])
show_status
;;
[hH][eE][lL][pP]|[hH][iI][lL][fF][eE]|?)
echo "Usage: $linkname [now|auto|kill|status|pid|help]"
echo "$linkname now -> Force to update DDNSHOST immediately (erzwinge sofortiges updaten von DDNSHOST)"
echo "$linkname auto -> Checks/updates DDNSHOST every $EVERY seconds (Ueberprueft/updated DDNSHOST alle $EVERY Sekunden)"
echo "$linkname kill -> Kills running script (Script wird beendet)"
echo "$linkname status -> Show current DDNSHOSTs status (Zeigt den aktuellen Status, ob ein update noetig ist)"
echo "$linkname pid -> Show Process IDs (Zeigt die verwendeten ProzessIDs dieses Scripts)"
echo "$linkname help -> This help... (Zeigt diese Hilfe...)"
;;
*)
echo "Usage: $linkname [now|auto|kill|status|pid|help]"
;;
esac
exit 0
bash -x /var/emu/script/DDNSupdater2.sh now:
Code: Alles auswählen
+ $'\r'
: Kommando nicht gefunden.r2.sh: Zeile 12:
+ USERNAME["2"]=xxxxxxxxx
+ PASSWORD["2"]=xxxxxxxxxxxxxxxxx
+ DDNSHOST["2"]=xxxxxxxxxxxxxxxx
+ $'\r'
: Kommando nicht gefunden.r2.sh: Zeile 18:
+ USERNAME["2"]=xxxxxxxxxxxxxxxxxxx
+ PASSWORD["2"]=xxxxxxxxxxxxxxxxxxxx
+ DDNSHOST["2"]=xxxxxxxxxxxxxx
+ $'\r'
: Kommando nicht gefunden.r2.sh: Zeile 22:
+ USERNAME["2"]=xxxxxxxxxxxxxxxxx
+ PASSWORD["2"]=xxxxxxxxxxxxxxx
+ DDNSHOST["2"]=xxxxxxxxxxxxxxx
+ $'\r'
: Kommando nicht gefunden.r2.sh: Zeile 26:
+ USERNAME["2"]=xxxxxxxxxxxxxxxxxxx
+ PASSWORD["2"]=xxxxxxxxxxxxxxx
+ DDNSHOST["2"]=xxxxxxxxxxxxxxxx
+ $'\r'
: Kommando nicht gefunden.r2.sh: Zeile 30:
+ USERNAME["2"]=xxxxxxxxxxxxxxxx
+ PASSWORD["2"]=xxxxxxxxxxxxxxxxxxx
+ DDNSHOST["2"]=xxxxxxxxxxxxxxxxx
+ $'\r'
: Kommando nicht gefunden.r2.sh: Zeile 34:
+ USERNAME["2"]=xxxxxxxxxxxxxxxxxxxx
+ PASSWORD["2"]=xxxxxxxxxxxxxxxx
+ DDNSHOST["2"]=xxxxxxxxxxxxxx
+ $'\r'
: Kommando nicht gefunden.r2.sh: Zeile 38:
+ USERNAME["2"]=xxxxxxxxxxxxxxxxxx
+ PASSWORD["2"]=xxxxxxxxxxxxxxxxx
+ DDNSHOST["2"]=xxxxxxxxxxxxxxx
+ $'\r'
: Kommando nicht gefunden.r2.sh: Zeile 42:
+ USERNAME["2"]=xxxxxxxxxxxxxxxxxx
+ PASSWORD["2"]=xxxxxxxxxxxxxxxxx
+ DDNSHOST["2"]=xxxxxxxxxxxxxxx
+ $'\r'
: Kommando nicht gefunden.r2.sh: Zeile 46:
+ $'\r'
: Kommando nicht gefunden.r2.sh: Zeile 47:
' URL["2"]='http://dynupdate.no-ip.com/dns?username=%USER%&password=%PASS%&hostname=%HOST%
+ $'\r'
: Kommando nicht gefunden.r2.sh: Zeile 64:
+ EVERY=300
+ LOG=1
+ $'\r'
: Kommando nicht gefunden.r2.sh: Zeile 67:
+ EMAIL=$'no\r'
++ hostname
+ EMAILFROM=$'debian@fqdn.net\r'
+ EMAILTO=$'admin@fqdn.net\r'
+ EMAILSERVER=$'mail.fqdn.net\r'
+ EMAILUSER=$'\r'
+ EMAILPASS=$'\r'
+ $'\r'
: Kommando nicht gefunden.r2.sh: Zeile 76:
+ $'\r'
: Kommando nicht gefunden.r2.sh: Zeile 77:
+ $'\r'
: Kommando nicht gefunden.r2.sh: Zeile 79:
+ $'\r'
: Kommando nicht gefunden.r2.sh: Zeile 83:
+ $'\r'
: Kommando nicht gefunden.r2.sh: Zeile 84:
+ $'\r'
: Kommando nicht gefunden.r2.sh: Zeile 87:
+ $'\r'
: Kommando nicht gefunden.r2.sh: Zeile 88:
+ Osrcn=$'DDNSupdater2.sh\r'
++ basename /var/emu/script/DDNSupdater2.sh
+ srcn=$'DDNSupdater2.sh\r'
+ srcv=$'2.24\r'
+ srccfg=$'config.DDNSupdater2.sh\r\r'
+ LOGFILE=$'/var/log/log.DDNSupdater2.sh\r\r'
+ CHKFILE=$'/tmp/.DDNSupdater2.sh\r\r'
+ PiDFILE=$'/tmp/.pid.DDNSupdater2.sh\r\r'
+ OnlinePing=$'google.de\r'
+ ProfileSwitchSleep=$'2\r'
+ IPCcfgdir=$'/var/emu/conf\r'
+ IPCfunctions=$'/var/emu/script/functions.sh\r'
+ IPCddnssrc=$'/var/emu/script/DDNSupdater2.sh\r\r'
+ IPCddnslinkname=$'ddns\r'
+ $'\r'
: Kommando nicht gefunden.r2.sh: Zeile 102:
+ C='\033['
+ Ca='\033[0;33m'
+ Cb='\033[1;33m'
+ Cn='\033[0m'
+ ROT='\033[1;31m'
+ GRUEN='\033[1;32m'
' BOLD='\033[1;37m
+ Bo='\033[1m'
+ Bc='\033[21m'
+ Ro='\033[3m'
+ Rc='\033[23m'
+ Uo='\033[4m'
' Uc='\033[24m
+ Blo='\033[5m'
+ Blc='\033[25m'
+ Io='\033[7m'
' Ic='\033[27m
+ $'\r'
: Kommando nicht gefunden.r2.sh: Zeile 106:
+ $'\r'
: Kommando nicht gefunden.r2.sh: Zeile 107:
'var/emu/script/DDNSupdater2.sh: Zeile 128: Syntaxfehler beim unerwarteten Wort `{
'var/emu/script/DDNSupdater2.sh: Zeile 128: `function send_EMail() {
Code: Alles auswählen
#DynDNS Static Update -> benoetigt [apt-get install ddclient]
* * * * * root /usr/sbin/ddclient -force > /var/log/ipc/dyndns_update.log #Static DynDNS Update (Woechentlich um 06:06, Montag)
#DDNSupdater.sh
@reboot root /var/emu/script/DDNSupdater.sh auto #DDNSupdater.sh bei System boot/reboot starten
* * * * * root /var/emu/script/DDNSupdater.sh now #DDNSupdater.sh Static-IP Update erzwingen (Woechentlich um 06:00,Montag)
#DDNSupdater2.sh
@reboot root /var/emu/script/DDNSupdater2.sh auto #DDNSupdater2.sh bei System boot/reboot starten
* * * * * root /var/emu/script/DDNSupdater2.sh now #DDNSupdater2.sh Static-IP Update erzwingen (Woechentlich um 06:00, Montag)
was mache ich falsch
ich bitte um hilfe
ich bedanke mich für jede hilfe
mfg