GNU/Linux >> Tutoriels Linux >  >> Linux

Comment ajouter un utilisateur Unix/linux dans un script bash ?

Voici mon script bash de test. Je n'arrive pas à le faire fonctionner. Je vois deux erreurs :

  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.

Voici mon script :

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




Y
ENDX
exit 0

Voici le résultat :

[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]$

C'est sur Kubuntu 12.04 LTS

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

Voici les lignes de adduser (script système - non modifié par moi) avec les notations des deux numéros de ligne pertinents :

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
}

Réponse acceptée :

Utilisez simplement les paramètres de ligne de commande au lieu de stdin et utilisez chpasswd pour le mot de passe.

Par exemple :

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

Linux
  1. Comment ajouter ou supprimer un utilisateur d'un groupe sous Linux

  2. Comment effacer l'historique de la ligne de commande BASH sous Linux

  3. Comment utiliser un mot de passe crypté dans le script Linux Bash Shell

  4. Comment modifier, supprimer ou désactiver le mot de passe utilisateur sous Linux

  5. Ajouter un utilisateur au groupe sous Linux, comment le faire (avec exemples)

Comment ajouter un utilisateur à un groupe sous Linux

Comment ajouter un utilisateur à un groupe sous Linux

Comment changer le mot de passe utilisateur sous Linux

Comment changer ou définir un mot de passe utilisateur sous Linux

Comment ajouter un utilisateur à un groupe sous Linux

Comment ajouter un utilisateur à un groupe Linux