Benötige Hilfe und Doc`s für ein Script mit TFTP

  • Hi, VDR-Gemeinde


    Vorweg ich bin kein Programierer und habe sowas auch noch nicht großartig gemacht (außer html)


    Was habe ich vor:


    Ich benötige ein Script für meinen Router um ihn zu Flash, wenn mal was daneben gegangen ist.
    Im Grunde geht es ja über das WebInterface, aber Leute die den WRT54g kennen, wissen das die letzte Lösung ein TFTP-Flash ist.


    Was soll es können:


    Als erstes ein Flash-Image ausgewählt werden können, dann soll solage gepingt werden, bis der Router erreichbar ist, dann soll eine TFTP Verbindung zu 192.168.1.1 aufgebaut werden und dann das Image per "put Image.bin" übertragen werden.


    Was das soll:


    Mein Router steht bissel weiter weg und ich möchte ihn nicht immer abmontieren um ihm wiederzubeleben, daher möchte ich ihn vom Strom trennen, das script starten und ihn wieder an den Strom hängen, den Rest soll das Script erledigen.



    Wer kann mir Helfen, oder Tips geben?!?





    Mfg SVen

  • Zitat

    Original von s.krueger
    Als erstes ein Flash-Image ausgewählt werden können, dann soll solage gepingt werden, bis der Router erreichbar ist, dann soll eine TFTP Verbindung zu 192.168.1.1 aufgebaut werden und dann das Image per "put Image.bin" übertragen werden.


    Code
    ip=192.168.1.1 
    filename=image.bin
    rc=1
    while [ $rc -eq 1 ]
    do
        ping -c1 $ip
        rc=$?
    done
    tftp $ip -c put $filename

    VDR1 : PIII - 550 Mhz - 256MB - 160 GB + 250 GB - DVD Brenner - 2 * DVB-S Budget - DXR3 - Etch + e-tobi
    VDR2 : PII - 233 Mhz - 256MB - diskless - DXR3 - c't VDR5 + e-tobi
    VDR3 : S100 - zendeb

    Einmal editiert, zuletzt von svkn ()

  • Hi,


    Was so einfach ist das?


    Danke dir, werde ich mal Testen.


    Ähm, kannst du auch mal dazu schreiben, welche Funktion für was zuständig ist, weil ich möchte das Lernen und eventuell auch bissel erweitern.


    Nochmals Dankeschön




    Mfg SVen


  • Du kannst z.B. in die Schleife noch einen Zähler legen damit auch irgendwann das script mal beendet wird. Hier würde er nie rauskommen wen der Rechner nicht ereichbar ist.


    Ich hoffe das das so funktioniert. Ausprobiert habe ich das natürlich nicht.


    Gruss Sven

    VDR1 : PIII - 550 Mhz - 256MB - 160 GB + 250 GB - DVD Brenner - 2 * DVB-S Budget - DXR3 - Etch + e-tobi
    VDR2 : PII - 233 Mhz - 256MB - diskless - DXR3 - c't VDR5 + e-tobi
    VDR3 : S100 - zendeb

    Einmal editiert, zuletzt von svkn ()

  • Zitat

    Du kannst z.B. in die Schleife noch einen Zähler legen damit auch irgendwann das script mal beendet wird. Hier würde er nie rauskommen wen der Rechner nicht ereichbar ist.


    Das ist eine sehr gute Idee, weil ich hab das mal laufen lassen mit einer falschen IP und strg+c half nicht das Script zu beenden! Aber wo müßte das dann eingebaut werden? Sorry wenn ich Frage, aber ich habe leider keine Ahnung davon.


    Ich habe auch schon versucht eine Abfrage ein zu bauen am Anfang, sowas wie:
    "Soll der Router wirklich geflasht werden JA/NEIN, dann jetzt den Router Stromlos machen und dann OK Drücken und den Router wieder Einstecken"


    Weil ich wollte das Script auch meinem Kumpel geben. Hatte auch schon bissel mit Dialog experimentiert, aber wollte nicht, würde auch reichen wenn die Warnung in der Konsole erscheint.


    Danke dir für deinen Hilfe



    Mfg SVen


  • dann bastel das noch in das script.


    Gruss Sven

    VDR1 : PIII - 550 Mhz - 256MB - 160 GB + 250 GB - DVD Brenner - 2 * DVB-S Budget - DXR3 - Etch + e-tobi
    VDR2 : PII - 233 Mhz - 256MB - diskless - DXR3 - c't VDR5 + e-tobi
    VDR3 : S100 - zendeb

  • Hi,


    Hab es nach meinen bedürfnissen angepasst bekommen, danke dir nochmals!


    Aber bei der Abfrage JA/NEIN, wenn man nix eingibt, läuft das Script weiter durch, so wie du es mir gegeben hast, gibt zwar eine Fehlermeldung aus:

    Code
    [: !=: unary operator expected


    aber macht trotzdem weiter, das ist nich so gut! Udn ich weiß auch nicht was man da machen kann!?



    Mfg SVen


    /edit
    auch und ist es machbar, das man ein flash.bin auswählen kann? Weil dann währe das Scrip t perfekt


    Monentan hab ich das Teil so angebasst:


    edit/

  • bastel das mal in dein script. Hier muss jetzt bei dem read etwas eingegebne werden.

    Code
    yes=""
    while [ -z $yes ]
    do
      read -a yes -p "Soll der Router wirklich geflasht werden JA/NEIN ? "
    done


    Zitat


    auch und ist es machbar, das man ein flash.bin auswählen kann? Weil dann währe das Scrip t perfekt


    bastel einfach bei dem image= ein read drumherum.


    Gruss Sven

    VDR1 : PIII - 550 Mhz - 256MB - 160 GB + 250 GB - DVD Brenner - 2 * DVB-S Budget - DXR3 - Etch + e-tobi
    VDR2 : PII - 233 Mhz - 256MB - diskless - DXR3 - c't VDR5 + e-tobi
    VDR3 : S100 - zendeb

    2 Mal editiert, zuletzt von svkn ()

  • Danke dir nochmals für deine Hilfe


    Eine Bitte noch, könntest du das mal durchgucken, ob ich das so lassen kann, oder ob ich da Fehler drinn habe!?



    Mfg SVen

  • Am Anfang solltest Du yes="" setzten.


    und was soll das ?


    wen dann musst du den Returncode NACH der Ausführung von tftp abfragen.
    Allerdings kenne ich nicht die Returncodes von tftp. aber die kannst du ja einfach mal per Script abfragen. Mach eine tftp und frage danach die Variable $? ab.


    Gruss Sven

    VDR1 : PIII - 550 Mhz - 256MB - 160 GB + 250 GB - DVD Brenner - 2 * DVB-S Budget - DXR3 - Etch + e-tobi
    VDR2 : PII - 233 Mhz - 256MB - diskless - DXR3 - c't VDR5 + e-tobi
    VDR3 : S100 - zendeb

  • Zitat

    Original von svkn
    Am Anfang solltest Du yes="" setzten.


    Hm... damit konnte ich nix anfangen, baue ich aber ein!


    Zitat

    und was soll das ?


    wen dann musst du den Returncode NACH der Ausführung von tftp abfragen.
    Allerdings kenne ich nicht die Returncodes von tftp. aber die kannst du ja einfach mal per Script abfragen. Mach eine tftp und frage danach die Variable $? ab.


    Erschlage mich nicht, aber ich habe nur versucht eine Abfrage mit ein zu bauen ob das *.bin auch angekommenn ist!
    TFTP meldet timeout wenn es fehl geschlagen ist und ich bekomme dann auch meine eingebaute Meldung, abso denek ich hab ich das richtig gemacht?!?
    Oder wie kann ich das besser machen?!


    Mfg SVen

  • Zitat

    Original von s.krueger
    Erschlage mich nicht, aber ich habe nur versucht eine Abfrage mit ein zu bauen ob das *.bin auch angekommenn ist!
    TFTP meldet timeout wenn es fehl geschlagen ist und ich bekomme dann auch meine eingebaute Meldung, abso denek ich hab ich das richtig gemacht?!?
    Oder wie kann ich das besser machen?!


    Mfg SVen


    naja so kann das aber nix werden. Du setzt rc1=1 und fragst danach ab ob rc1=1 ist.

    Code
    tftp_msg=`tftp $server -c put $image`;
    if [ "$tftp_msg" == "" ]; then
       echo "alles okay"
    else
       echo "nicht alles okay"
    fi


    hier wird die ausgabe von tftp auf die Variable tftp_msg geschrieben. Danach kannst Du einfach per Vergleich überprügen ob alles okay war.


    Gruss Sven

    VDR1 : PIII - 550 Mhz - 256MB - 160 GB + 250 GB - DVD Brenner - 2 * DVB-S Budget - DXR3 - Etch + e-tobi
    VDR2 : PII - 233 Mhz - 256MB - diskless - DXR3 - c't VDR5 + e-tobi
    VDR3 : S100 - zendeb

    Einmal editiert, zuletzt von svkn ()

  • Aha, danke dir!


    Aber beim Pingen hast du doch auch mit rc=1 gearbeitet, was ist bei TFTP anderes?
    Ich frage nur, weil ich das verstehen will und auch lernen!


    Ach und gibt es im Netz auch was wo ich mich belesen kann, mit Beispielen? Wenn es geht in Deutsch, dann höre ich auf dich zu löchern :]


    Danke dir nochmal für deine Hilfe




    Mfg SVen

  • Zitat

    Original von s.krueger
    Aber beim Pingen hast du doch auch mit rc=1 gearbeitet, was ist bei TFTP anderes?
    Ich frage nur, weil ich das verstehen will und auch lernen!


    ich habe einfach mal tftp auf der komandozeile ausgeführt und danach den returncode ausgegeben. Scheinbar wird der nicht vernüftig zurückgegeben, daher die Auswertung per String.

    Zitat


    Ach und gibt es im Netz auch was wo ich mich belesen kann, mit Beispielen? Wenn es geht in Deutsch, dann höre ich auf dich zu löchern :]


    google doch mal nach bash. Im linux Magzin war mal eine ganze nette Einführung. Ich glaube 4 teilig. Ansonsten kannst du dir Startskripte von linux anschauen. Alle unter /etc. Da findet man meist auch ne Lösung.


    Falls Du noch Fragen hast muss du dich bis Montag gedulden....


    Gruss Sven

    VDR1 : PIII - 550 Mhz - 256MB - 160 GB + 250 GB - DVD Brenner - 2 * DVB-S Budget - DXR3 - Etch + e-tobi
    VDR2 : PII - 233 Mhz - 256MB - diskless - DXR3 - c't VDR5 + e-tobi
    VDR3 : S100 - zendeb

    Einmal editiert, zuletzt von svkn ()

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!