Norbert: Aufgabe als Shellscript loesen

Hi,

wenn man am Prompt unter Linux nachfolgende Zeile eintippt, bekommt man die anderen Zeilen zurueck:

$ telnet ntp1.fau.de 37
Trying 131.188.3.221...
Connected to ntp1-rz.rrze.uni-erlangen.de.
Escape character is '^]'.
ƾ?ÚConnection closed by foreign host.

Davon kann man, bis auf die ersten vier Bytes der letztwen Zeile alles wegwerfen.
Die Bytes muessen einzeln verarbeitet werden und ergeben dann einen Timestamp,
der die aktuelle Zeit beinhaltet.
ABER:

  • wie bekomme ich diese Bytes in vier Variable ?
  • und wo steht, wie man dann weiter damit umgeht ?

Gruss und Dank
Norbert

  1. Hi,

    Die Bytes muessen einzeln verarbeitet werden und ergeben dann einen Timestamp,
    der die aktuelle Zeit beinhaltet.
    ABER:

    • wie bekomme ich diese Bytes in vier Variable ?
    • und wo steht, wie man dann weiter damit umgeht ?

    Google mit "ntp protocol 4 bytes 37" gefuettert, fuehrt als 1. Hit zu http://www.jfranken.de/homepages/johannes/vortraege/ntpd.de.html ... und da er das alles in der shell macht, koennte es vielleicht weiterhelfen ;-)

    ... aber warum habe ich den Eindruck, dass es hier um so etwas wie  Hausaufgaben geht? ;-)

    Gruss & HTH,

    • Joerg
    1. Hi,

      ... aber warum habe ich den Eindruck, dass es hier um so etwas wie  Hausaufgaben geht? ;-)

      keine Ahnung,
      vielleicht bist Du ein misstrauischer Lehrer ... ;-)

      Selbst verwende ich fasst ausschliesslich PHP (da muss ich nicht fragen).
      Aber ein Bekannter hat kein PHP fuer den Prompt, und da fielen mir die vielen schlauen Leute dieses Forums ein.
      War das flasch ... ;-)

      Gruss und Dank
      Norbert

      1. Hi Joerg,

        wie ich schon schrieb, in PHP ist das alles kein Problem.
        Aber es soll unbedingt ein Shellscript (no Perl) werden !

        Der Link zeigt leider nur, wie man es am Prompt und von Hand macht.
        D.h. er uebertraegt die Werte mit der Hand in die naechste Zeile.
        So war das nicht gedacht ... :-((

        Gruss und Dank
        Norbert

        1. Hi,

          Aber es soll unbedingt ein Shellscript (no Perl) werden !

          Der Link zeigt leider nur, wie man es am Prompt und von Hand macht.
          D.h. er uebertraegt die Werte mit der Hand in die naechste Zeile.
          So war das nicht gedacht ... :-((

          Uhm ... ja und? In der shell kannst Du auch alles moegliche auf Variablen zuweisen und die dann weiterverwenden. Stichwort awk, sed, bc ... der Unterschied zwischen bash und php ist hier eigentlich nur die Wahl der Mittel, nicht die Moeglichkeiten ;-)

          Gruss und viel Spass,

          • Joerg
          1. Hi Joerg,

            wenn ich mir nicht sicher gewesen waere, dass das moeglich ist,
            waere ich auf ein spiritisches Forum ausgewichen ... ;-)

            Da ich kein Shellscript-Guru sondern eher Laie bin,
            hoffte ich einfach auf etwas Hilfe, die moeglicherweise
            das Hinwerfen von kryptischen Kuerzel geringfuegig uebersteigt.

            Gruss und Dank
            Norbert

            1. Hi,

              Da ich kein Shellscript-Guru sondern eher Laie bin, hoffte ich einfach auf etwas Hilfe

              Da empfehle ich http://www-128.ibm.com/developerworks/linux/library/l-bash.html ... ist ein ganz schoenes, dreiteiliges Tutorial zur bash-Programmierung (nein, ich will das Problem nicht an Deiner Stelle loesen ... ich habe keine Verwerndung fuer das Ergebnis, und Du lernst nix dabei ;-)

              die moeglicherweise das Hinwerfen von kryptischen Kuerzel geringfuegig uebersteigt.

              dann gib mal "man awk", "man sed", "man bc" ein ...

              awk oder evtl. cut = hier z.B. zum Ausschneiden einzelner Felder aus den "Antworten"

              sed = stream editor, z.B. zum Ersetzen einzelner String-Bestandteile

              bc = calculator, eben zum Rechnen ;-)

              Viel Spass & Glueck,

              • Joerg
              1. Hi Joerg,

                meine Lernmotivation ist wirklich sehr gering, weil solche Probleme nur alle drei Jahre
                auftauchen, und ich dann wieder alles von vorne lernen muesste. Da erscheint mir ein
                Forum, wo jeder jedem auf seinem Spezielgebiet hilft wesentlich effektiver.

                Nun steckt der Teufel im Detail und das sind allemal User mit Oberlehrer-Syndrom.
                Alle denken, okay hier wird schon gehelft, obwohl das leider nur begrenzt zutrifft.

                Trotzdem wurden die Hauptprobleme irgendwie geloest:
                #!/bin/bash
                myTmp=telnet ntp1.fau.de 37 2>/dev/null | od --width=1 -tu1 | tail -n5 | head -n4 | cut -d \  -f 2- | tr "\n" " "
                declare -a ARR=($myTmp)
                for x in 0 1 2 3; do
                    echo "$x:[${ARR[$x]}]"
                done

                Der Rest ist dann ohne Hilfe loesbar,
                auch wenn in der ersten Zeile noch ein
                halbes Dutzend Fragen offen bleiben ...

                Gruss und Dank
                Norbert