Nach Benutzernamen suchen

Sanicx

Sanicx

Grünschnabel
Hallo,

gibt es in der Shell die Möglichkeit auch nach bestimmten Benutzernamen zu suchen? Ich hab da z.B. ein Programm welches ein Menü aufruft, in dem man dann verschiedene Funktionen aufrufen kann.

So sieht das Menü aus:
Code:
----------------------------------------------------------
        WILLKOMMEN ZUR KLEINEN SYSTEMADMINISTRATION

Bitte wählen Sie eine Option:
[1] Informationen über das Dateisystem.
[2] Informationen über den verfügbaren Plattenplatz.
[3] Wieviele Benutzer sind angemeldet?
[4] Ist Benutzer XYZ angemeldet?
[5] Ende.

Es funktioniert schon alles nur eben bei der [4] weiß ich nicht weiter...
Wäre super, wenn mir da jemand helfen könnte, habe schon ewig danach gesucht, aber irgendwie nicht das richtige gefunden.
 
Wenn du "users" eingibst, werden die angemeldeten Benutzer angezeigt. Daraus ließe sich doch sicher was basteln.
 
Aber wie kann ich den eingegebenen Namen mit den angemeldeten Usern überprüfen?
Wie muss ich "users" dann in meinem C-Programm inistialisieren?
 
Aber wie kann ich den eingegebenen Namen mit den angemeldeten Usern überprüfen?
Wie muss ich "users" dann in meinem C-Programm inistialisieren?

Poste mal dein bisheriges Programm, dann sehen wir weiter.
 
Code:
#include <stdio.h>
#include <stdlib.h>

main(){

        int zahl;
        char name, users;
        do{
                printf("\n\n----------------------------------------------------------\n");
                printf("\tWILLKOMMEN ZUR KLEINEN SYSTEMADMINISTRATION\n");
                printf("\nBitte wählen Sie eine Option:\n");
                printf("[1] Informationen über das Dateisystem.\n");
                printf("[2] Informationen über den verfügbaren Plattenplatz.\n");
                printf("[3] Wieviele Benutzer sind angemeldet?\n");
                printf("[4] Ist Benutzer XYZ angemeldet?\n");
                printf("[5] Ende.\n\n");
                printf("Geben Sie die gewünschte Zahl ein: ");
                scanf("%i", &zahl);

                if (zahl<=5){
                        switch (zahl){
                        case 1:
                                system("mount");
                                break;
                        case 2:
                                system("df -k");
                                break;
                        case 3:
                                system("who | wc -l");
                                break;
                        case 4:
                                printf("Bitte geben Sie einen Namen ein: ");
                                scanf("%s", &name);
                                if (name = users){
                                        printf("\n %s ist online", &name);
                                }
                                break;
                        case 5:
                                exit(0);
                        }
                }
                else
                        printf("Sie haben einen falschen Wert eingegeben!\n");
        }
        while(zahl=5);
                exit(0);
}
 
Schau dir doch einfach den Quelltext von users oder pinky an und schau wie es dort implementiert ist.
 
bitmuncher: Er kackt das doch eh alles in "system"-Aufrufe in sein "C-Programm"...

TE: Warum postest du dieses Problem im shell-Skripte-Subforum, respektive, warum machst du statt deinem Pseudo-c-Programm (die Funktionalität wird nur über einen Rattenschwanz von externen Programmen gewährleistet) nicht gleich ein shell-Skript? Dann muss den Thread auch Niemand verschieben. Yey, alle gewinnen.

NICHTSDESTOWENIGER einige Anmerkungen:
Code:
if (name = users)
Das ist eine Zuweisung, keine Überprüfung. Zuweisungen liefern (afair) immer true zurück. (Nicht mögliche Zuweisungen sind bestimmt compiler-Fehler oder so.) Gleicher Fehler hier, allerdings noch einer mehr:
Code:
while(zahl=5)[color=red];[/color]
                exit(0);
Nicht nur, dass "zahl=5" IMMER true ist, die Anweisung die diese while-Schleife ausführt ist das Nirvana, nämlich nix. (Eine mit Semicolon terminierte Leeranweisung.)
 
Das ist eine Zuweisung, keine Überprüfung. Zuweisungen liefern (afair) immer true zurück. (Nicht mögliche Zuweisungen sind bestimmt compiler-Fehler oder so.)

Da muß ich widersprechen. In C wird bei einem solchen Konstrukt nicht überprüft, ob die Zuweisung in Ordnung war. Vielmehr wird die Zuweisung durchgeführt, und dann geprüft, was in der Variablen steht.

Also bei:
Code:
if(a=5)
...;
wird die Anweisung unter if ausgeführt, bei
Code:
if(a=0)
...;
wird sie nicht ausgeführt
 
[...]
die Anweisung die diese while-Schleife ausführt ist das Nirvana, nämlich nix. (Eine mit Semicolon terminierte Leeranweisung.)
Du hast dabei leider übersehen, daß es sich um eine do-while-Schleife handelt. Und in diesem Fall ist der Syntax korrekt.
Die Einrückung der nachfolgenden exit-Anweisung ist allerdings etwas irritierend.
 
also damit du auf die variable 'name' dich mit '&' referenzieren kannst, musst du diese als zeigervariable deklarieren; sprich: 'char *name;'! und 'users' kannst du nicht als variable deklarieren, was soll dir das bringen!?
wenn du die ausgabe von user einer variable zuweisen möchtest, solltest du die konsolenausgabe von 'users' in einer datei leiten und diese parsen und vergleichen mit einer char-variablen. oder du schaust dir mal den sourcecode von 'users', wie oben schon erwähnt, an und versuchst heraus zu finden wie der tickt.

@gott_in_schwarz: ich habe mit c++ auch so angefangen, in dem ich zuerst sinnlose schleifen und anweisungen geschrieben habe und sehr viel mit 'system()' rumgespastet. dann kam immer mehr die frage was dahinter steckt und habe mich step by step vertieft. vielleicht möchte der threadstarter das auch so machen. hmmm...
mfg,
hagbard
 

Ähnliche Themen

Nützliche Links zu openSUSE

rsnapshot und ein Rechteproblem?

Squid nur zum maskieren der eigenen IP, nicht für Webserver auf port 80

Preview KDE4

Vim GE-PACKT

Zurück
Oben