URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 4909
[ Назад ]

Исходное сообщение
"useradd из файла"

Отправлено zk , 05-Дек-05 18:25 
По сайту/форуму искал, ненашёл.

Не подскажите как из файла в формате :

username password
username password
... ...

Добавить пользователей в систему.

Заранее благодарен.


Содержание

Сообщения в этом обсуждении
"useradd из файла"
Отправлено Sew , 06-Дек-05 05:15 
pw useradd vasya -g группа -s каталог
passwd vasya
------------
Других варианов нет!, может ключи к pw useradd есть - незнаю!

"useradd из файла"
Отправлено zk , 06-Дек-05 11:50 
>pw useradd vasya -g группа -s каталог
>passwd vasya
>------------
>Других варианов нет!, может ключи к pw useradd есть - незнаю!

Спасибо что подсказал про pw, очень хорошая вещь.

Я вообще админ начинающий, и поневоле, bash скриптами не владею, если я напишу скрипт на PHP это будет очень плохо?
Какие есть недостатки у пхп скриптов для оболочек?



"useradd из файла"
Отправлено zk , 06-Дек-05 12:05 
И ещё. Ну юзеров я с помощью пхп скрипта запихал, очень удобно кстати, прямо из таблички опенофис кальк, как бы вот им ещё пароли из этой же таблички назначить, ведь passwd штука интерактивная, и ей в параметрах пароль не передашь. =/

"useradd из файла"
Отправлено jd , 06-Дек-05 22:12 
>И ещё. Ну юзеров я с помощью пхп скрипта запихал, очень удобно
>кстати, прямо из таблички опенофис кальк, как бы вот им ещё
>пароли из этой же таблички назначить, ведь passwd штука интерактивная, и
>ей в параметрах пароль не передашь. =/

usermod -p ...
Только ему надо давать закриптованный пароль. Из man usermod(8):
...
  -p passwd
    The encrypted password, as returned by crypt(3).
...

Скрипты, в общем-то конечно всё-равно, на чём писать, лишь бы удобно было. Но и в bash ничего мудрёного нет. И ещё хорошо бы было подумать о том, кто возможно будет в этом когда-нибудь потом разбираться (хотя это, разумеется, уже ваше личное дело).


"useradd из файла"
Отправлено idle , 07-Дек-05 11:24 
>И ещё. Ну юзеров я с помощью пхп скрипта запихал, очень удобно
>кстати, прямо из таблички опенофис кальк, как бы вот им ещё
>пароли из этой же таблички назначить, ведь passwd штука интерактивная, и
>ей в параметрах пароль не передашь. =/
Используйте pw -h.


"useradd из файла"
Отправлено zk , 07-Дек-05 13:22 
>Используйте pw -h.

Что-то я непойму что за дескриптор ему надо передавать???
Может поясните?


"useradd из файла"
Отправлено zk , 07-Дек-05 13:49 
>>Используйте pw -h.

pw useradd testmy -g 6 -c comm -d /var/mail/ -s /sbin/nologin -h 0 << test11

в таком виде не работает.

pw useradd testmy -g 6 -c comm -d /var/mail/ -s /sbin/nologin -h 0 < test11

вот так работает, но надо чтобы был файлик test11 в котором содержится пароль, а хотелось бы чтобы пароль задавался в строке.


"useradd из файла"
Отправлено idle , 07-Дек-05 13:59 
>>>Используйте pw -h.
>
>pw useradd testmy -g 6 -c comm -d /var/mail/ -s /sbin/nologin -h
>0 << test11
>
>в таком виде не работает.
>
>pw useradd testmy -g 6 -c comm -d /var/mail/ -s /sbin/nologin -h
>0 < test11
>
>вот так работает, но надо чтобы был файлик test11 в котором содержится
>пароль, а хотелось бы чтобы пароль задавался в строке.
echo password | pw useradd testmy -g 6 -c comm -d /var/mail/ -s /sbin/nologin -h 0



"useradd из файла"
Отправлено zk , 07-Дек-05 15:20 
>echo password | pw useradd testmy -g 6 -c comm -d /var/mail/ -s /sbin/nologin -h 0

Большое спасибо!!! Работет =)
Я думаю мой скрипт на пхп никому тут не нужен. Так что то что получилось - писать не буду =)



"useradd из файла"
Отправлено dimcha , 07-Дек-05 13:53 
вот добавление записи на Perl(кусок кода):

$r = sprintf ( "%s:%s:%d:1000::0:0:user:%s:/rbin/sh_users",
      $login, crypt ($password, "salt"), $uid, $dir );

open (A, ">>/etc/master.passwd") || die "Can't open master.passwd\n";
print A "$r\n";
close (A);
`/sbin/pwd_mkdb -u $login /etc/master.passwd`;


"useradd из файла"
Отправлено Forth , 08-Дек-05 09:05 
>>Используйте pw -h.
>
>Что-то я непойму что за дескриптор ему надо передавать???
>Может поясните?
Дескриптор файла. Передадите 0 - прочитает пароль из стандартного ввода.


"useradd из файла 'useradd из файла' на cpp"
Отправлено Дмитрий , 16-Ноя-09 13:29 
Вот вариант на срр. Компилил для себя под gcc.
Если конечно кому нибуть интересно.. Я кинул прогу в сбин и юзаю. довольно таки удобно.
В параметр передается файл... pw катит на фри.. а вот под линуксами надо еще помучится.


#include <unistd.h>
#include <stdio.h>
#include <string.h>

int main(int argc, char* argv[])
{
char stroka[100], tmp[100];
char* pch;
char* paruserpass[100];
char* cryptpass;
FILE* fp;

    stroka[0]=0;

    if (argc != 2) {
    printf("Использовать как: %s <Имя файла> \n", argv[0]);
    exit(0);
    }
            //открытие файла
    fp = fopen(argv[1],"rw");
    if (fp==NULL) {perror ("Ошибка открытия файла"); return -1;}

    while (!feof(fp)) {
        fgets (stroka , 100 , fp);

    //сдесь в ковычках перечисляется через какие знаки препинания расположены пользователь и пароль.
    //У меня настроено как через пробел или таб или запятую.
    pch = strtok (stroka," ,\t");

    int n = 0;
    while (pch != NULL)
        {//printf ("%s\n",pch);
        paruserpass[n]= pch;
        n++;

        //сдесь в ковычках перечисляется через какие знаки препинания расположены пользователь и пароль.
        //У меня настроено как через пробел или таб или запятую.
        pch = strtok (NULL, " .\t");
        }

    printf("\n ------------------------------------------------- \n\n");

    tmp[0] = 0;
    cryptpass = crypt(paruserpass[1], strcat(strcat(tmp, "$1$"),paruserpass[0]));
    printf("Пользователь:%s\n Пароль:%s\n Криптованный пароль:%s\n",paruserpass[0],paruserpass[1],cryptpass);
    tmp[0] = 0;

    // Ну сдесь тупо собираем строку команды useradd по своему вкусу.
    system(strcat(strcat(strcat(strcat(strcat(tmp,"useradd "),paruserpass[0])," -p '"),cryptpass),"' -g users"));

    printf("\n ------------------------------------------------- \n");

        stroka[0]=0;
        }
    fclose(fp);
return 0;
}

Ну и компилим
cc <имя исходника> -o <Имя получившийся программы> -lcrypt
   кому понадобилось -> рад был помоч, за код сильно не придираемся, работает на 100%.