GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie füge ich einen Unix/Linux-Benutzer in einem Bash-Skript hinzu?

Hier ist mein Test-Bash-Skript. Ich kann es nicht zum Laufen bringen. Ich sehe zwei Fehler:

  1. Use of uninitialized value $answer in chop at /usr/sbin/adduser line 589.
  2. Use of uninitialized value $answer in pattern match (m//) at /usr/sbin/adduser line 590.

Hier ist mein Skript:

#!/bin/bash
sudo adduser myuser << ENDX
password
password
First Last




Y
ENDX
exit 0

Hier ist die Ausgabe:

[email protected]$ ./adduser.sh 
Adding user `myuser' ...
Adding new group `myuser' (1001) ...
Adding new user `myuser' (1001) with group `myuser' ...
Creating home directory `/home/myuser' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
Changing the user information for myuser
Enter the new value, or press ENTER for the default
        Full Name []:   Room Number []:         Work Phone []:  Home Phone []:  Other []: Use of uninitialized value $answer in chop at /usr/sbin/adduser line 589.
Use of uninitialized value $answer in pattern match (m//) at /usr/sbin/adduser line 590.
Is the information correct? [Y/n] [email protected]$

Dies ist auf Kubuntu 12.04 LTS

$ bash --version
bash --version
GNU bash, version 4.2.25(1)-release (x86_64-pc-linux-gnu)

Hier sind die Zeilen von adduser (Systemskript – von mir unverändert) mit Notationen der beiden relevanten Zeilennummern:

for (;;) {
       my $chfn = &which('chfn');
    &systemcall($chfn, $new_name);
    # Translators: [y/N] has to be replaced by values defined in your
    # locale.  You can see by running "locale yesexpr" which regular
    # expression will be checked to find positive answer.
    print (gtx("Is the information correct? [Y/n] "));
    chop (my $answer=<STDIN>);        <-- LINE 589
    last if ($answer !~ m/$noexpr/o); <-- LINE 590
}

Akzeptierte Antwort:

Verwenden Sie einfach die Befehlszeilenparameter anstelle von stdin und verwenden Sie chpasswd für das Passwort.

Zum Beispiel:

sudo adduser myuser --gecos "First Last,RoomNumber,WorkPhone,HomePhone" --disabled-password
echo "myuser:password" | sudo chpasswd

Linux
  1. So fügen Sie einen Benutzer zu einer Gruppe in Linux hinzu oder entfernen ihn

  2. So löschen Sie den BASH-Befehlszeilenverlauf in Linux

  3. So fügen Sie Benutzer zu einer Gruppe in Linux hinzu

  4. Wie fügt man Benutzerkonto UND Passwort automatisch mit einem Bash-Skript hinzu?

  5. Panikpasswort unter Linux

So fügen Sie einen Benutzer zu einer Gruppe in Linux hinzu

So fügen Sie einen Benutzer zu einer Gruppe in Linux hinzu

So ändern Sie das Benutzerkennwort in Linux

So ändern oder setzen Sie das Benutzerkennwort in Linux

So fügen Sie einen Benutzer zu einer Gruppe unter Linux hinzu

So fügen Sie einen Benutzer zu einer Linux-Gruppe hinzu