web-dev-qa-db-fra.com

Script Linux pour extraire les noms d'utilisateur d'un fichier texte

Je suis un débutant en scripts, mais j’ai créé un fichier texte appelé text.dat qui ne contient que les noms d’utilisateur figurant dans l’emplacement /home/daniel/text.dat et je tente d’exécuter un script (appelé addusers.sh) qui affiche le les noms de ce fichier texte et créera un nouveau compte utilisateur sur le système pour chaque nouveau compte utilisateur spécifié dans le fichier text.dat. Pour chaque compte d'utilisateur créé, ajoutez une ligne au fichier /home/daniel/logs/useraccounts.log. L'entrée de ligne contiendra les informations suivantes: added | <user account name> | <day and time of creation>.

C'est ce que j'ai jusqu'ici:

#!/bin/bash
echo “cat text.dat”
newuser= grep /home/daniel/text.dat
Sudo adduser $newuser
2
Daniel Wilson
#!/bin/bash
LANG=C
myuser="/home/george/text.dat"

# create logs directory
mkdir -p ~/logs

# create log file
touch ~/logs/useraccounts.log

# make sure admin is running the script
[ "$(whoami)" != "root" ] && exec Sudo -- "$0" "$@"


# check if log file is empty, if not don't add a new header
file="~/logs/useraccounts.log"

# Add header in logs file if one isn't already there.
if [[ -s $file ]]
then
    # log file header

    printf "%s %12s %s %18s %s %32s %s\n" "|" "Added" "|" "User Account Name" "|" "Day and Time of Creation" "|" >> ~/logs/useraccounts.log

    printf "%50s\n" "========================================================================" >> ~/logs/useraccounts.log

fi


# remove any whitespaces and blank lines from file input
# before passing it to 'while command'
sed '/^[ \t]*$/d' $myuser | while read -r line
do
        name="$line"

        adduser --disabled-login --gecos "" $name


        # check if user was successfully added
        isthere=$(cut -d: -f1 /etc/passwd | grep "$name")


        # if user was added then make insert record into log file
        if [[ "$isthere" == "$name" ]]
        then

                 printf "%s %10s   %s %17s  %s %33s %s\n"  "|" "Yes" "|" "$name"  "|" "$(date)" "|"  >> ~/logs/useraccounts.log 

        else

                 printf "%s %10s   %s %17s  %s %33s %s\n"  "|" "No" "|" "$name"  "|" "$(date)" "|"  >> ~/logs/useraccounts.log



        fi   




done

Plusieurs choses à noter ici:

  • Les utilisateurs créés ne peuvent pas se connecter tant qu'un mot de passe n'a pas été défini pour chacun d'eux.
  • Le printf devra être modifié pour correspondre à votre propre style.
1
George Udosen