[Frage] Autonomes Firmwareupdate möglich?

xanthos

Neuer User
Mitglied seit
8 Mai 2009
Beiträge
41
Punkte für Reaktionen
0
Punkte
0
Hallo miteinander,
ich habe einige eurer Skripte (die ich wirklich erstklassig finde) bereits über einen "Chron-Job" in meine FritzBox 7270 eingebunden und die verrichten ihre Arbeit wirklich super :cool:
Nun frage ich mich jedoch, ob es auch ein Skript gibt, welches einmal pro Woche (beispielsweise Fr/Sa Nacht) nach einer neuen Firmware für die Fritzbox sucht und diese dann auch gleich installiert? Den Zeitpunkt könnte ich ja erneut über den Chron-Job realisieren, aber zu dem Update habe ich kein passendes Skript gefunden - oder habe ich ggf. nur mit den falschen Suchbegriffen gesucht?

Vielen Dank :)
 
Hallo,
Wenn Du Freetz nutzt und eine neue FW von AVM installierst, musst Du da nicht ein neues Image backen? Dann würde das Update doch Dein Freetz zerstören, oder liege ich falsch?
 
Sorry für eventuelle Mißverständnisse, ich nutze die originale FRITZ Firmware von AVM. An Freetz hab ich mich bisher noch nicht rangetraut und mir reicht es im Moment vollkommen - ich würde die Box nur sehr gerne noch autonom updaten lassen (per Skript, sofern das irgendwie gehen sollte).

Nochmals vielen Dank!
 
Mal von der Sinnhaftigkeit abgesehen, könntest du dich in die Fritzbox einloggen, mit curl -d 'submit=start' auf 'http://fritz.box/system/update.lua?sid=xy' eine neue Firmware suchen und bei "Firmware gefunden" installieren lassen. cURL findest du zuhauf im Forum.
 
Das ist ja schonmal ein Anfang :)
Der Sinn für mich persönlich liegt eben darin, dass ich mich möglichst wenig um die Technik kümmern muss. Die FRITZbox würde sich selbstständig updaten und ich muss nicht mal mehr in regelmäßigen Intervallen selbst nachsehen, ob nun ein Update verfügbar ist oder nicht - die Box kümmert sich eben selbst drum!

So folgender Entwurf:
Code:
#Warten auf aktuelle Uhrzeit
while true; do
if [ $(date +%Y) -lt 2010 ]; then sleep 300; fi
TOSTART=04:00
# gewuenschte Startzeit in Sekunden
START_S=$(date +%s -d "$TOSTART")
# aktuelle Zeit in Sekunden
NOW_S=$(date +%s)
# Startzeit schon vorbei?
if test "$START_S" -le "$NOW_S"; then
# einen Tag dazu zaehlen
START_S=$(( START_S + 24*60*60))
fi
# Wie lange warten?
SEC_TO_SLEEP=$(( START_S - NOW_S ))
# Warten
sleep $SEC_TO_SLEEP
# Aktion ausfuehren
# Datei auf dem USB Stick suchen und nach /var/tmp kopieren
cp $(find /var/media/ftp/ -name curl.tar) /var/tmp
cd /
tar xvf /var/tmp/curl.tar
# hier kommen ein paar Ausgaben
# /var/install ausführen, das baut den Link auf /var/tmp/curl
sh /var/install 
# ab hier sollte /var/tmp/curl da sein. 
# Dann wollen wir uns mal einloggen ;-)
#!/bin/sh
Passwd="xxxxx"
# login aufbauen und hashen
CPSTR="$Challenge-$Passwd"
MD5=`echo -n $CPSTR | iconv -f ISO8859-1 -t UTF-16LE | md5sum -b | awk '{print substr($0,1,32)}'`
RESPONSE="$Challenge-$MD5"
POSTDATA="login:command/response=$RESPONSE&getpage=../html/de/menus/menu2.html"
# login senden und SID herausfischen
SID=`wget -O - --post-data="$POSTDATA" "http://fritz.box/cgi-bin/webcm" 2>/dev/null| grep "name=\"sid\"" | head -1 | awk '{match($0,/value="[^"]+"/); print substr($0,RSTART+7,RLENGTH-8)}'`
# auf neue Firmware prüfen
/var/tmp/curl "http://fritz.box/system/update.lua?sid=xy" -d "submit=start"

So, dies ist mein bisheriger (zusammengesetzter) Anfang. CURL habe ich auf einem an der Box angeschlossenen USB-Stick! Da ich selber leider kaum Ahnung vom Programmieren eines Skriptes habe, muss ich da auf euch hoffen. Wenn ich etwas fertig sehe, dann verstehe ich immerhin zumindest Teile davon ;)
So, wäre dieser Anfang soweit schonmal richtig? Ich würde die Updatesuche damit zwar jeden Tag um 4.00h in der Früh starten, aber das ist erstmal nebensächlich.
Könnte sich das Skript so überhaupt schon auf der FRITZbox einloggen, oder funktioniert das so (noch) nicht?
Wie kann das Skript nun entscheiden, ob eine neue Firmware gefunden wurde oder nicht? Mit welchem Befehl würde diese dann installiert? Kurz gefragt: Wie gehts nun weiter?

Nochmals vielen Dank!
 
cURL kann keine XHTML-Frames bedienen. Dann muss doch alles ins Skript:

Code:
#!/bin/sh

CURRENT_VERSION=`/etc/version`
ONLINE_VERSION=$(wget -O - ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/firmware/deutsch/info.txt | grep Version: | sed 's/Version: \+ //')

if [ "${CURRENT_VERSION}" != "${ONLINE_VERSION}" ]
then

	DOWNLOADNAME=$(curl --silent ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/firmware/deutsch/ | grep image | sed -e 's/.*[ \t]//')
	wget -P /var/media/ftp/uStor-XY ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/firmware/deutsch/$DOWNLOADNAME

	/bin/prepare_fwupgrade start
	tar xv -C / -f /var/media/ftp/uStor-XY/$DOWNLOADNAME
	/var/install
	reboot
fi

Automatischer Firmware-Check mit Benachrichtigung wird übrigens hier angewandt.
 
Hallo princenewton007,
vielen Dank für deine Hilfe, leider bekomme ich die Geschiche trotz zahlreichen Versuchen nicht ans Laufen :(
Ich probiere es die ganze Zeit via Telnet auf der Box auszuführen (zum Testen halt), aber es wird nichts geupdated (obwohl eine neue Version verfügbar ist).
Was mache ich ggf. falsch, habe ich etwas nicht beachtet, oder muss ich in deinem geposteten code noch etwas anpassen?

Vielen Dank nochmals!
 
Die roten Stellen sind natürlich anzupassen.

Code:
#!/bin/sh

CURRENT_VERSION=`/etc/version`
ONLINE_VERSION=$(wget -O - ftp://ftp.avm.de/fritz.box/[COLOR="red"]fritzbox.fon_wlan_7270_v2[/COLOR]/firmware/deutsch/info.txt | grep Version: | sed 's/Version: \+ //')

if [ "${CURRENT_VERSION}" != "${ONLINE_VERSION}" ]
then

	DOWNLOADNAME=$([COLOR="red"]curl[/COLOR] --silent ftp://ftp.avm.de/fritz.box/[COLOR="red"]fritzbox.fon_wlan_7270_v2[/COLOR]/firmware/deutsch/ | grep image | sed -e 's/.*[ \t]//')
	wget -P /var/media/ftp/[COLOR="red"]uStor-XY[/COLOR] ftp://ftp.avm.de/fritz.box/[COLOR="red"]fritzbox.fon_wlan_7270_v2[/COLOR]/firmware/deutsch/$DOWNLOADNAME

	/bin/prepare_fwupgrade start
	tar xv -C / -f /var/media/ftp/[COLOR="red"]uStor-XY[/COLOR]/$DOWNLOADNAME
	/var/install
	reboot
fi

  • fritzbox.fon_wlan_7270_v2: für dein Fritzbox-Modell sollte der Pfad zum FTP-Server stimmen ;)
  • falls du cURL nicht dem System bekannt gemacht hast, solltest du den Pfad zum cURL-Programm mit angeben. Laut deines Skriptes rufst du cURL via /var/tmp/curl auf.
  • uStor-XY: der Speicherort muss auch deinem System entsprechend angepasst sein (z.B. /var/media/ftp/uStor11/)
 
Leider klappt es noch immer nicht :oops:
Ich starte putty.exe zwecks Telnet Zugriff.
Auf der FritzBox melde ich mich dann im Telnet-Fenster mit meinem Passwort an und gebe dann folgendes ein:

Code:
# Datei auf dem Stick suchen und nach /var/tmp kopieren
cp $(find /var/media/ftp/ -name curl.tar) /var/tmp
cd /
tar xvf /var/tmp/curl.tar
# hier kommen ein paar Ausgaben
# /var/install ausführen, das baut den Link auf /var/tmp/curl
sh /var/install 
# ab hier sollte /var/tmp/curl da sein. 
# Dann wolln wir mal updaten ;-)

#!/bin/sh

CURRENT_VERSION=`/etc/version`
ONLINE_VERSION=$(wget -O - ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/firmware/deutsch/info.txt | grep Version: | sed 's/Version: \+ //')

if [ "${CURRENT_VERSION}" != "${ONLINE_VERSION}" ]
then

	DOWNLOADNAME=$(/var/tmp/curl --silent ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/firmware/deutsch/ | grep image | sed -e 's/.*[ \t]//')
	wget -P /var/media/ftp/OTi2168-FlashDisk-01 ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/firmware/deutsch/$DOWNLOADNAME

	/bin/prepare_fwupgrade start
	tar xv -C / -f /var/media/ftp/OTi2168-FlashDisk-01/$DOWNLOADNAME
	/var/install
	reboot
fi

Die Pfade habe ich wie oben von dir als extra Hinweis angegeben entsprechend meiner Gegebenheiten angepasst.

Nach der Eingabe habe ich folgenden Inhalt im Fenster von Putty:

# # Datei auf dem Stick suchen und nach /var/tmp kopieren
# cp $(find /var/media/ftp/ -name curl.tar) /var/tmp
cd /
tar xvf /var/tmp/curl.tar
# hier kommen ein paar Ausgaben
# /var/install ausführen, das baut den Link auf /var/tmp/curl
sh /var/install
# ab hier sollte /var/tmp/curl da sein.
# Dann wolln wir mal updaten ;-)

#!/bin/sh

CURRENT_VERSION=`/etc/version`
ONLINE_VERSION=$(wget -O - ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/firmware/deutsch/info.txt | grep Version: | sed 's/Version: \+ //')

if [ "${CURRENT_VERSION}" != "${ONLINE_VERSION}" ]
then

DOWNLOADNAME=$(/var/tmp/curl --silent ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/firmware/deutsch/ | grep image | sed -e 's/.*[ \t]//')
wget -P /var/media/ftp/OTi2168-FlashDisk-01 ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/firmware/deutsch/$DOWNLOADNAME

/bin/prepare_fwupgrade start
tar xv -C / -f /var/media/ftp/OTi2168-FlashDisk-01/$DOWNLOADNAME
/var/install
reboot
fi# cd /
# tar xvf /var/tmp/curl.tar
./var/
./var/install~
./var/tmp/
./var/tmp/curl_24
./var/tmp/curl_26
./var/install
# # hier kommen ein paar Ausgaben
# # /var/install ausführen, das baut den Link auf /var/tmp/curl
# sh /var/install
install: have Kernel 2.6
# # ab hier sollte /var/tmp/curl da sein.
# # Dann wolln wir mal updaten ;-)
#
# #!/bin/sh
#
# CURRENT_VERSION=`/etc/version`
# ONLINE_VERSION=$(wget -O - ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v
2/firmware/deutsch/info.txt | grep Version: | sed 's/Version: \+ //')
Connecting to ftp.avm.de (212.42.244.90:21)
- 100% |*******************************| 12711 --:--:-- ETA
#
# if [ "${CURRENT_VERSION}" != "${ONLINE_VERSION}" ]
> then
>
> DOWNLOADNAME=$(/var/tmp/curl --silent ftp://ftp.avm.de/fritz.box/fritzbox.fon_
wlan_7270_v2/firmware/deutsch/ | grep image | sed -e 's/.*[ \t]//')
> wget -P /var/media/ftp/OTi2168-FlashDisk-01 ftp://ftp.avm.de/fritz.box/fritzbo
x.fon_wlan_7270_v2/firmware/deutsch/$DOWNLOADNAME
>
> /bin/prepare_fwupgrade start
> tar xv -C / -f /var/media/ftp/OTi2168-FlashDisk-01/$DOWNLOADNAME
> /var/install
> reboot
> fi

Die neue Firmwaredatei wird auch heruntergeladen und befindet sich entsprechend auf meinem USB-Stick, allerdings kann ich (bzw. das Skript) diese Datei dann scheinbar nicht öffnen oder ausführen -> die Box startet neu und die Firmware ist noch die alte. Leider schaffe ich es nicht, den kompletten Log aus dem putty-Fenster hier zu posten, denn das Fenster verschwindet leider sofort, wenn die Box den Reboot ausführt. Irgendwo gibt es also scheinbar noch ein Problem :(
Ich hoffe du hast noch Geduld mit mir und hilfst mir?

Danke nochmals!
 
/bin/prepare_fwupgrade stoppt unnötige Dienste auf der Box (auch das USB-Subsystem) um mehr RAM nutzen zu können. Dann sollte man auch noch auf das Image zugreifen können ;)
Ändere mal die Reihenfolge der beiden Zeilen

tar ...
/bin/prepare_fwupgrade start
 
So, ich habe es gerade noch einmal getauscht wie du es vorgeschlagen hast - es wird noch immer kein Update installiert :(

Ich habe nun mal versucht alles mitzuloggen, was ich in putty eingebe, bzw. was es als Rückmeldung ausspuckt...

Fritz!Box web password:

BusyBox v1.16.1 (2011-03-15 11:17:45 CET) built-in shell (ash)
Enter 'help' for a list of built-in commands.

ermittle die aktuelle TTY
tty is "/dev/pts/0"
Console Ausgaben auf dieses Terminal umgelenkt
# # Datei auf dem Stick suchen und nach /var/tmp kopieren
# cp $(find /var/media/ftp/ -name curl.tar) /var/tmp
cd /
tar xvf /var/tmp/curl.tar
# hier kommen ein paar Ausgaben
# /var/install ausführen, das baut den Link auf /var/tmp/curl
sh /var/install
# ab hier sollte /var/tmp/curl da sein.
# Dann wolln wir mal updaten ;-)

#!/bin/sh

CURRENT_VERSION=`/etc/version`
ONLINE_VERSION=$(wget -O -

ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/firmware/deutsch/info.txt | grep Version:

| sed 's/Version: \+ //')

if [ "${CURRENT_VERSION}" != "${ONLINE_VERSION}" ]
then

DOWNLOADNAME=$(/var/tmp/curl --silent

ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/firmware/deutsch/ | grep image | sed -e

's/.*[ \t]//')
wget -P /var/media/ftp/OTi2168-FlashDisk-01

ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/firmware/deutsch/$DOWNLOADNAME

tar xv -C / -f /var/media/ftp/OTi2168-FlashDisk-01/$DOWNLOADNAME
/bin/prepare_fwupgrade start
# cd /
# tar xvf /var/tmp/curl.tar
./var/
./var/install~
./var/tmp/
./var/tmp/curl_24
/var/install
reboot
fi./var/tmp/curl_26
./var/install
# # hier kommen ein paar Ausgaben
# # /var/install ausführen, das baut den Link auf /var/tmp/curl
# sh /var/install
install: have Kernel 2.6
# # ab hier sollte /var/tmp/curl da sein.
# # Dann wolln wir mal updaten ;-)
#
# #!/bin/sh
#
# CURRENT_VERSION=`/etc/version`
# ONLINE_VERSION=$(wget -O -
>
> ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/firmware/deutsch/info.txt
| grep Version:
>
> | sed 's/Version: \+ //')
-sh: syntax error: unexpected "|"
#
# if [ "${CURRENT_VERSION}" != "${ONLINE_VERSION}" ]
> then
>
> DOWNLOADNAME=$(/var/tmp/curl --silent
>
> ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/firmware/deutsch/ | grep
image | sed -e
>
> 's/.*[ \t]//')
> wget -P /var/media/ftp/OTi2168-FlashDisk-01
>
> ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/firmware/deutsch/$DOWNLOA
DNAME
>
> tar xv -C / -f /var/media/ftp/OTi2168-FlashDisk-01/$DOWNLOADNAME
> /bin/prepare_fwupgrade start
> /var/install
> reboot
> fi

An dieser Stelle bleibt die Aktion stehen und ich gebe einfach nochmal ein ENTER ein und es geht wie folgt weiter:

curl: no URL specified!
curl: try 'curl --help' for more information
-sh: ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/firmware/deutsch/: not found
sed: option requires an argument -- e
BusyBox v1.16.1 (2011-03-15 11:17:45 CET) multi-call binary.

Usage: sed [-efinr] SED_CMD [FILE]...

Options:
-e CMD Add CMD to sed commands to be executed
-f FILE Add FILE contents to sed commands to be executed
-i Edit files in-place (else sends result to stdout)
-n Suppress automatic printing of pattern space
-r Use extended regex syntax

If no -e or -f, the first non-option argument is the sed command string.
Remaining arguments are input files (stdin if none).

-sh: s/.*[ \t]//: not found
BusyBox v1.16.1 (2011-03-15 11:17:45 CET) multi-call binary.

Usage: wget [-c|--continue] [-s|--spider] [-q|--quiet] [-O|--output-document file]
[--header 'header: value'] [-Y|--proxy on/off] [-P DIR]
[--no-check-certificate] [-U|--user-agent agent] url

Retrieve files via HTTP or FTP

Options:
-s Spider mode - only check file existence
-c Continue retrieval of aborted transfer
-q Quiet
-P Set directory prefix to DIR
-O Save to filename ('-' for stdout)
-U Adjust 'User-Agent' field
-Y Use proxy ('on' or 'off')

-sh: ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/firmware/deutsch/: not found
tar: short read
cat: can't open '/var/run/delayed_reboot.pid': No such file or directory
rm: can't remove '/var/run/delayed_reboot.pid': No such file or directory
PID USER VSZ STAT COMMAND
1 root 1404 S init
2 root 0 SW [kthreadd]
3 root 0 SW [ksoftirqd/0]
4 root 0 SW [events/0]
5 root 0 SW [khelper]
6 root 0 SW [async/mgr]
7 root 0 SW [CPMAC workqueue]
8 root 0 SW [sync_supers]
9 root 0 SW [bdi-default]
10 root 0 SW [kblockd/0]
11 root 0 SW [khubd]
12 root 0 SW [rpciod/0]
13 root 0 SW [kswapd0]
14 root 0 SW [aio/0]
15 root 0 SW [nfsiod]
20 root 0 SW [pm_info]
21 root 0 SWN [avmdebug]
22 root 0 SW [mtdblockd]
23 root 0 SW [tffsd_mtd_0]
25 root 0 SW [scsi_eh_0]
26 root 0 SW [usb-storage]
88 root 0 SW [cleanup_timer_f]
190 root 0 SWN [jffs2_gcd_mtd5]
212 root 0 SW< [loop0]
224 root 0 SW [capi_oslib]
225 root 0 SW [capi_oslib/0]
227 root 0 SW [capitransp]
230 root 0 SW< [avm_dect_thread]
231 root 0 SW [ksock tcp worke]
232 root 0 SW [ksock tcp serve]
321 root 1396 S < /sbin/udevd --daemon
548 root 4216 S /bin/configd
855 root 0 SWN [dectuart_route]
863 root 12060 S ctlmgr
874 root 6096 S upnpd
908 root 4776 S multid -t
1063 root 12060 S ctlmgr
1064 root 12060 S ctlmgr
1065 root 12060 S ctlmgr
1087 root 4776 S multid -t
1328 root 6096 S upnpd
1329 root 6096 S upnpd
1331 root 6096 S upnpd
1489 root 1396 S < /sbin/udevd --daemon
1662 root 4844 S dsld -i -n
1668 root 0 SWN [kdsld_token]
1683 root 5364 S telefon a127.0.0.1
1688 root 5004 S < voipd
1693 root 3996 S pbd
1694 root 3996 S pbd
1697 root 3996 S pbd
1698 root 3996 S pbd
1718 root 5364 S telefon a127.0.0.1
1719 root 5364 S telefon a127.0.0.1
1879 root 1480 S /sbin/chronyd -f /var/tmp/chrony.conf
2272 root 1400 S /usr/sbin/inetd
2286 root 1136 S /bin/run_clock -c /dev/tffs -d
2290 root 1396 S /usr/sbin/telnetd -l /sbin/ar7login
2291 root 1616 S /bin/sh /etc/init.d/rc.S
2292 root 1616 S /bin/sh /etc/init.d/rc.S
2293 root 1616 S /bin/sh /etc/init.d/rc.S
2307 root 1388 S sleep 22933
2308 root 1388 S sleep 69733
2312 root 1388 S sleep 55333
2314 root 1404 S init
3794 root 1396 S < /sbin/udevd --daemon
3918 root 3284 S hostapd -B /var/tmp/wlan_ath0_topology
3990 root 1432 S -sh
4108 root 2756 S nmbd
4131 root 1412 S /bin/sh /bin/prepare_fwupgrade start
4134 root 1396 R ps
Thu Jul 14 07:48:45 CEST 2011
Jul 14 07:48:45 chronyd[1879]: chronyd exiting on signal
Thu Jul 14 07:48:46 CEST 2011
disable watchdog
killall: printserv: no process killed
chmod: /var/media/ftp/OTi2168-FlashDisk-01: Read-only file system
killall: ftpd: no process killed
rmmod: can't unload 'vfat': unknown symbol in module, or unknown parameter
rmmod: can't unload 'fat': unknown symbol in module, or unknown parameter
rmmod: can't unload 'nls_cp437': unknown symbol in module, or unknown parameter
rmmod: can't unload 'nls_iso8859_1': unknown symbol in module, or unknown parameter
rmmod: can't unload 'sd_mod': unknown symbol in module, or unknown parameter
rmmod: can't unload 'ext2': unknown symbol in module, or unknown parameter
rmmod: can't unload 'usb_storage': unknown symbol in module, or unknown parameter
rmmod: can't unload 'scsi_mod': unknown symbol in module, or unknown parameter
deactivating MUSB root hub
ls: /var/USB-proc-bus-usb-*: No such file or directory
Thu Jul 14 07:49:10 CEST 2011
PID USER VSZ STAT COMMAND
1 root 1404 S init
2 root 0 SW [kthreadd]
3 root 0 SW [ksoftirqd/0]
4 root 0 SW [events/0]
5 root 0 SW [khelper]
6 root 0 SW [async/mgr]
7 root 0 SW [CPMAC workqueue]
8 root 0 SW [sync_supers]
9 root 0 SW [bdi-default]
10 root 0 SW [kblockd/0]
11 root 0 SW [khubd]
12 root 0 SW [rpciod/0]
13 root 0 SW [kswapd0]
14 root 0 SW [aio/0]
15 root 0 SW [nfsiod]
20 root 0 SW [pm_info]
21 root 0 SWN [avmdebug]
22 root 0 SW [mtdblockd]
23 root 0 SW [tffsd_mtd_0]
88 root 0 SW [cleanup_timer_f]
190 root 0 SWN [jffs2_gcd_mtd5]
212 root 0 SW< [loop0]
224 root 0 SW [capi_oslib]
225 root 0 SW [capi_oslib/0]
227 root 0 SW [capitransp]
230 root 0 SW< [avm_dect_thread]
231 root 0 SW [ksock tcp worke]
232 root 0 SW [ksock tcp serve]
321 root 1396 S < /sbin/udevd --daemon
548 root 4216 S /bin/configd
855 root 0 SWN [dectuart_route]
863 root 11576 S ctlmgr
874 root 5824 S upnpd
908 root 4772 S multid -t
1063 root 11576 S ctlmgr
1064 root 11576 S ctlmgr
1065 root 11576 S ctlmgr
1087 root 4772 S multid -t
1328 root 5824 S upnpd
1329 root 5824 S upnpd
1331 root 5824 S upnpd
1662 root 4848 S dsld -i -n
1668 root 0 SWN [kdsld_token]
1683 root 5364 S telefon a127.0.0.1
1688 root 5004 S < voipd
1693 root 3996 S pbd
1694 root 3996 S pbd
1697 root 3996 S pbd
1698 root 3996 S pbd
1718 root 5364 S telefon a127.0.0.1
1719 root 5364 S telefon a127.0.0.1
2272 root 1400 S /usr/sbin/inetd
2286 root 1136 S /bin/run_clock -c /dev/tffs -d
2290 root 1396 S /usr/sbin/telnetd -l /sbin/ar7login
2291 root 1616 S /bin/sh /etc/init.d/rc.S
2292 root 1616 S /bin/sh /etc/init.d/rc.S
2293 root 1616 S /bin/sh /etc/init.d/rc.S
2307 root 1388 S sleep 22933
2308 root 1388 S sleep 69733
2312 root 1388 S sleep 55333
2314 root 1404 S init
3918 root 3284 S hostapd -B /var/tmp/wlan_ath0_topology
3990 root 1432 S -sh
4131 root 1416 S /bin/sh /bin/prepare_fwupgrade start
4270 root 0 SW [flush-7:0]
4327 root 1396 S < /sbin/udevd --daemon
4328 root 1396 S < /sbin/udevd --daemon
4446 root 1396 R ps
Thu Jul 14 07:49:10 CEST 2011
TERMINATING inetd capiotcp_server pbd faxd telefon dtrace printserv smbd nmbd mailer
Jul 14 07:49:11 pbd[1693]: received signal: Terminated.
Jul 14 07:49:11 pbd[1697]: received signal: Terminated.
Jul 14 07:49:11 pbd[1698]: received signal: Terminated.
telefon: SIGTERM received!
Jul 14 07:49:11 telefon[1683]: wdt release failed
telefon: SIGTERM received!
killall: dect_manager: no process killed
telefon: SIGCHLD received!
Jul 14 07:49:14 pbd[1693]: terminating.
Thu Jul 14 07:49:16 CEST 2011
TERMINATING audiod pictured feedd playerd
Thu Jul 14 07:49:16 CEST 2011
TERMINATING configd
Thu Jul 14 07:49:17 CEST 2011
TERMINATING lltdd maild voipd usermand upnpd mediasrv avmlogd tr069discover contfiltd

fritznasdb avmike dsld
Thu Jul 14 07:49:25 CEST 2011
rmmod: can't unload 'userman_mod': unknown symbol in module, or unknown parameter
rmmod: can't unload 'isdn_fbox_fon3': unknown symbol in module, or unknown parameter
killall: checkservices: no process killed
Thu Jul 14 07:49:26 CEST 2011
-sh: /var/install: not found
# killall: printserv: no process killed
rmmod: can't unload 'vfat': unknown symbol in module, or unknown parameter
rmmod: can't unload 'fat': unknown symbol in module, or unknown parameter
rmmod: can't unload 'nls_cp437': unknown symbol in module, or unknown parameter
rmmod: can't unload 'nls_iso8859_1': unknown symbol in module, or unknown parameter
rmmod: can't unload 'sd_mod': unknown symbol in module, or unknown parameter
rmmod: can't unload 'ext2': unknown symbol in module, or unknown parameter
rmmod: can't unload 'usb_storage': unknown symbol in module, or unknown parameter
rmmod: can't unload 'scsi_mod': unknown symbol in module, or unknown parameter
deactivating MUSB root hub
ls: /var/USB-proc-bus-usb-*: No such file or directory

Sorry für den langen Mitschnitt des Logs, aber ich hoffe du kannst daraus ggf. etwas herauslesen, was ursächlich für das Nichtfunktionieren ist.

Danke!
 
curl: no URL specified!
curl: try 'curl --help' for more information
-sh: ftp://ftp.avm.de/fritz.box/fritzbox....ware/deutsch/: not found
Usage: sed [-efinr] SED_CMD [FILE]...
-sh: s/.*[ \t]//: not found
Usage: wget

Das sieht nach falschen Zeilenumbrüchen aus. Warum entpackst du cURL eigentlich immer wieder aufs Neue? Entpacke es doch einmal und lege es mit dem angehängten Skript auf den USB-Datenträger. Dann starte mal das Skript mit

Code:
/var/media/ftp/OTi2168-FlashDisk-01/autoupdate.sh
 

Anhänge

Vielleicht eine dumme Frage, aber wie entpacke ich curl denn am Besten?
Ich dachte die Endung *.tar wäre eine typische FritzBox Datei, die auch entsprechend verarbeitet wird und nicht weiter entpackt werden darf.
Allerdings sollte curl auch nach einem Neustart der FritzBox (z.B. wegen Stromausfall) noch (oder wieder) vorhanden sein. Aus diesem Grund war ich bisher ja auch so glücklich mit dem Skript, was sich die Datei selbst erneut sucht.
 
Tar ist ein Archivierer. Wenn du deine Programme entpackt auf dem USB-Datenträger hinterlegst, sind sie auch nach einem Neustart verfügbar.

Entpacken kannst du
  • auf der Box selbst mit tar -xvf <archivname>.tar
  • unter Linux-Distributionen werden zusätzlich Bedienoberflächen angeboten
  • unter Windows z.B. mit 7-Zip
  • ...

http://de.wikipedia.org/wiki/Tar

Gruß
 
Nee, keine Chance - habe curl.tar gerade mit 7zip entpackt und als extra Ordner "curl" auf dem USB Stick entpackt, trotzdem funktioniert es nicht.
Vielleicht gibt es ja einen Schutz im System der Box, der ein internes Update verhindert?
Läuft die Geschichte denn so auf deiner Box?
 
Zur Zeit habe ich keine eigene Box. Nur so ein modernes Smartphone ;)

Wenn du cURL in einem Ordner liegen hast, dann muss der Pfad im Skript angepasst werden. Wenn du die Datei editierst, dann läufst du aber wieder Gefahr, dass die Zeilenumbrüche nicht mehr passen. Lege Skript und cURL mal ins Root (ohne Ordner) des USB-Sticks und teste.
 
So, ich habe zwar noch folgende Seite im Netz gefunden, aber das hat mir auch nichts geholfen.

curl habe ich jetzt entpackt und es liegt auf dem Stick unter /var/media/ftp/OTi2168-FlashDisk-01/curl

Das Skript scheint in folgendem Teil einwandfrei zu funktionieren:

Code:
#!/bin/sh

CURRENT_VERSION=`/etc/version`
ONLINE_VERSION=$(wget -O - ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/firmware/deutsch/info.txt | grep Version: | sed 's/Version: \+ //')

if [ "${CURRENT_VERSION}" != "${ONLINE_VERSION}" ]
then

	DOWNLOADNAME=$(/var/media/ftp/OTi2168-FlashDisk-01/curl --silent ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/firmware/deutsch/ | grep image | sed -e 's/.*[ \t]//')
	wget -P /var/media/ftp/OTi2168-FlashDisk-01 ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/firmware/deutsch/$DOWNLOADNAME

Die txt wird heruntergeladen und ausgelesen - daraufhin wird das entsprechende *.image heruntergeladen und auf dem USB Stick gespeichert.

Dann ist mir jedoch nicht ganz klar, was folgender Befehl bewirkt:

Code:
tar xv -C / -f /var/media/ftp/OTi2168-FlashDisk-01/$DOWNLOADNAME

Entpackt der die Datei nach /var/media/ftp/OTi2168-FlashDisk-01/$DOWNLOADNAME oder was macht der genau?

Ich habe auch schon mit folgenden Befehlen experimentiert:

Code:
/bin/prepare_fwupgrade start
/var/install
/var/post_install

Aber leider alles ohne Erfolg. Könnte es sein, dass ich das Imagefile irgendwie lieber gleich in den internen Speicher der Box laden muss und es dann auch von dort aus starten muss (irgendwie verstehe ich die Angaben auf der oben verlinkten Seite so)?

Hat das echt noch niemand in einem Skript zum Laufen gebracht :gruebel:
 
Hat denn keiner mehr eine Idee zu dem Thema? :(
 
Von Kriegeax gibt es folgendes Skript

Code:
# Bevor wir anfangen, ein Hintergrundbefehl: notfalls in 10 min die Box
# zwangsweise neu starten, das müßte für Download + FW-Update reichen.
{ sleep 600 ; reboot -f; } &

{
# Unnötige Dienste stoppen, aber websrv und dsld weiter laufen lassen
prepare_fwupgrade start_from_internet
# FW-Image herunterladen und direkt nach "/" entpacken
wget -q -O - http://mein.server.xy/mein.image 2> /dev/null | tar -C / -x
# Restliche Dienste stoppen
prepare_fwupgrade end
# Installation vorbereiten
/var/install
# Installation initialisieren
/var/post_install
# Box neu starten
reboot
}

Das Skript entpackt die FW direkt ohne speichern auf dem USB-Stick. Falls die Kombination aus beiden Skripten nicht funktioniert, weiß ich nicht weiter. Dafür tummeln sich aber genug fähigere Leute als wir beide im Forum ;)

Code:
#!/bin/sh

USB_PATH=/var/media/ftp/USTOR11
FTP_PATH=ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/firmware/deutsch

# Erkenne installierte/angebotene FW
CURRENT_VERSION=`/etc/version`
ONLINE_VERSION=$(wget -O - $FTP_PATH/info.txt | grep Version: | sed 's/Version: \+ //')

# Ist die aktuelle FW installiert?
if [ "${CURRENT_VERSION}" != "${ONLINE_VERSION}" ]
then

	# Erkennung des Imagenamens	
	DOWNLOADNAME=$($USB_PATH/fritz/bin/curl --silent $FTP_PATH/ | grep image | sed -e 's/.*[ \t]//')
	# Unnötige Dienste stoppen, aber websrv und dsld weiter laufen lassen
	prepare_fwupgrade start_from_internet
	# FW-Image herunterladen und direkt nach "/" entpacken
	wget -q -O - $FTP_PATH/$DOWNLOADNAME 2> /dev/null | tar -C / -x
	# Restliche Dienste stoppen
	prepare_fwupgrade end
	# Installation vorbereiten
	/var/install
	# Installation initialisieren
	/var/post_install
	# Box neu starten
	reboot
fi
 
Hi!
Die Sache lief so zumindest grad schonmal im ersten Testlauf nach ein paar weiteren Pfadanpassungen auf meine persönlichen Gegebenheiten auf Stick und Box :p
Das blöde mit dem Testen ist nur, dass ich die Box jedesmal wieder mit einem Recoveryimage auf einen älteren Firmwarestand zurücksetzen muss.

Kann mir jetzt vielleicht noch jemand dabei helfen, ob folgendes Skript so richtig ist, damit es nur einmal pro Woche in der Nacht von Freitag auf Samstag um 3:30 Uhr ausgeführt wird - jeden Tag muss ich ja nicht unbedingt nach ner neuen Version suchen und diese dann installieren lassen:

Code:
#Warten auf aktuelle Uhrzeit
while true; do
 if [ $(date +%Y) -lt 2010 ]; then sleep 300; fi
  TOSTART=03:30
  # gewünschte Startzeit in Sekunden
  START_S=$(date +%s -d "$TOSTART")
  # aktuelle Zeit in Sekunden
  NOW_S=$(date +%s)
  # Den aktuellen Wochentag bestimmen (0=Sonntag, ..., 6=Samstag)
  NOW_W=$(date +%w)
  # Startzeit am gewünschten Wochentag
  # Tage bis zum gewünschten Wochentag: 5 für Freitag minus heutiger Wochentag.
  START_S=$(( START_S + 24*60*60*((5 - NOW_W) % 7) ))
  # Startzeit schon vorbei?
  if test "$START_S" -le "$NOW_S"; then
   # eine Woche dazu zählen
   START_S=$(( START_S + 7*24*60*60))
  fi
    # Wie lange warten?
    SEC_TO_SLEEP=$(( START_S - NOW_S ))
    # Warten
    sleep $SEC_TO_SLEEP
    # Aktion ausführen
done &

Insgesamt sieht das Skript bei mir also nun folgendermaßen aus:
Code:
#Warten auf aktuelle Uhrzeit
while true; do
 if [ $(date +%Y) -lt 2010 ]; then sleep 300; fi
  TOSTART=03:30
  # gewünschte Startzeit in Sekunden
  START_S=$(date +%s -d "$TOSTART")
  # aktuelle Zeit in Sekunden
  NOW_S=$(date +%s)
  # Den aktuellen Wochentag bestimmen (0=Sonntag, ..., 6=Samstag)
  NOW_W=$(date +%w)
  # Startzeit am gewünschten Wochentag
  # Tage bis zum gewünschten Wochentag: 5 für Freitag minus heutiger Wochentag.
  START_S=$(( START_S + 24*60*60*((5 - NOW_W) % 7) ))
  # Startzeit schon vorbei?
  if test "$START_S" -le "$NOW_S"; then
   # eine Woche dazu zählen
   START_S=$(( START_S + 7*24*60*60))
  fi
    # Wie lange warten?
    SEC_TO_SLEEP=$(( START_S - NOW_S ))
    # Warten
    sleep $SEC_TO_SLEEP
# Dann wollen wir mal flashen
#!/bin/sh

USB_PATH=/var/media/ftp/OTi2168-FlashDisk-01
FTP_PATH=ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/firmware/deutsch

# Erkenne installierte/angebotene FW
CURRENT_VERSION=`/etc/version`
ONLINE_VERSION=$(wget -O - $FTP_PATH/info.txt | grep Version: | sed 's/Version: \+ //')

# Ist die aktuelle FW installiert?
if [ "${CURRENT_VERSION}" != "${ONLINE_VERSION}" ]
then

	# Erkennung des Imagenamens	
	DOWNLOADNAME=$($USB_PATH/FRITZ/curl/curl --silent $FTP_PATH/ | grep image | sed -e 

's/.*[ \t]//')
	# Unnötige Dienste stoppen, aber websrv und dsld weiter laufen lassen
	prepare_fwupgrade start_from_internet
	# FW-Image herunterladen und direkt nach "/" entpacken
	wget -q -O - $FTP_PATH/$DOWNLOADNAME 2> /dev/null | tar -C / -x
	# Restliche Dienste stoppen
	prepare_fwupgrade end
	# Installation vorbereiten
	/var/install
	# Installation initialisieren
	/var/post_install
	# Box neu starten
	reboot
fi

done &

Sollte jemand da noch einen Fehler (egal wie klein er auch sein sollte) entdecken, so gebt mir bitte einen Hinweis. Ich werde das so ansonsten nun mal in meine Box schreiben und schauen was passiert (ob's so klappt) - vorher setzte ich die Box natürlich nochmal auf nen alten Firmwarestand zurück. Ich werde mich dann mit nem Feedback melden!
 
Zuletzt bearbeitet:
Kostenlos!

Statistik des Forums

Themen
248,916
Beiträge
2,304,989
Mitglieder
378,631
Neuestes Mitglied
realprogrammer