Aufgabe als Shellscript loesen
Norbert
- programmiertechnik
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:
Gruss und Dank
Norbert
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,
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
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
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,
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
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,
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