Linux bash читает из файла, затем вводит в linux

Я хочу добавить пользователей Linux, тогда я хочу ограничить их настолько сильно, насколько это возможно. (noshell и т. д.) из файла с именем users.

Это мой код, но не работает:

    while read line
    do
input = echo ($input | tr ":" "\n")

        #!/bin/bash
        # Script to add a user to Linux system
        if [ $(id -u) -eq 0 ]; then
            if [ $? -eq 0 ]; then
                echo "$username exists!"
                exit 1
            else
                pass=$(perl -e 'print crypt($ARGV[0], "password")' $input[1)
                useradd -m -p $input[1] $input[0]
                [ $? -eq 0 ] && echo "User has been added to system!" || echo "Failed to add a user!"
            fi
        else
            echo "Only root may add a user to the system"
            exit 2
        fi
    done < /var/www/users

Тогда я хочу ограничить их учетные записи с Noshell. (но я знаю, как я могу это сделать. Но я не могу правильно отделить вход от файла:/)

вход (пользователи):

john:lol
rambo:sanyi
cula:kari

Большое спасибо!

1 ответ

Решение

Я думаю, следующий скрипт будет делать:

#!/bin/bash

USERS=`cat /etc/passwd | cut -d: -f1`

if [ `id -u` -ne 0 ]
then
    echo "Login as Root"
else
    while read line
    do
        USER=`echo $line | cut -d ":" -f1`
        PASS=`echo $line | cut -d ":" -f2`

        echo $USERS | grep "${USER}" > /dev/null

        if [ $? -eq 0 ]
        then
            echo "Username ${USER} Exists!"
        else
            password=`perl -e 'print crypt("${PASS}", "salt")', "\n"`
            useradd -p "${password}" ${USER}

            echo "User ${USER} created!"
        fi

        i+=1
    done < /var/www/users
fi
Другие вопросы по тегам