Задать вопрос
lxst
@lxst
Студент программист

Как правильно составить небольшой bash скрипт по созданию пользователей?

Нужно написать скрипт который будет создавать нового пользователя user_[N+1]
#!/bin/bash

N = $(($N+1))
sudo useradd user_$N -p pass_$N
echo "User added!"


Буду рад любой помощи!
  • Вопрос задан
  • 6626 просмотров
Подписаться 5 Простой Комментировать
Решения вопроса 1
xotkot
@xotkot
хорошо есть и хорошо весьма
такое ощущение что условие неполное, поэтому немного усложню, а при желании вы легко можете упростить скрипт до нужного результата
Предположим что нужно создать N пользователей(от 1 до N) и задать пароль к ним и всё это с соответствующей числовой приставкой . То есть, написать скрипт который на вход получает базовое имя и пароль, а также количество пользователей которых нужно создать.
допустим имя скрипта будет luser.sh
#!/usr/bin/env bash

USER=$1 # базовая часть имени пользователя
PASS=$2 # базовая часть пароля
N=$3    # количество пользователей
for (( i = 1; i <= $N; i++ )); do
	useradd "${USER}_$i" && $(echo "${USER}_$i:${PASS}_$i" |chpasswd)
	echo "User ${USER}_$i added!"
done

пример работы скрипта:
$ sudo ./luser.sh user pass 3
User user_1 added!
User user_2 added!
User user_3 added!

проверим что пользователи с основанием в имени user действительно создались:
$ grep -e "^user" /etc/passwd
user_1:x:1314:1314::/home/user_1:/bin/bash
user_2:x:1315:1315::/home/user_2:/bin/bash
user_3:x:1316:1316::/home/user_3:/bin/bash
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
#!/bin/bash
for ((i=1; i < 10; i++))
do
echo $i
done

Snimok-ekrana-iz-2017-03-11-19-13-09-768x432.png
Ответ написан
@MadridianFox
Web-программист, многостаночник
Хотелось бы побольше подробностей, потому что не совсем ясно как будет использоваться скрипт и, соответственно, что именно он должен делать.
Предположу, что при вызове скрипта должен создаваться один новый пользоваетль с шаблонным именем.
Т.е. нужно как-то из системы получить список таких пользователей, найти последнего, взять из него цифру и увеличить на один.
Если обязательно нужен именно монотонно возрастающий номер, то примерно вот так:
lastUserSuffix=$(cat /etc/passwd | awk 'BEGIN {FS=":"}; {print $1}' | grep systemd | sort -n | sed 's/systemd-//' | tail -1)

Я тут ищу пользователей с именем systemd-***, думаю вам не составит труда изменить пример для своих целей.
Ответ написан
gohdan
@gohdan
Системный администратор
Лучше не используйте useradd, она выдаёт слишком расширенные права на home директорию (доступ не только пользователю, а всей его группе). Используйте adduser.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы