Log in

Bekijk de volledige versie : Shell Script: Datei auf Router laden



bauerj
30-09-2009, 13:41
Hallo,

ich habe schon wieder ein neues Problem. Und zwar will ich große Dateien mit meinem Router herunterladen.

Weil Ados mit meiner Festplatte (spindown) nicht klar kommt und ich mit Oleg's FW den Asus Downloadmanager nicht mehr benutzen kann, dachte ich mir, dass ich ein Shell-Script schreiben kann welches auf meinem Computer von Opera automatisch ausgeführt wird, wenn ich rechts auf einen Link klicke.

Das Script sieht so aus:

#!/bin/bash
echo "cd /tmp/harddisk/" > ~/script/kommando.txt
echo "screen wget " $1 $2 $3 $4 $5 $6>> ~/script/kommando.txt
plink -ssh 192.168.1.1 -l admin -pw admin -m ~/script/kommando.txt

Das Script wird auch ausgeführt (plink Fenster poppt auf, aber der Screen/wget Download wird abgebrochen:confused:

Weiß einer woran das liegt?

wengi
30-09-2009, 14:06
#!/bin/bash
echo "cd /tmp/harddisk/" > ~/script/kommando
echo "screen -dmS MeinDownload wget " $1 $2 $3 $4 $5 $6>> ~/script/kommando
plink -ssh 192.168.1.1 -l admin -pw admin -m ~/script/kommandoungetestet

Überprüfe mal, ob in ~/script/kommando auch wirklich das Richtige drin steht.
Was passiert, wenn Du ~/script/kommando anschließend manuell startest?
wengi

Gerdi
30-09-2009, 16:06
wget -c kann einen angefangenen Download fortsetzen.

Vielleicht hilft ein Button "Fortsetzen" etwas?

(Oder probier mal curl statt wget
screen curl -C - -O Dateiname (oder so ähnlich)
mit -# erhältst du nur den Fortschritt

Wenn es läuft kannst du die Skripte ja mal schicken!)

bauerj
30-09-2009, 17:20
@wengi

in der txt steht jetzt:


cd /tmp/harddisk/
screen wget -e --recursive=off -R?N=D,?M=A,?S=A,?D=A http://wl500g.info/showthread.php?p=162341#post162341


wenn ich kommando.txt jetzt starte kommt:


bauerj@bauerj-Ubuntu:~$ plink -ssh 192.168.1.1 -l admin -pw admin -m ~/script/kommando.txt -t
/opt/var/run/utmp: No such file or directory
[screen is terminating]
=> Es ist nichts in /tmp/harddisk/ (außer den Ordnern, die vorher schon da waren.)
Anscheinend wird screen von plink beendet, wenn alle Befehle abgearbeitet sind.

bauerj
07-10-2009, 14:26
So, ich habe es jetzt vescuht mit cron zu machen, aber ich habe das Gefühl der Router mag mich nicht.;)

Das Script ist jetzt so weit dass es

in der crontab einen Eintrag


"*/1 * * * * /tmp/harddisk/dl-script.sh"


erstellt. Ist der Eintrag soweit richtig? (Jede Minute .../dl-script.sh ausführen?)

in dl-script.sh

#!bin/sh
sed '$ d' /opt/etc/crontab > /tmp/harddisk/file.tmp
mv /tmp/harddisk/file.tmp /opt/etc/crontab
wget $1 -o $speicherort

schreibt (letzte Zeile crontab löschen, download $1 in $speicherort)


Ist das alles so richtig? Bei mir führt cron es nicht richtig aus:(

wengi
07-10-2009, 14:55
Hallo bauerj,

entschuldige bitte, aber der Thread ist mir irgendwie durch die Lappen gegangen :eek:
Den Ansatz mit cron finde ich eher schlecht.

Über ssh ist da der Bessere.
Wenn das in der txt steht stimmt schon mal was nicht,

cd /tmp/harddisk/
screen wget -e --recursive=off -R?N=D,?M=A,?S=A,?D=A http://wl500g.info/showthread.php?p=162341#post162341Mit diesen Optionen kann wget sicherlich nichts anfangen!
Es stellt sich die Frage, was Du mit $1 $2 $3 $4 $5 $6 übergibst....

Was die Fehlermeldung
/opt/var/run/utmp: No such file or directoryangeht, so ist auch hier der Fehler beim nicht richtig lesen :)
Wenn ich das eingebe erhalte ich auch den Fehler.
[admin@blechbuechse root]$ screen echo hallo
/opt/var/run/utmp: No such file or directory
Du solltest wirklich das benutzen, was ich oben gepostet habe! Also
screen -dmS MeinDownload ...

Die plink Geschichte scheint ja zu funktionieren, aber Du solltest eins nach dem Anderen machen!

Also:
1) Überprüfen, ob eine SINNVOLLE, AUSFÜHRBARE kommando erstellt wird.
2) Testen, ob diese auch mit den o.g. screen Kommandos funktioniert.
3) Erst dann den Remote-Start mit plink.

Bei Dir hängt es schon bei 1) und 2)

wengi

Gerdi
07-10-2009, 15:29
Den Ansatz mit cron finde ich eher schlecht.

Das verstehe ich nicht.
Ich bin ja nur ein Anfänger, aber seit es Oleg mit transmission gibt lade ich schon mit einem Cron herunter.

Transmission-Watchdog ist doch auch ein Cronjob?

Ich habe parallel dazu einen Download Cronjob.
Er fragte jede Minute, ob die Datei der zu herunterladenenden Dateien aktualisiert wurde.
Wenn ja beginnt ein wget.

Die Datei der zu herunterladenden Dateien ist per Samba freigegeben.
Wenn ich dort eine Datei eintrage wird sie automatisch heruntergeladen und dann der Eintrag gelöscht.
Das funktioniert wunderbar.

Bei ssh ist das grosse Problem, dass die Prozesse nur laufen, solange die Verbindung besteht. Wenn aber sowieso beide Computer an sein müssen, kann ich gleich mit dem grösseren downloaden.


P.S.: Transmission funktioniert ja nun schon wunderbar. Aber könnte man nicht noch eine Downloadfunktion für gewöhnliche Dateien hinzufügen? Das wäre ja nicht schwierig, mit wget oder curl.

bauerj
07-10-2009, 17:05
@wengi

Ich hab das Script noch mal völlig neu gemacht:

#!/bin/bash
speicherort="/tmp/harddisk*/"
FS=$(ls -l ./plink-kommando | tr -s " " | cut -d " " -f 5)
if [ "$FS" = "297" ]

then
echo "echo wget $1 -o $speicherort >> /tmp/harddisk/dl-script.sh" >> ./plink-kommando

else
rm ./plink-kommando
wget http://bauerj.kilu.de/plink-kommando
echo "echo wget $1 -o $speicherort >> /tmp/harddisk/dl-script.sh" >> ./plink-kommando
fi

#plink starten
plink -ssh 192.168.1.1 -l admin -pw admin -m ./plink-kommando -t

sed '$ d' ./plink-kommando > ./file.tmp
mv ./file.tmp ./plink-kommando

Warum findest du cron denn schlecht? Na gut das optimale ist es jetzt auch nicht (die Festplatte läuft ständig). Ich werde es also schnell nochmal mit screen probieren.

So geht es jedenfalls auch nicht:

#!/bin/bash
speicherort="/tmp/harddisk/*"

echo "screen wget $1 -o $speicherort" > ./plink-kommando


#plink starten
plink -ssh 192.168.1.1 -l admin -pw admin -m ./plink-kommando -t


Dann steht im plink-kommando:

screen wget www.web.de -o /tmp/harddisk/*


Und es kommt wieder zurück:
./test.sh www.web.de
/opt/var/run/utmp: No such file or directory
[screen is terminating]

Gerdi
07-10-2009, 17:13
Warum findest du cron denn schlecht? Na gut das optimale ist es jetzt auch nicht (die Festplatte läuft ständig).

Das stimmt nicht.
Meine Festplatte ruht.

/tmp ist eine Ram-Disk.
Solange cronjobs nur auf /tmp zugreifen bleibt die Platte ruhig.

bauerj
07-10-2009, 17:19
Ja, aber liegt die crontab nicht in /opt/etc ?

Ist das eigentlich mit dem -o ... richtig so?
Ohne scheint es jedenfalls zu klappen!

Gerdi
07-10-2009, 17:30
Die Crontab liegt auf /opt.

Opt ist aber (nur bei mir?) NICHT auf die Festplatte gemountet, sondern auf einen USB-Stick.

Zudem besteht für /opt nur dauernder Lesezugriff, sodass der USB-Stick nicht durch Schreib-Zugriffe beschädigt wird.

bauerj
07-10-2009, 17:35
Aha OK:D So gehts natürlich auch, aber ich habe gerade keinen mit dem Router funktionierenden USB-Hub zur Hand.

Na egal, es geht ja auch mit screen:D

Eine Frage hab ich noch:

Wie kann man die Ausgabe von wget x in eine Textdatei schreiben?

Oder gint es dafür einen log-Befehl?

Edit: gefunden! -o

wengi
08-10-2009, 08:06
Hallo,

cron macht natürlich generell Sinn.
Aber einen cron Job minütlich auszuführen ist nicht hübsch.
Da gibt es meist bessere Wege.

@Gerdi
Der watchdog von transmission wird schon lange nicht mehr benötigt.
No comment.

@bauerj
Ich versuche es jetzt zum Dritten und Letzten mal. Entweder Du machst jetzt die Augen auf oder suchst Dir an anderer Stelle Support:

Dann steht im plink-kommando:

screen wget www.web.de -o /tmp/harddisk/*
Und es kommt wieder zurück:

./test.sh www.web.de
/opt/var/run/utmp: No such file or directory
[screen is terminating]

Ich zitiere mich selbst:

Du solltest wirklich das benutzen, was ich oben gepostet habe! Also

screen -dmS MeinDownload ...
Mit -dmS starten und danach einen Namen vergeben. Dann erst das wget.
Überprüfen kannst Du es anschließend mit ps axf (also sehen, ob sreen noch läuft) bzw. mit screen -r, um dich in die screen session einzuklinken.

Und nochmal: Wer lesen kann ist klar im Vorteil!

wengi

Gerdi
08-10-2009, 08:59
Der watchdog von transmission wird schon lange nicht mehr benötigt.


Das habe ich auch gemerkt. Schliesslich musste ich früher bei jedem Update von Transmission den Watchdog umschreiben damit nicht mehr jede 5 Minuten auf die Festplatte zugegriffen wurde, sondern auf die Ram-Disk. Jedes Update überschrieb diese Änderungen wieder. (Das hat sich aber jedesmal gelohnt!! Transmission ist toll!!!!)

Ich sehe keinen grossen Unterschied, ob ein Cronjob jede Minute abgefragt wird oder ob eine TCP-IP-Verbindung jeden Bruchteil einer Sekunde abgefragt wird.

Wie gesagt:
SSH und PLINK bringen NICHTS.
Beide verlangen eine dauernde Verbindung. Wenn eine dauernde Verbindung eines grossen Computers zur Box besteht, dann lädt man selbstverständlich mit dem grossen Computer herunter und nicht mit der kleinen Box.

Der Vorteil der kleinen Box liegt gerade darin, dass sie ohne Computer herunterladen kann. Das geht mit einer SSH-Verbindung nicht. Deshalb macht auch Transmission das nicht.

Natürlich kann ein Profi oder Snob jetzt einen TCP-IP-daemon programmieren, der auf der Box startet (mit xinet oder inetd).
Aber wenn man es einfach haben will führt kein Weg an einem Cronjob vorbei. (Oder an einem TCP-IP-Socket mit Perl vielleicht...)

newbiefan
08-10-2009, 13:59
Wie gesagt:
SSH und PLINK bringen NICHTS.
Beide verlangen eine dauernde Verbindung. Wenn eine dauernde Verbindung eines grossen Computers zur Box besteht, dann lädt man selbstverständlich mit dem grossen Computer herunter und nicht mit der kleinen Box.

Der Vorteil der kleinen Box liegt gerade darin, dass sie ohne Computer herunterladen kann. Das geht mit einer SSH-Verbindung nicht. Deshalb macht auch Transmission das nicht.

Natürlich kann ein Profi oder Snob jetzt einen TCP-IP-daemon programmieren, der auf der Box startet (mit xinet oder inetd).
Aber wenn man es einfach haben will führt kein Weg an einem Cronjob vorbei. (Oder an einem TCP-IP-Socket mit Perl vielleicht...)

Also, so stimmt das nicht. Man kann ohne weiteres eine z.Bspl. Dropbear-Verbindung kappen und trotzdem laeuft der Script weiter, das geht sogar ganz einfach.
z.Bspl:


#! /bin/sh
#Scriptname: testjob
while [ true ] ; do
echo "Testfile-Ausgabe" >> /tmp/mnt/disc0_3/testfile.txt
done

Naja, dann ruft man den Script einfach auf der Console auf und schickt ihn in den background mit "&".



chmod 755 testjob
testjob &


Wenn der Script im gleichen Directory liegt und nicht im Pfad (echo $PATH) dann eben:


chmod 755 testjob
./testjob &


Das war's auch schon
have fun

NACHTRAG: kann man ganz einfach mit 2 Consolen pruefen, einmal "top" und einmal nach Eingabe und Start die Console schliessen.
Ach ja, den Script mit "killall testjob" stoppen oder mit "CTRL+c" wenn er nicht im Hintergrund laeuft.
Und die Echo Ausgabe auskommentieren, wenn sie auf die Console ausgegeben wird oder mit "> /dev/null" umleiten (muesste auch gehen)...

wengi
08-10-2009, 16:47
SSH und PLINK bringen NICHTS.
Falsch.
Die Idee ist ja gerade das Script anzustoßen und autark laufen zu lassen.
Die ssh Verbindung steht nur eine Sekunde.

Aber newbiefan hats ja schon erleutert.

wengi

Gerdi
08-10-2009, 23:27
Dropbear-Verbindung kappen und trotzdem laeuft der Script weiter, das geht sogar ganz einfach.

Ja, du hast recht. Ich habe es gerade getestet (auch in Debian, auf einem anderen Computer).

Wenn ich als gewöhnlicher Benutzer einlogge und wieder auslogge, werden meine Hintergrundprozesse gekilled.
Ich dachte dies sei bei SSH-Verbindungen auch so. Da lag ich falsch, jedenfalls für Root (und zwar sowohl bei openSSH, als auch bei Droppbear.)


Daraus kommt mir aber folgende Idee:

@BauerJ
Hast du versucht Dropbear zu stoppen und openSSH zu installieren?
Dropbear hat meistens nur eine sehr begrenzte Funktionalität.

newbiefan
09-10-2009, 21:08
Die Crontab liegt auf /opt.

Opt ist aber (nur bei mir?) NICHT auf die Festplatte gemountet, sondern auf einen USB-Stick.

Zudem besteht für /opt nur dauernder Lesezugriff, sodass der USB-Stick nicht durch Schreib-Zugriffe beschädigt wird.

Hi Gerdi,
ich greife das Thema deshalb umfassend wieder auf, weil mir wesentliche Teile von Deiner Konfiguration etwas seltsam vorkommen und eventuell User verunsichert sind/werden, weil fast keine Konfiguration mehr ordentlich geht.

Also, ich interpretiere deine Konfig:
1.) USB Stick als /opt und read-only
2.) HDD irgendwo im /tmp Ordner gemounted
3.) Kein Swap (Stick kann nur gelesen werden und die HDD schlummert)

Es ergeben sich daher folgende, fast unloesbare Probleme:
- alle Programme, welche irgend welche Nachrichten oder PIDs, Logs usw auf /opt schreiben, koennen nur mehr eingeschraenkt=nicht mehr sicher!!! funktionieren, dazu gehoert auch cron (zumindest der cron von /opt)
So kann z.Bspl. Cron unter /opt/var/run/ den pidfile cron.pid nicht mehr anlegen, oder noch schlimmer - es steht irgend eine (alte) pid-Nummer drinnen und ist read-only! Und das betrifft extrem viele Programme!!
Lighttpd kann keine Log's schreiben und Wengis HowTo ist sinnlos geworden, weil es nicht mehr geht z.Bspl. logrotate.
Darueber hinaus ist in meinen Augen eine Installation von vielen Programmen (Optware) wie Samba, vsftpd, xmail und und und...., ohne Swap schon fast fahrlaessig. Wer je einmal einen heavy load auf dem Asus ohne Swap erzeugt hat, weiss was ich meine: kompletter Datenverlust ist im schlimmsten Fall vorprogrammiert - oder versuche einmal ohne Swap eine grosse Platte zu formatieren, da muss man eine ordentliche Portion Geduld haben.
Oder starte einmal XMail, da geht der Router bei Aktivitaet fast schlafen wenn kein Swap aktiv ist.
Flash-Sticks haben ein bekanntes Problem, den "wear-out", so gesehen hast du zwar richtig gehandelt wenn du Schreibzugriffe verhindern willst, dafuer bekommst du aber jede Menge Instabilitaet.
Freilich kann man die Konfigurationen anlegen wie man will, sollte sich aber keine wesentlichen Nachteile einhandeln.

Deshalb sollte ein mounten der /opt Partition nicht als Read-only durchgefuehrt werden, denn es ist schlichtweg falsch und verursacht unzaehlige Probleme (speziell wenn man nach Wengi installiert hat) - ein remount als read-only von /opt ist nur zweckmaessig wenn der Router herunter gefahren wird.

have fun

Gerdi
09-10-2009, 23:49
Ich habe eine Box, die schon seit Jahren mit Olegs Firmware einwandfrei läuft.
Meine Festplatte ruht, wenn ich sie nicht brauche.
Mein USB-Stick lebt. Mein Festplatte ist seit Jahren ebenfalls immer noch einwandfrei.
Ich starte Downloads und Torrents von anderen Computern.

Natürlich ist mein /opt NICHT readonly.
Du hast meine Text aus dem Zusammenhang gerissen.
Ich habe gesagt, dass auf meine Crontab-Datei, auf /opt, während dem Zugriff, jede Minute, nur Lesezugriff besteht. Deshalb wird der USB-Stick nicht durch Schreibzugriffe verbraucht.

Ich habe eine eigene Swap-Partition auf USB.


Besser aufpassen!!!


Wenn du einmal eine Kiste hast, die so gut läuft wie meine Box, dann kannst du beginnen bei anderen herumzunörgeln.

Bei mir läuft ein Web-Radio mit Fernsteuerung. Ein Vlc-streamer. 5 Webserver (2 Lighttpd, 3 thttpd). Printserver, samba, ...
Mediawiki, Joomla...

Dieses Gerät ist ideal konfiguriert.
Ich möchte mal ein anderesGerät mit dieser Leistung sehen, das schon soviele Jahre einwandfrei läuft.

Sogar mein Transmission liess meine Festplatte in Ruhe, weil ich jedes mal Transmission-Watchdog so umgeschrieben habe, dass er alle 5 Minuten Kontrollen nur auf einen Ram-Speicher zugriff. Erst wenn er tatsächlich lud speicherte er auf der Platte.

Niemand hatte damals ein so perfektes System wie ich.

newbiefan
10-10-2009, 10:12
Natürlich ist mein /opt NICHT readonly.
Du hast meine Text aus dem Zusammenhang gerissen.
Ich habe gesagt, dass auf meine Crontab-Datei, auf /opt, während dem Zugriff, jede Minute, nur Lesezugriff besteht. Deshalb wird der USB-Stick nicht durch Schreibzugriffe verbraucht.
Besser aufpassen!!!
Wenn du einmal eine Kiste hast, die so gut läuft wie meine Box, dann kannst du beginnen bei anderen herumzunörgeln.
Bei mir läuft ein Web-Radio mit Fernsteuerung. Ein Vlc-streamer. 5 Webserver (2 Lighttpd, 3 thttpd). Printserver, samba, ...
Mediawiki, Joomla...

Dieses Gerät ist ideal konfiguriert.
Ich möchte mal ein anderesGerät mit dieser Leistung sehen, das schon soviele Jahre einwandfrei läuft.

Sogar mein Transmission liess meine Festplatte in Ruhe, weil ich jedes mal Transmission-Watchdog so umgeschrieben habe, dass er alle 5 Minuten Kontrollen nur auf einen Ram-Speicher zugriff. Erst wenn er tatsächlich lud speicherte er auf der Platte.

Niemand hatte damals ein so perfektes System wie ich.

Du brauchst dich nicht angegriffen zu fuehlen, ich habe nur das wieder gegeben, was du geschrieben hast und das war nicht richtig. Da ist nichts aus dem Zusammenhang gerissen.

Abgesehen davon, es waere schoen ein HowTo von Dir zu haben wie man z.Bspl. Transmission jedes Mal so umschreiben kann, dass nur mehr alle 5 Minuten auf /tmp zugegriffen wird. Oder, es wuerde mich freuen deine Erfahrungen ueber einen Swap auf einem USB-Stick zu hoeren - ich habe das Problem, dass meine Sticks (egal ob teuer oder billig) nach wenigen Wochen/Monate einfach defekt sind und das mehrfach. Wie kann ich das mit einem Swap-Stick verhindern?

Vielleicht kannst Du mir auch helfen, welche Massnahmen zu treffen sind bei heavy load? Da stehe ich komplett an -zumindest bei dem Thema welche Massnahmen etwas bringen - freilich habe ich mit nice experimentiert, es war jedoch nie zufrieden stellend. Bei mir reagiert der Router stark verzoegert, wenn ein heavy load auftaucht und zu viele Programme laufen. Ich habe auch versucht, nur mit xinetd alles zu starten, das wird aber zum Fiasko, weil irgend wann alle Progis laufen und dann ist es noch schlimmer als zuvor. Zum Glueck habe ich nur eine 2mbit Leitung - aber bei meinem Bruder mit einer sehr schnellen ADSL Leitung, reagiert der Router sehr merkwuerdig (extrem langsam=unbrauchbar), wenn gleichzeitig z.Bspl. mehrere FTP downloads erfolgen. Ganz schlimm wird es bei mir, wenn FTP download, webserver, samba und printserver im Betrieb sind - da kann man eine Jause zu sich nehmen bis sich etwas tut....
Deshalb habe ich auch meine Dokuwiki entfernt, dafuer ist der Asus einfach nicht geeignet, da wird bald der RTN16 seine Dienste leisten muessen.

LG
Helmut

Gerdi
10-10-2009, 12:44
ich habe nur das wieder gegeben, was du geschrieben hast und das war nicht richtig.

Bitte zeige mir, wo ich geschieben habe, dass ich /opt/ nur readonly gemountet hätte?

Ich habe nur geschrieben, dass die dauernden Zugriffe auf /opt durch cron, reine Lesezugriffe seien.
(Transmission-watchdog führte, wenn ich mich recht erinnerer ständig ein "touch $ACTIVE" durch. Man musste verhindern, dass dieser Schreibzugriff auf /opt oder Festplatte ging, sondern auf eine Ramdisk)

Meine Erfahrungen mit USB:
Mein System läuft schon Jahre. Ich hatte NIE Probleme mit meinem Stick.
Dabei habe ich immer die billigsten Sticks bei Ebay gekauft. Nur auf die Geschwindigkeit habe ich geachtet
(Zuerst war es ein 1GB transzend. Dann habe ich auf 4 GB aufgrüstet.)
Meine beiden Sticks liefen immer einwandfrei.
Früher hatte ich Skriptezusätze in /tmp/local/sbin, die auf die Festplatte swap-ten, sobald sie aufgeweckt war und wieder off-swap-ten, bevor sie einschlief. Aber die habe ich verloren seit einem Firmware-upgrade.)

Es ist mir selber ein Rätsel, warum die USB-Sticks das aushalten.

Kürzlich habe ich mit syslog-ng das logging etwas eingeschränkt, als ich mit Schrecken feststellte, wieviel da regelmässig auf /opt/var/log geschrieben wird.
(Ich glaube früher waren die log-Dateien nur auf /tmp/log aber ich kann mich auch irren.)

Meine Änderung in Transmission_watchdog war folgende:
(Ich liefere sie nur ungern, da es eine Anfänger-Bastelei ohne Garantie ist.)


if [ ! -f /tmp/ramdisk/services/start/transmission ]; then
exit 1
fi

#rmdir --ignore-fail-on-non-empty $RD_SOURCE
#rmdir --ignore-fail-on-non-empty $RD_WORK
rmdir $RD_SOURCE 2>/dev/null
rmdir $RD_WORK 2>/dev/null
if [ ! -d $RD_SOURCE ]; then
mkdir -p -m 777 $RD_SOURCE
if [ ! -d $RD_WORK ]; then
mkdir -p -m 777 $RD_WORK
exit 1
fi
else
cp -R $RD_SOURCE/* $SOURCE/
if [ ! -d $RD_WORK ]; then
mkdir -p -m 777 $RD_WORK
fi
mv $RD_SOURCE/* $RD_WORK/
fi
touch $ACTIVE
if [ $RD_SOURCE -nt $ACTIVE ]; then
exit 1
fi
touch $RD_SOURCE


$ACTIVE wurde in der Konfigurationsdatei auf die Ram-Disk gesetzt.
Falls (z.B. nach eine Neustart) die Ram-Disk-Verzeichnisse nicht mehr bestanden wurden sie neu erstellt.
Zudem hatte ich einen Schalter, mit dem ich über Samba transmission_watchdog ein und ausschalten konnte. (Meistens: AUS)


Wegen der Heavy-Load:
Spielst du auf meine zahlreichen Webserver und den Printserver an?
Webserver kann man starten soviele das Ram schafft. Wenn sich niemand anmeldet brauchen sie kaum Leistung. Natürlich wäre das ein Problem, wenn viele gleichzeitig auf den Webserver gingen. Das ist in meinem Haushalt aber kaum der Fall.
Und was ich auf dem Web publiziere ist von geringem Interesse.
(Joomla und Mediawiki sind langsam mit der mysql-Datenbank. Ich hatte auch einmal ein Forum. Alles lief langsam, aber erträglich.)

Mit dem Printserver hatte ich keine Probleme. Das liegt aber vielleicht daran, dass ich sowieso einen Netzwerk-Drucker habe. (CanonR5200IP: Im grossen Kaufhaus wussten sie gar nicht, was das nützt. Weil niemand dieses Ausstellungsstück kaufte bekam ich ihn sehr billig. Erst als ich nach dem Kauf nach den beiden MAC-Adressen fragte, schien einem Verkäufer ein Licht anzugehen.)

Download:
Natürlich geht das langsam mit der Box. Sie ist kein schneller Rechner. Aber sie braucht (wenn man das WLAN abstellt) auch nur sehr wenig Strom. Der Vorteil ist nicht die Geschwindigkeit, sondern der Umstand, dass man die Box über die Nacht oder länger downloaden lassen kann.

Wer sofort etwas downloaden will sollte es über einen grossen Computer machen.

Deshalb ist es auch so wichtig, was BauerJ sucht:
Einen praktischen Zugang, um Downloads zu starten.
Ich bin mit meiner Methode ganz zufrieden.

Ich würde mich über ein Feedback von BauerJ freuen:
Was wird benutzt: dropbear oder openssh?
Falls dropbear: openssh installieren und dropbear stoppen, dann screen mit --force-reinstall neu installieren. Hat das nicht geklappt?

Gerdi
10-10-2009, 12:56
ich habe nur das wieder gegeben, was du geschrieben hast und das war nicht richtig.

Bitte zeige mir, wo ich geschieben habe, dass ich /opt/ nur readonly gemountet hätte?

Ich habe nur geschrieben, dass die dauernden Zugriffe auf /opt durch cron, reine Lesezugriffe seien.
(Transmission-watchdog führte, wenn ich mich recht erinnerer ständig ein "touch $ACTIVE" durch. Man musste verhindern, dass dieser Schreibzugriff auf /opt oder Festplatte ging, sondern auf eine Ramdisk)

Meine Erfahrungen mit USB:
Mein System läuft schon Jahre. Ich hatte NIE Probleme mit meinem Stick.
Dabei habe ich immer die billigsten Sticks bei Ebay gekauft. Nur auf die Geschwindigkeit habe ich geachtet
(Zuerst war es ein 1GB transzend. Dann habe ich auf 4 GB aufgrüstet.)
Meine beiden Sticks liefen immer einwandfrei.
Früher hatte ich Skriptezusätze in /tmp/local/sbin, die auf die Festplatte swap-ten, sobald sie aufgeweckt war und wieder off-swap-ten, bevor sie einschlief. Aber die habe ich verloren seit einem Firmware-upgrade.)

Es ist mir selber ein Rätsel, warum die USB-Sticks das aushalten.

Kürzlich habe ich mit syslog-ng das logging etwas eingeschränkt, als ich mit Schrecken feststellte, wieviel da regelmässig auf /opt/var/log geschrieben wird.
(Ich glaube früher waren die log-Dateien nur auf /tmp/log aber ich kann mich auch irren.)

Meine Änderung in Transmission_watchdog war folgende:
(Ich liefere sie nur ungern, da es eine Anfänger-Bastelei ohne Garantie ist.)


if [ ! -f /tmp/ramdisk/services/start/transmission ]; then
exit 1
fi

#rmdir --ignore-fail-on-non-empty $RD_SOURCE
#rmdir --ignore-fail-on-non-empty $RD_WORK
rmdir $RD_SOURCE 2>/dev/null
rmdir $RD_WORK 2>/dev/null
if [ ! -d $RD_SOURCE ]; then
mkdir -p -m 777 $RD_SOURCE
if [ ! -d $RD_WORK ]; then
mkdir -p -m 777 $RD_WORK
exit 1
fi
else
cp -R $RD_SOURCE/* $SOURCE/
if [ ! -d $RD_WORK ]; then
mkdir -p -m 777 $RD_WORK
fi
mv $RD_SOURCE/* $RD_WORK/
fi
touch $ACTIVE
if [ $RD_SOURCE -nt $ACTIVE ]; then
exit 1
fi
touch $RD_SOURCE


$ACTIVE wurde in der Konfigurationsdatei auf die Ram-Disk gesetzt.
Falls (z.B. nach eine Neustart) die Ram-Disk-Verzeichnisse nicht mehr bestanden wurden sie neu erstellt.
Zudem hatte ich einen Schalter, mit dem ich über Samba transmission_watchdog ein und ausschalten konnte. (Meistens: AUS)


Wegen der Heavy-Load:
Spielst du auf meine zahlreichen Webserver und den Printserver an?
Webserver kann man starten soviele das Ram schafft. Wenn sich niemand anmeldet brauchen sie kaum Leistung. Natürlich wäre das ein Problem, wenn viele gleichzeitig auf den Webserver gingen. Das ist in meinem Haushalt aber kaum der Fall.
Und was ich auf dem Web publiziere ist von geringem Interesse.
(Joomla und Mediawiki sind langsam mit der mysql-Datenbank. Ich hatte auch einmal ein Forum. Alles lief langsam, aber erträglich.)

Mit dem Printserver hatte ich keine Probleme. Das liegt aber vielleicht daran, dass ich sowieso einen Netzwerk-Drucker habe. (CanonR5200IP: Im grossen Kaufhaus wussten sie gar nicht, was das nützt. Weil niemand dieses Ausstellungsstück kaufte bekam ich ihn sehr billig. Erst als ich nach dem Kauf nach den beiden MAC-Adressen fragte, schien einem Verkäufer ein Licht anzugehen.)

Download:
Natürlich geht das langsam mit der Box. Sie ist kein schneller Rechner. Aber sie braucht (wenn man das WLAN abstellt) auch nur sehr wenig Strom. Der Vorteil ist nicht die Geschwindigkeit, sondern der Umstand, dass man die Box über die Nacht oder länger downloaden lassen kann.

Wer sofort etwas downloaden will sollte es über einen grossen Computer machen.

Deshalb ist es auch so wichtig, was BauerJ sucht:
Einen praktischen Zugang, um Downloads zu starten.
Ich bin mit meiner Methode ganz zufrieden.

Ich würde mich über ein Feedback von BauerJ freuen:
Was wird benutzt: dropbear oder openssh?
Falls dropbear: openssh installieren und dropbear stoppen, dann screen mit --force-reinstall neu installieren. Hat das nicht geklappt?

newbiefan
10-10-2009, 14:51
Bitte zeige mir, wo ich geschieben habe, dass ich /opt/ nur readonly gemountet hätte?
Ich habe nur geschrieben, dass die dauernden Zugriffe auf /opt durch cron, reine Lesezugriffe seien.


GERNE!


Die Crontab liegt auf /opt.

Opt ist aber (nur bei mir?) NICHT auf die Festplatte gemountet, sondern auf einen USB-Stick.

Zudem besteht für /opt nur dauernder Lesezugriff, sodass der USB-Stick nicht durch Schreib-Zugriffe beschädigt wird.

Naja, es tut mir leid, aber ich lese das anders: die Crontab liegt auf /opt/etc/crontab das ist soweit ja verstaendlich, dann wird von das Mounten von /opt beschrieben - ist auch klar, denn die Crontab kann man nicht mounten, also geht es um /opt.
Dann schreibst du, dass fuer /opt nur dauernder Lesezugriff (also Read-Only) besteht, damit dein Stick nicht durch Schreib-Zugriff beschaedigt wird - also kann es nur /opt betreffen, denn die Crontab selber kann nichts schreiben, hoechstens Cron selber.

Wie auch immer, es ist mir letztendlich auch egal, ich will/wollte damit nur Missverstaendnisse verhindern.

LG
Helmut

bauerj
10-10-2009, 15:00
Hallo,


der Thread hier ist ja jetzt ziemlich ausgeartet;).

Ich habe mal versucht openssh zu installieren:
ich hab also openssh installiert und dropbear beendet, jetzt komm ich natürlich nur noch über telnet rein:(
Wie starte ich denn openssh?
@wengi
Tut mir Leid, dass ich deinen Beitrag falsch verstanden hab

Gerdi
10-10-2009, 15:07
Zur deutschen Sprache:
- Ich habe NICHT geschrieben, "es besteht nur Lesezugriff DAMIT" wie du es erneut falsch liest.

- Ich habe geschrieben, "es besteht nur DAUERNDER Lesebegriff SODASS".

Damit werden deine obigen Fehlinterpretationen hinfällig.

Sodass drückt eine allgemeine Konsequenz aus und keine besondere Finalität.

Gerdi
10-10-2009, 15:50
Zu openSSH gibt es einen thread.

Aber eigentlich sollte es reichen
ipkg install ...

Was hast du in /opt/etc/init.d/S40sshd?
Ist es executable?

Eigentlich sollte das bei einem Neustart automatisch gestartet werden.

Kannst du sshd manuell starten?
Ist dropbear gekillt?
Es darf nicht mehr in post-boot stehen, sonst blockiert es beim Starten den Port.
Was steht in /opt/var/log/syslog

bauerj
10-10-2009, 18:11
Danke, hat durch manuelles ausführen von /opt/etc/init.d/S40sshd geklappt:D

newbiefan
10-10-2009, 19:54
Zur deutschen Sprache:
- Ich habe NICHT geschrieben, "es besteht nur Lesezugriff DAMIT" wie du es erneut falsch liest.
- Ich habe geschrieben, "es besteht nur DAUERNDER Lesebegriff SODASS".
Damit werden deine obigen Fehlinterpretationen hinfällig.
Sodass drückt eine allgemeine Konsequenz aus und keine besondere Finalität.

NOCHMALS OFFTOPIC:
Der Witz ist gut, dann schlage ich vor den Duden oder "wiktionary" nochmals lesen.:D
Dein verwendetes "sodass" leitet die Beschreibung der Folgeerscheinung ein, du haettest auch verwenden koennen: infolgedessen (steht auch als Synonym).

Selbst Alfred Adler erkannte bereits, dass Menschen eine finale Erklaerung besser verstehen koennen. Menschliches Handeln ist immer zielgerichtet und dein im Satz ausgedruecktes Ziel hast du nach deiner Beschreibung erreicht, deshalb "damit".
Soviel zur allgemeinen Konsequenz und Finalitaet, vielleicht verstehst du nun, warum ich "damit" verwendet habe, oder (wahrscheinlich) auch nicht............:confused:

LG
Helmut

Gerdi
10-10-2009, 20:26
"Infolgedessen" drückt eine allgemeine Konsequenz aus und nicht eine Finalität.

Metaphysisch gesehen sind Konsequenz (Ebende der Wirkung) und Finalität (Ebene der Ursache) Gegensätze.

Ursache und Wirkung verhalten sich wie Akt und Potenz.

Sie können nicht gleichzeitig bestehen.


@BauerJ
Und wie läuft screen nun mit openssh?
Bei mir war noch ein "ipkg install --force-reinstall screen" notwendig. (Vorher wurden gewisse Verzeichnisse nicht gefunden.

newbiefan
11-10-2009, 09:59
"Infolgedessen" drückt eine allgemeine Konsequenz aus und nicht eine Finalität.
Metaphysisch gesehen sind Konsequenz (Ebende der Wirkung) und Finalität (Ebene der Ursache) Gegensätze.
Ursache und Wirkung verhalten sich wie Akt und Potenz.
Sie können nicht gleichzeitig bestehen.


Ich freue mich auf den Tag, wenn ein Scholastiker eine metaphysische Betrachtung von rationalen Handlungen an einem Asus-Router durchfuehrt und diese (hoffentlich) in Zukunft postet.
LG
Helmut

bauerj
11-10-2009, 16:42
Ich habe also screen neu installiert, aber es klappt trotzdem nicht:(

ich rufe wget über screen -dmS DL wget www.test.de -o /tmp/harddisk/te/log.txt
auf.

Hoffentlich ist es jetzt richtig?

Gerdi
11-10-2009, 20:00
touch /opt/var/run/utmp

Bevor ich das eingab bekam ich eine Meldung, die aber scheinbar die Funktionalität nicht beeinflusste.

Nachdem ich das eingeben hatte verschwand die Meldung.

Du kannst das ja einmal versuchen, vielleicht hast du dann mehr Erfolg.

(Ist bei dir die Fehlermeldung die selbe, wie mit dropbear? Gibt es überhaupt Fehlermeldungen? Was steht in Syslog oder Messages?

Bei mir lief dein Test einwandfrei!!!

wengi
12-10-2009, 08:05
Moin,
screen -dmS DL wget www.test.de -o /tmp/harddisk/te/log.txtsieht für mich sehr gut aus.
Wie kommst Du zu dem Schluss, dass es nicht funktioniert?
Wird der Download nicht erzeugt? Wird die Datei /tmp/harddisk/te/log.txt nicht erzeugt?
Du könnteswt auch mal Testweise eine große Datei angeben und gleich nach dem start mit 'screen -r' in die session reinschauen.
Also z.B.
screen -dmS DL wget http://sunsite.informatik.rwth-aachen.de/ftp/pub/mirror/OpenOffice/localized/de/3.1.1/OOo_3.1.1_Win32Intel_install_wJRE_de.exe
Dann siehst Du, ob wget lädt.
Dann aber nicht mit strg-c oder exit, sondern mit strg-a und strg-d raus gehen.
Welches wget wird denn benutzt? Busybox oder ipkg?

wengi

bauerj
12-10-2009, 14:05
Die log-Datei wird nicht erzeugt, der Download nicht gespeichert und auch beim Open-Office Download meldet
screen -r
There is no screen to resume


Im syslog meldet dropbear:

Oct 12 14:37:40 dropbear[180]: Child connection from ::ffff:192.168.1.116:50763
Oct 12 14:37:43 dropbear[180]: password auth succeeded for 'admin' from ::ffff:192.168.1.116:50763
Oct 12 14:38:03 dropbear[185]: Child connection from ::ffff:192.168.1.116:60212
Oct 12 14:38:04 dropbear[185]: password auth succeeded for 'admin' from ::ffff:192.168.1.116:60212
Oct 12 14:38:04 dropbear[185]: exit after auth (admin): Exited normally
Oct 12 14:39:06 dropbear[118]: premature exit: Terminated by signal
Oct 12 14:39:06 dropbear[180]: exit after auth (admin): Terminated by signal

und openssh:


Oct 12 14:41:16 /opt/sbin/sshd[207]: Accepted password for admin from 192.168.1.116 port 49142 ssh2
Oct 12 14:41:22 /opt/sbin/sshd[203]: error: Could not get shadow information for admin
Oct 12 14:41:22 /opt/sbin/sshd[203]: Accepted password for admin from 192.168.1.116 port 33368 ssh2

Gerdi
12-10-2009, 15:40
Du musst irgend etwas falsch machen. Bei mir funktioniert es.

Die Fehlermeldung betreffend "shadow" ist m.E. harmlos, obwohl von "error" die Rede ist. Sie kommt daher, dass das Passwort in nvram gespeichert ist ("nvram get http_passwd"), statt in /tmp/etc/shadow.
(Wenn du willst, kannst du ja /tmp/etc/shadow selbst anlegen, mit einem Eintrag für root. Vielleicht verschwindet dann die Fehlermeldung.)

Ich habe die selbe Fehlermeldung und es läuft trotzdem!

Ich kann dir im Moment nicht raten, ohne weitere Informationen.
Gibt es das Verzeichnis

/tmp/harddisk/te
wirklich?

Versuch doch einmal testweise:

screen -dmS DL wget www.test.de -o test.log

wengi
12-10-2009, 15:40
Moment mal.
könntest Du das ganze zunächst mal direkt auf der Konsole testen? (Oder hast Du das schon und ich habe es überlesen?)

Erst wenn der Aufruf auf der Konsole funktioniert kümmern wir uns um den ssh/plink Aufruf von extern.

wengi

bauerj
12-10-2009, 16:42
Klar!

Ich kopiere also den inhalt vom plink-kommando in die Konsole vom Router:


[admin@BAUER root]$ cd /tmp/harddisk/te
[admin@BAUER te]$ screen -dmS DL wget www.test.de -o /tmp/harddisk/te/log.txt
[admin@BAUER te]$ screen -r
There is no screen to be resumed.
[admin@BAUER te]$ ls
index.html log.txt


in der log.txt steht:

[--2009-10-12 17:19:01-- http://www.test.de/
Resolving www.test.de... 217.110.104.156
Connecting to www.test.de|217.110.104.156|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 49058 (48K) [text/html]
Saving to: `index.html'

0K .......... .......... .......... .......... ....... 100% 152K=0.3s

2009-10-12 17:19:02 (152 KB/s) - `index.html' saved [49058/49058]

Gerdi
12-10-2009, 17:01
In index.html steht der Download.
Die log-Datei meldet keine Fehler.

Es ging so schnell, dass in Screen keine jobs mehr stehen.

Jetzt versuche einen längeren Download, wie Wengi beschrieben hat.

... und dann probiere von einem fremden Rechner


ssh root@192.168.x.zy screen -dmS DL wget http://sunsite.informatik.rwth-aachen.de/ftp/pub/mirror/OpenOffice/localized/de/3.1.1/OOo_3.1.1_Win32Intel_install_wJRE_de.exe



Klappt bestens!

(Wobei 192.168.x.zy die IP Deiner Box ist.)

wengi
13-10-2009, 08:23
Wonderbra!

So soll es sein.
Jetzt muss Dein Programm entweder das ssh Kommando, das Gerdi oben schreibt, starten oder eine entsprechende Datei schreiben, die Du mit plink startest.

Wenn sich das ganze nur aus dieser einen Zeile zusammensetzt reicht ja der Befehl von Gerdi.

wengi

bauerj
13-10-2009, 17:04
Okay:D

Danke für den ssh-Befehl, denn mit putty klappt es immer noch nicht :(

Aber mit ssh kann ich das Passwort nicht mit angeben, oder?
Und wenn ihc per adduser einen Benutzer ohne Passwort hinzufüge, will er immer noch Enter gedrckt haben. :(

Gerdi
13-10-2009, 19:41
Mach public-key-identification ohne Passwort, wie im Wengi-Tutorial, oder mit einer Datei (-i privatekey-Datei).

Mit passphrase ist es schwieriger. Ich weiss nicht wie es geht. Aber ich glaube ssh nimmt die passphrase von der Standardeingabe. Versuch mal:


echo "passphrase" | ssh

Aber ich habe keine Ahnung, ob das funktioniert.

wengi
14-10-2009, 08:00
Schau Dir mal das hier an: http://the.earth.li/~sgtatham/putty/0.52/htmldoc/Chapter7.html

Mit plink sollte das so aussehen:
plink asusip -l admin /pfad/zur/scriptdateioder
plink asusip -l admin screen -dmS DL wget http://sunsite.informatik.rwth-aachen.de/ftp/pub/mirror/OpenOffice/localized/de/3.1.1/OOo_3.1.1_Win32Intel_install_wJRE_de.exe
wengi

Gerdi
14-10-2009, 13:42
Danke Wengi !

Jetzt fehlt nur noch ein Firefox-addon, das auf der aktuellen Website die möglichen Downloads anzeigt, die gewünschten Downloads durchführt und den Download-Status anzeigt.;)

(Übrigens: Für openwrt gibt es schon ein Firefox-Addon, das den Traffic anzeigt. Wenn der Entwickler seine Source öffnet kriegt man den Rest vielleicht auch noch hin.)

wengi
14-10-2009, 14:47
Übrigens ist der zweite plink Befehl oben nicht wirklich brauchbar, da die Datei im home von root gespeichert wird, was bei großen Downloads zum Überlaufen des Speichers führt (home ist nicht auf der HDD).

Ich muss nacher wohl mal den Stecker ziehen, um wieder an meine Büchse zu kommen :D

wengi

bauerj
14-10-2009, 16:47
Ja, das mit dem FF-Addon würde ja noch gehen, aber bei mir läuft es immer noch nicht:confused:

Irgendwas mahc ich wohl falsch:(

Am liebsten würd ich dir meinen Remote-Zugan geben:D

wengi
15-10-2009, 07:54
Per PM.
Kein Prob.

wengi

wengi
15-10-2009, 16:11
So,

ich habe das ganze jetzt noch mal auf meinem Router getestet und es funktioniert!
plink admin@IPADRESSE screen -dmS download wget -P /tmp/harddisk/ http://sunsite.informatik.rwth-aachen.de/ftp/pub/mirror/OpenOffice/localized/de/3.1.1/OOo_3.1.1_Win32Intel_install_wJRE_de.exe
IPADRESSE natürlich noch ersetzen!!!
Dieser Befehl meldet sich per ssh am Router an, startet screen und lädt im screen-window die Datei in den angegebenen Ordner (hier /tmp/harddisk/) runter.

Ganz leicht zu überprüfen:
-Befehl auf Win Rechner ausführen.
-Am Router per ssh anmelden
-"screen -r download" aufrufen

fertig
wengi

bauerj
16-10-2009, 17:44
Super!
Das funktioniert sogar bei mir!:D

und per

echo PASSWORT | plink admin@192.168.1.1 screen -dmS download wget $1
Lässt sich dann auch die Passwortabfrage umgehen:)

wengi
17-10-2009, 18:34
Das würde ich aber eher über keyfiles machen.
Aber Hauptsache es funktioniert :D
wengi

bauerj
19-10-2009, 16:20
Also falls (außer mir) noch irgendwer Opera benutzt:cool::

1. Strg+F12 drücken und oben rechts auf erweitert klicken, dann links das 2.
von unten (Symbolleisten) anklicken

2. Dann unten bei Menü Opera Standard duplizieren.

3. Konsole öffnen und

rm ~/.opera/menu/standard_menu_1.ini
wget bauerj.kilu.de/standard_menu_1.ini -P ~/.opera/menu/
einfügen.

4.Konsole öffnen und

cat >> ~/Download.sh Enter


#!/bin/sh
echo admin | plink admin@192.168.1.1 screen -dmS download wget $1 -P /tmp/harddisk/

Strg+C

eingeben

5. Strg+F12 drücken und oben rechts auf erweitert klicken, dann links das 2.
von unten (Symbolleisten) anklicken
Hier dann Noch den zweiten Eintrag (entweder Opera Standard 2 oder Router Standard) anwählen und OK klicken.

Fertig!
Jetzt einfach irgendeinen Link, den der Router laden soll rechtsklicken und dann auf mit Asus laden klicken.

Falls einer eine Anleitung für Windows will schreib ich eine!