2016-04-25 5 views
1

Mein Programm soll 100 Benutzer und Passwörter hinzufügen. Allerdings habe ich Schwierigkeiten (ich werde die Ausgabe und die Eingabedatei auch posten). Was passieren soll, ist, dass ein Benutzername aus der Datei genommen wird und auch das Passwort (es ist von ihrer ID-Nummer). Das Format wäre wie Benutzer: jacob password: se-123456. Es scheint jedoch, dass der Benutzer nicht existiert. Hier ist mein Programm:Wie Benutzer hinzufügen und löschen von Eingabedatei zu Linux-System?

#include <iostream> 
#include <cstdlib> 
#include <string> 
#include <sstream> 
using namespace std; 
int main() 
{ 
cout << "Hello world." << endl; 
//system("mkdir user1"); 
string anyCommand="", name, userpassword; 
ifstream myfile ("userNames1000.txt"); 
if (myfile.is_open()) 
    //code to open a file 
{ 
    while (getline (myfile,anyCommand)) 
    { 
    for(int i = 0; i <= 100; i++) 
      { 

     stringstream temp; 
     temp << i; 
     name = "user"; 
     name += temp.str(); 

     //useradd vs. userdel 
     anyCommand = "useradd " + name; 

     cout << anyCommand << endl; 
     //system(anyCommand.c_str()); 

     anyCommand = ""; 
     userpassword = "se- " ; 

     //set the command, e.g., system("echo john:se-2014 |chpasswd"); 
     anyCommand = "echo " + name + ":" + userpassword + " |chpasswd"; 
     cout << anyCommand << endl; 
     system(anyCommand.c_str()); 

     } 

     myfile.close(); 

     } 


    }  
    else cout << "Unable to open file"; 

    return 0; 


} 

ist hier was los ist, wenn ich das Programm ausführen:

Hello World 
    useradd user0 
    echo user0:se- | chpasswd 
    chpasswd: line 1: user 'user0' does not exist 
    chpasswd: error detected, changes ignored 
    useradd user1 
    echo user1:se- | chpasswd 
    chpasswd: line 1: user 'user1' does not exist 
    chpasswd: error detected, changes ignored 
    useradd user2 
    echo user2:se- | chpasswd 
    chpasswd: line 1: user 'user2' does not exist 
    chpasswd: error detected, changes ignored 

Dann geht es weiter, bis es 100 erreicht; der gleiche Fehler geht weiter. Ich habe das Gefühl, dass ich in die richtige Richtung gehe, ich brauche nur etwas Hilfe bei dem, was ich reparieren muss.

Hier ist ein Beispiel dafür, was in der Eingabedatei steht.

Mary:20153 

Lindsey:19396 

Ashley:17151 

Jason:16861 
+0

Wie das Protokoll sagt, Sie versuchen, das Passwort für Benutzer, die nicht existierten, zu ändern, sollten Sie [useradd] (http://linux.die.net/man/8/useradd) verwenden, wenn Sie tatsächlich neue hinzufügen möchten Benutzer –

Antwort

0

kommentiert eine wichtige Linie aus (wie im Kommentar von A.Flaischer erwähnt):

anyCommand = "useradd " + name; 

cout << anyCommand << endl; 
//system(anyCommand.c_str()); 

Ihr Programm auf der anderen Seite scheint nicht zu tun, was Sie denken, es sollte. Es funktioniert von Benutzer0 bis Benutzer99, aber Sie erwähnten die Beispiel-Eingabedatei. Diese Eingabedatei wird nicht korrekt verarbeitet.

Da C++ Ihre bevorzugte Sprache ist, ist ein Shell-Skript der einfachste Weg, um Ihre Aufgabe zu erfüllen.