Linux-Skript zum Extrahieren von Benutzernamen aus einer Textdatei

0

Ich bin ein Anfänger in der Skripterstellung, habe jedoch eine Textdatei mit dem Namen erstellt, text.datdie nur Benutzernamen im Dateispeicherort enthält, /home/daniel/text.datund ich versuche, ein Skript mit addusers.shdem Namen dieser Textdatei auszuführen , in dem ein neues Benutzerkonto erstellt wird das System für jedes neue Benutzerkonto, das in der text.datDatei angegeben ist.

Fügen Sie für jedes erstellte Benutzerkonto einen Zeileneintrag an die /home/daniel/logs/useraccounts.logDatei an. Der Zeileneintrag enthält folgende Informationen:

hinzugefügt | <Name des Benutzerkontos> | <Tag und Uhrzeit der Erstellung>
. Das habe ich bisher:

 #! / bin / bash 
echo "cat text.dat" 
newuser = grep /home/daniel/text.dat 
sudo adduser $ newuser
Daniel Wilson
quelle
Fügen Sie diese Benutzer interaktiv hinzu (dh beantworten Sie die Eingabeaufforderungen für Benutzerinformationen) oder nicht interaktiv?
Bertieb

Antworten:

0

Wie kann ich einem Linux-System Benutzer hinzufügen, die in einer Datei aufgelistet sind?

Wenn Sie möchten, dass der Prozess vollständig automatisiert wird (z. B. über sudo ./addusers.sh), sollten Sie Folgendes tun :

#! / bin / bash
# addusers.sh - Benutzer zum System hinzufügen und ein entsprechendes Protokoll ausgeben
# als root oder über sudo ausführen

usersfile = / home / daniel / text.dat
logfile = / home / daniel / logs / useraccounts.log

während Benutzer lesen; tun
   echo "$ user hinzufügen"
   adduser --gecos "" --disabled-password $ user
   echo "hinzugefügt | $ user |` date` | " >> $ logfile
done <$ usersfile

Mit Optionen (von der adduserManpage):

--disabled-password

Like --disabled-login, but logins are still possible (for example using SSH RSA keys) but not using Passwort-Authentifizierung.

( --disabled-loginwürde wohl auch funktionieren)

--gecos GECOS

Set the gecos field for the new entry generated. adduser will not ask for finger information if this option is given.

Sie können diese Optionen adduserdeaktivieren, wenn Sie ein Kennwort und / oder Benutzerinformationen angeben möchten.

Sie können auch angeben , wie Sie das wollen , Tag und Uhrzeit der Erstellung über Optionen angegeben date, zB

$ date "+% Y-% m-% d% H% M"
2017-02-19 0330
bertieb
quelle
Vielen Dank für Ihre Antwort, meistens ging alles durch, aber als ich das Skript ausführte, stand darin: ./addusers.sh: line 7: /home/daniel/logs/useraccounts.log:Permission verweigert das Hinzufügen eines Benutzerkontos. Ich habe auch sudo vor adduser im Skript hinzugefügt. Weißt du warum das so ist?
Daniel Wilson
@DanielWilson es hört sich so an, als würde die vorhergehende Leitung done < $usersfileein Problem verursachen. obwohl es in meinem (minimalen) Beispiel funktioniert. Haben Sie überprüft, ob die Protokolldatei / das Protokollverzeichnis vorhanden ist und sinnvolle Berechtigungen hat?
Bertieb
0

Das Ereignis, das Sie protokollieren möchten, wird bereits von Linux protokolliert. Schauen Sie sich das an /var/log/auth.logund versuchen Sie es zu filtern oder zu analysieren, anstatt zu versuchen, eine eigene Protokolldatei zu erstellen.

Hier ist eine Auswahl des fraglichen Protokolls:

Feb 19 10:23:47 localhost sudo:    larssend : TTY=pts/1 ; PWD=/home/larssend ; USER=root ; COMMAND=/usr/sbin/useradd -m -s /bin/bash -U tst
Feb 19 10:23:47 localhost sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Feb 19 10:23:47 localhost useradd[1661]: new group: name=tst, GID=1001
Feb 19 10:23:47 localhost useradd[1661]: new user: name=tst, UID=1001, GID=1001, home=/home/tst, shell=/bin/bash
Feb 19 10:23:48 localhost sudo: pam_unix(sudo:session): session closed for user root
Feb 19 10:23:50 localhost sudo:    larssend : TTY=pts/1 ; PWD=/home/larssend ; USER=root ; COMMAND=/usr/sbin/userdel -r tst
Feb 19 10:23:50 localhost sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Feb 19 10:23:50 localhost userdel[1667]: delete user 'tst'
Feb 19 10:23:50 localhost userdel[1667]: removed group 'tst' owned by 'tst'
Feb 19 10:23:50 localhost userdel[1667]: removed shadow group 'tst' owned by 'tst'
Feb 19 10:23:50 localhost sudo: pam_unix(sudo:session): session closed for user root

Wie Sie sehen, enthält es so ziemlich alles, was Sie über die Erstellung und Löschung von Benutzerkonten wissen müssen, einschließlich der Informationen darüber, wer die Erstellung / Löschung über die sudoProtokollierung vorgenommen hat. Beachten Sie, dass Sie möglicherweise zusätzliche Arbeit leisten müssen, um herauszufinden, wer die Erstellung / Löschung vorgenommen hat , wenn der Ersteller nicht sudomit useraddoder telefoniert hat userdel.

Larssend
quelle
Bitte lesen Sie die Frage noch einmal sorgfältig durch. Ihre Antwort beantwortet nicht die ursprüngliche Frage. OP versucht , selbst neue Konten zu erstellen , ohne vorhandene zu protokollieren.
DavidPostill
@DavidPostill: "Fügen Sie für jedes erstellte Benutzerkonto einen Zeileneintrag in die Datei /home/daniel/logs/useraccounts.log ein." Ich habe genau davon abgeraten.
Larssend