LINUX.ORG.RU

Помогите скрипт написать


0

1

Необходимо создать 50т юзеров с паролями, логин должен начинаться с usr_ и все это в текстовик, чтоб было видно у кого какой пароль. пароль думаю random создаст, но символов не более шести.

Спасибо!


Скачай базу емэйлов какую и вытяни оттуда всех до собаки, а пароли сгенерь на базе имени.

p.s. Попроси у Макскома из базы таблицу пользователей )))

impr
()

> Необходимо создать 50т юзеров с паролями, логин должен начинаться с usr_ и все это в текстовик, чтоб было видно у кого какой пароль. пароль думаю random создаст, но символов не более шести.

Создать 50000 юзеров? Думаю, нужно около 40000 мужчин и 25000 женщин. Каждого нового юзера завернуть в текстовик, к которому прицепить бирку с паролем. Для получения пароля помолиться random'у, но не более 6 раз.

gestapochki
()

>Необходимо создать 50т юзеров с паролями

Нет, тебе это не нужно

Led ★★★☆☆
()
Ответ на: комментарий от gestapochki

просто 50 штук

ха ха, очень смешно, я тут с другими скриптами зашиваюсь, к утру все должно быть готово. Голова уже почти не варит, думаю буду я их вручную вбивать и на листик потом все переписывать...

Averus
() автор топика
Ответ на: комментарий от Averus

> -f папка (от father)

Ты ошибаешся:

-d папка (от daddy)

-m мамка (от mother)

-s сынок-двоешник (от son)

Led ★★★☆☆
()

Вроде до зачётной недели ещё далеко?

anonymous
()
Ответ на: комментарий от power

(16.11.2010 1:43:03) к утру все должно быть готово. Голова уже почти не варит, думаю буду я их вручную вбивать и на листик потом все переписывать...

(16.11.2010 5:26:12) printf «usr_%s;%s\n» `pwgen -A 8 2`

тонко

Corey
()
count=1
echo "$(date) add new logins:" >> /var/log/new_pass
        while [[ $count -le $1 ]]; do             
               login=usr_$(cat /dev/urandom|tr -dc [:alnum:]|head -c4)
               password=$(cat /dev/urandom|tr -dc [:alnum:]|head -c7)
               pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
               useradd -d /home/logins -s /bin/false $login -p $pass
               echo "$login $password" >> /var/log/new_pass
               let count=count+1
        done

./script 50

uspen ★★★★★
()
Ответ на: комментарий от uspen

Упс, логины тоже рандомом, ну просто тогда login=$2

for i in `cat logins`; do
   ./script 50 $i
done

И head -c6

uspen ★★★★★
()
import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws FileNotFoundException {
        final int USER_COUNT = Integer.parseInt(args[0]);
        PrintWriter printWriter = new PrintWriter(
                new FileOutputStream("users.txt"));
        List<Character> passwordChars = new ArrayList<Character>();
        for (char i = '0'; i <= '9'; i++) passwordChars.add(i);
        for (char i = 'a'; i <= 'z'; i++) {
            passwordChars.add(i);
            passwordChars.add(Character.toUpperCase(i));
        }
        Random random = new Random();
        for (int i = 0; i < USER_COUNT; i++){
            printWriter.print("usr_"+i+" ");
            for (int j = 0; j < 6; j++)
                printWriter.print(passwordChars.get(random.nextInt(passwordChars.size())));
            printWriter.println();
        }
        printWriter.close();
    }

}
vertexua ★★★★★
()
Ответ на: комментарий от vertexua

конечно! иначе зачем все это.... Если Вы проверили, что Ваш скрипт работает, пожалуйста обьясните мне что с ним делать. Я не работал и не знаю про этот язык.

Averus
() автор топика
Ответ на: комментарий от uspen

Вы проверяли этот не рабочий скрипт? А «pass=$(perl -e 'print crypt($ARGV[0], „password“)' $password) » это что? Вы же потом pass в логин юзеру заносите, там такая 13ти значная белиберда получается...

Averus
() автор топика
Ответ на: комментарий от uspen

usr_ только цифры! от 001 до 999. Ну прочему если кто-то помогает, то вроде помог, а вроде и совсем не помог.

Averus
() автор топика
Ответ на: комментарий от Averus

иначе это настолько усложняет выдачу паролей, что Вы даже не представляете.

Averus
() автор топика
Ответ на: комментарий от Averus

>Ну прочему если кто-то помогает, то вроде помог, а вроде и совсем не помог.

Потому что надо задачу чётче формулировать. Сначала создать файл 50 тысяч строчек со случайными логинами и паролями, а потом внезапно создать 50 пользователей в системе с логинами вида usr_001.

Yareg ★★★
()
Ответ на: комментарий от Averus

Нерабочий?? Ты чего парень? Если для тебя это белиберда, то для компьютера это хэш. Просто так ты пароль юзеру не назначишь, аля adduser user -p pass! Ты этот скрипт хоть попробывал, слово не подберу. Я тебе готовое решение предоставил, школьничег.

uspen ★★★★★
()
Ответ на: комментарий от Averus

Ты, балда, а что, цикл уже сложно написать

for i in {1..999};do
 echo $i
done

Единственное они будут не 001, 002, а 1, 2.

логин должен начинаться с usr_

В исходном посте про это вообще ничего не было сказано.

uspen ★★★★★
()
#!/bin/bash
exec  >userlist.txt
pwlen=8
for usernum in {0..50}
do
    username="usr_"`printf "%.3d" ${usernum}`
    userpwd=`pwgen ${pwlen} 1`
    echo $username $userpwd
    useradd $username
    echo $userpwd |passwd $username --stdin
done
madcore ★★★★★
()
Ответ на: комментарий от Averus

КУДА РУКАМИ?? Глаза протри!

useradd -d /home/logins -s /bin/false $login -p $pass

uspen ★★★★★
()
Ответ на: комментарий от uspen

> echo $i
> Единственное они будут не 001, 002, а 1, 2.

for i in {1..999};do
 printf "%03d\n" $i
done
arsi ★★★★★
()
Ответ на: комментарий от Yareg

как по Вашему где кому и когда, могут погадобиться 50 000 юзеров? Где логика? и разве 50 000 пишется как 50т ? а может 50k ?

Averus
() автор топика
Ответ на: комментарий от uspen

Это где так?

[code]
useradd -v
useradd (pwdutils) 3.2.1
Copyright (C) 2008 Thorsten Kukuk.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

passwd --version
passwd (pwdutils) 3.2.1
Copyright (C) 2006 Thorsten Kukuk.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[/code]

Работает без рук

madcore ★★★★★
()
Ответ на: комментарий от Averus

и разве 50 000 пишется как 50т ?

А что же тогда означает ваше «50т»: «50 товарищей», «50 тел», или, может быть, «50 туш»?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Averus
#!/bin/bash
count=1
echo "$(date) add new logins:" >> /var/log/new_pass
        while [[ $count -le $1 ]]; do             
               login=usr_$(cat /dev/urandom|tr -dc [:alnum:]|head -c4)
               password=$(cat /dev/urandom|tr -dc [:alnum:]|head -c7)
               pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
               useradd -d /home/logins -s /bin/false $login -p $pass
               echo "$login $password" >> /var/log/new_pass
               let count=count+1
        done

chmod +x script

./script 50

При этом создадутся 50 юзеров со случайнми логинами и паролями.

uspen ★★★★★
()
Ответ на: комментарий от madcore

echo $userpwd |passwd $username --stdin

О, как, я нераспарсил. Да, правда!)

Сколько способов решить одну задачу!

uspen ★★★★★
()
Ответ на: комментарий от Eddy_Em

>А что же тогда означает ваше «50т»

Это очевидно
50т: пятьдесяТ (аналогично 1н: одиН, 2а: двА).
Есть люди, которые почему-то так пишут.

stormy
()
Ответ на: комментарий от stormy

В этом треде я узнал две новых вещи: Что passwd --stdin принимает пароль без интерактивного ввода и то, что люди так пишут - 50т. Никогда не встречал!!

uspen ★★★★★
()
Ответ на: комментарий от uspen

Теперь работает, прошу обьяснить школьнику, как «chmod +x script

./script 50» влияют на выполнение скрипта? Спасибо.

Averus
() автор топика
Ответ на: комментарий от uspen

>Что passwd --stdin принимает пароль без интерактивного ввода

Не все версии)

madcore ★★★★★
()
Ответ на: комментарий от madcore

Не работает. Добавил юзера noname и сделал

echo noname |passwd noname --stdin
passwd: неизвестный ключ «--stdin»
В мане по этому поводу не нашел. Debian squeeze

uspen ★★★★★
()
Ответ на: комментарий от Averus

как «chmod +x script ./script 50» влияют на выполнение скрипта

chmod - изменяешь атрибут на выполнение (добавляешь его)

./script 50 - запускаешь из текущей директории файл с аргументом 50, который читается скриптом и обозначается в нем как $1

uspen ★★★★★
()
Ответ на: комментарий от Yareg

to Yareg и madcore: я не про тот замечательный скрипт говорю, просто движок сайта оставляет желать лучшего, Вам было бы заметнее что и кому. И прошу Вас, даже если Вы считаете себя супер образованными в баш, то не надо считать что все остальные абсолютный 0 и не могут прочесть скрипт или passwd.

Averus
() автор топика
Ответ на: комментарий от Averus

>Спасибо, а то так загрузили, что я уже думал что мой русский полностью деградировал.

Ну про деградацию не знаю, но числительные в русском так действительно не пишут. Поэтому будь готов к непониманию.

stormy
()
Ответ на: комментарий от uspen

В редхатах и зузях работает

passwd --help
Usage: passwd [OPTION...] <accountName>
-k, --keep-tokens keep non-expired authentication tokens
-d, --delete delete the password for the named account (root only)
-l, --lock lock the named account (root only)
-u, --unlock unlock the named account (root only)
-f, --force force operation

-x, --maximum=DAYS maximum password lifetime (root only)
-n, --minimum=DAYS minimum password lifetime (root only)
-w, --warning=DAYS number of days warning users receives before
password expiration (root only)
-i, --inactive=DAYS number of days after password expiration when an
account becomes disabled (root only)
-S, --status report password status on the named account (root
only)
--stdin read new tokens from stdin (root only)

Help options:
-?, --help Show this help message
--usage Display brief usage message

madcore ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.