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



@lxst

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

#!/bin/bash

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

Буду рад любой помощи!


Решения вопроса 1



@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

Комментировать

Ответы на вопрос 2



@shambler81

#!/bin/bash
for ((i=1; i < 10; i++))
do
echo $i
done

Snimok-ekrana-iz-2017-03-11-19-13-09-768x432.png



@MadridianFox

Хотелось бы побольше подробностей, потому что не совсем ясно как будет использоваться скрипт и, соответственно, что именно он должен делать.
Предположу, что при вызове скрипта должен создаваться один новый пользоваетль с шаблонным именем.
Т.е. нужно как-то из системы получить список таких пользователей, найти последнего, взять из него цифру и увеличить на один.
Если обязательно нужен именно монотонно возрастающий номер, то примерно вот так:

lastUserSuffix=$(cat /etc/passwd | awk 'BEGIN {FS=":"}; {print $1}' | grep systemd | sort -n | sed 's/systemd-//' | tail -1)

Я тут ищу пользователей с именем systemd-***, думаю вам не составит труда изменить пример для своих целей.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *