Software > Programmieren, Kompilieren
uname mit geheimnisvollem Schalter
(1/1)
erisch:
Hallo
Ich mach grad ein CGI Script in C, womit ich dann mit dem Browser meinen Server steuern kann.
Mit dabei ist auch eine Sektion, die die Systeminfos anzeigt. Um das zu realisieren, nutz ich den "uname" Befehl aus dem Header "utsname.h".
Leider fehlen dieser Struktur, die uname ausspuckt und wo die ganzen Systeminfos drinstehen, ein paar Infos, wie zum Beispiel Prozessor und Hardwaretyp.
Den Prozessor muss ich anders auslesen, das weiß ich und es klappt auch. Nur wo ich den Hardwaretyp herkriege ist mir schleierhaft.
Der Shellbefehl "uname" kennt den Schalter "-i" für Hardware Implementation. Der liefert dann auf meiner SS5 folgendes: "SUNW,SPARCstation-5"
Bei meinem Solaris 7 steht der Schalter auch noch im Man-File, allerdings verschwindet der Schalter in den Man-Files von Linux.
Bei meinem Fedora Linux zum Beispiel steht er nicht drin, funktioniert aber trotzdem, zeigt dann bei mir "athlon" an.
Also hab ich mir die Sourcen von den "shellutils" besorgt um zu sehen wie die das auslesen. Dort ist aber der Schalter "-i" nicht implementiert, obwohl es die aktuellste Version ist.
Bei den neueren Solaris Versionen scheint es wohl mit drin zu sein, aber da werd ich wohl kaum den Quellcode rankriegen.
Also kann mir jemand sagen, wie ich diese Info herzaubern kann oder hat jemand ne Source von "uname" die "-i" enthält?
Mfg. Erisch
hplehner:
Hallo Erisch,
ich habe zwar von den C Fummeleien keine Ahnung, laber hier einfach mal a bisserl ;D
Unter Suse 9 auf meinem Athlon bringt uname -i lediglich "i386". In der Man Page ist folgendes zu lesen:
-i, --hardware-platform
print the hardware platform
Unter Solaris ist der Befehl auch nicht recht genau, da er z.B. nicht zwischen einer
Ultra 5 oder Ultra 10 unterscheiden kann.
Zugegeben, das ist wirklich schwierig, wenn keine Graka drin fast unmöglich.
Auch bei anderen Kisten ist die Erkennung nicht so einfach.
Hier in Solaris ein guter Weg:
/usr/platform/`uname -i`/sbin/prtdiag -v
Da krigt man viel über die SUN Hardware raus.
Das ganze hilft dir aber leider nur auf Solaris und dort auch nicht unter C.
Zurück zum uname. Den gibts unter Solaris/Linux auch als Systemcall.
Guckst du "man -s 2 uname"
Auch "sysinfo" gibt es auf beiden Plattformen. Schau dir auch mal sysconf an.
Die Manpages geben da noch einiges an Verweisen her.
Ich hoffe das hilft.
Hans-Peter
erisch:
Ja, der Systemcall funzt ja so. Nur ist es blöd mit C den Systemcall zu nutzen, weil ich dessen Ausgabe in ne Datei umlenken, dann diese Datei auslesen und dann die gsuchte Info rausfiltern muss - umständlich.
Mit den anderen Möglichkeiten, muss ich mal testen. Das Teil soll ja auch nur unter Solaris laufen.
Mfg. Erisch
Navigation
[0] Themen-Index
Zur normalen Ansicht wechseln