LINUX.ORG.RU
ФорумAdmin

Необходимо создать пользователей из списка users.txt с домашними папками, затем задать им пароль из списка pass.txt.

 


0

1

users.txt user_1 #пользователь бухгалтерии user_2 #пользователь техподдержки user_3 #пользователь отдела кадров pass.txt user_1:123456 user_2:654321 user_3:098765 Я сделал так: login=$((sed -n ‘1p’ user.txt | cut -c-6) pass= $((sed n ‘1p’ pass.txt | rev |cut -c-6 |rev) Но не знаю как обрабатывать в цикле в все строки из 2х файлов. Подскажите, пожалуйста. Спасибо.



Последнее исправление: pseer76 (всего исправлений: 1)

Сделай так, чтобы пост возможно было прочитать: https://www.linux.org.ru/help/markdown.md

А так: man paste

paste users.txt pass.txt выдаст тебе так, что юзер и пароль окажутся на одной строке. Ну а там уже через for легко.

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 2)
Ответ на: комментарий от pseer76

только это неправильный код. Он подразумевает что список пользователей в pass.txt и user.txt идентичный. А в задаче этого не сказано. В pass.txt может быть больше пользователей чем в user.txt, например

cobold ★★★★★
()

Влывается кавалная Лува :D

local users_file = 'users.txt' -- формат "имя #описание\n"
local paswd_file = 'pass.txt'  -- формат "имя:пароль\n"
local users_data = assert(io.open(users_file)):read('*a')
local paswd_data = assert(io.open(paswd_file)):read('*a')
local paswd = { }
local users = { }
--- Получить список паролей для всех пользователей
for user,pass in paswd_data:gmatch('(%S+):(%S+)') do
    assert(user)
    assert(pass)
    paswd[user]=pass
end
--- Получить пользователей которым нужно создать аккаунты
--- И проверить есть ли данные для их регистрации
for user in users_data:gmatch('(%S+)%s-#') do
    assert(user)
    if paswd[user] then
       users[#users+1] = user
    else
       print("Ошибка: Невозможно создать пользователя "..user.." из "..users_file)
       print("        Нет регистрационных данных в "..paswd_file.." Выход.")
       os.exit(1)
    end
end
-- Если всё ладушки то регаем
for id,user in ipairs(users) do
    print('useradd   '..user)
    print("chpasswd '"..user..":"..paswd[user].."'")
end

Предвкушая помидоры, где тут фиаско?

LINUX-ORG-RU ★★★★★
()