есть файл со списком новых пользователей и паролей
есть ли возможность быстро создать пользователей через скрипт или другой механизм
сервер qmail ось freebsd
дайте какую нибудь идею!
>есть файл со списком новых пользователей и паролей
>есть ли возможность быстро создать пользователей через скрипт или другой механизм
>сервер qmail ось freebsd
>дайте какую нибудь идею!
виртуальные или системные юзера?если виртуальные то совсем просто:
~vpopmail/bin/vadduser user@domain.com password
~vpopmail/bin/vadduser user2@domain.com password
~vpopmail/bin/vadduser user3@domain1.com password
виртуальные
тока есть файл типаname password
someone01 password_of_someone_01
someone02 password_of_someone_02
someone03 password_of_someone_03
someone04 password_of_someone_04etc. и того 5000 записей
как вот создать зтих всех пользователей?
какого содержания будет примерный скрипт, может кому не лень подкинуть идею?
>виртуальные
>тока есть файл типа
>
>name
> password
>someone01 password_of_someone_01
>someone02 password_of_someone_02
>someone03 password_of_someone_03
>someone04 password_of_someone_04
>
>etc. и того 5000 записей
>
>как вот создать зтих всех пользователей?
>какого содержания будет примерный скрипт, может кому не лень подкинуть идею?
:))
Ок. Идея такая:
-------------------- Script -------------
#!/определяем чем исполяется данный скриптпока (читаем файл со спиcком пока не кончится) # исполняем все что далее
{
username = берем первое слово от начала строки;
email = добавляем к username имя домена;
password = берем второе слово из строки;
исполняем(~vpopmail/bin/vadduser $email $password);
}
спасибо! я попробую наверное где-то в понедельник, возможно понадобится твоя помощь.
>Ок. Идея такая:
>-------------------- Script -------------
>#!/определяем чем исполяется данный скрипт
>
>пока (читаем файл со спиcком пока не кончится) # исполняем все что
>далее
>{
>username = берем первое слово от начала строки;
>email = добавляем к username имя домена;
>password = берем второе слово из строки;
>исполняем(~vpopmail/bin/vadduser $email $password);
>};]
Ок. Реализация идеи:
>-------------------- Script -------------#!/usr/bin/perl -w
while(<>){
chomp;
($email,$password)=split;
system("~vpopmail/bin/vadduser $email $password")==0 || die "\nERR: $?\n";
}
>>Ок. Идея такая:
>>-------------------- Script -------------
>>#!/определяем чем исполяется данный скрипт
>>
>>пока (читаем файл со спиcком пока не кончится) # исполняем все что
>>далее
>>{
>>username = берем первое слово от начала строки;
>>email = добавляем к username имя домена;
>>password = берем второе слово из строки;
>>исполняем(~vpopmail/bin/vadduser $email $password);
>>}
>
>;]
>Ок. Реализация идеи:
>>-------------------- Script -------------
>
>#!/usr/bin/perl -w
>
>while(<>){
> chomp;
> ($email,$password)=split;
> system("~vpopmail/bin/vadduser $email $password")==0 || die "\nERR: $?\n";
>}Отлично! только вот при работе с vadduser ОБЯЗАТЕЛЬНО указывать имя домена. Соответственно если в списке нет доменов, а есть только имена юзеров то надо добавить их в скрипте.
createmailusers.pl
//---------script start----#!/usr/bin/perl -w
open (FILE, "userslist.txt") or die ("Cannot open filename: $!");
while(<FILE>)
{
chomp;
($email,$password,$realname) = split '\t';
$emailfull = (substr($email,9,0) = "@myhost.com");
system("~vpopmail/bin/vadduser -c $realname $emailfull $password")==0 || die "\nERR: $?\n";
}
//---------script end ----userslist.txt
// --- listing start ---
001001001 pass1 Name1 Surname1
002002002 pass2 Name2 Surname2
003003003 pass3 Name3 Surname3
// --- listing end ---структура userslist.txt такая
1. имя пользователя(состоит из 9 символов)
2. табуляция
3. пароль(5 символов)
4. табуляция
5. Имя Фамилиятеперь из консоли
perl createmailusers.plвсе время выдает такую ошибку
Error! Username exists
Err: 65024возможно в скрипте есть какая ошибка?
>createmailusers.pl
>//---------script start----
>
>#!/usr/bin/perl -w
>open (FILE, "userslist.txt") or die ("Cannot open filename: $!");
>while(<FILE>)
>{
> chomp;
> ($email,$password,$realname) = split '\t';
> $emailfull = (substr($email,9,0) = "@myhost.com");
> system("~vpopmail/bin/vadduser -c $realname $emailfull $password")==0 || die "\nERR: $?\n";
>}
>//---------script end ----
>
>userslist.txt
>// --- listing start ---
>001001001 pass1 Name1 Surname1
>002002002 pass2 Name2 Surname2
>003003003 pass3 Name3 Surname3
>// --- listing end ---
>
>структура userslist.txt такая
>1. имя пользователя(состоит из 9 символов)
>2. табуляция
>3. пароль(5 символов)
>4. табуляция
>5. Имя Фамилия
>
>теперь из консоли
>perl createmailusers.pl
>
>все время выдает такую ошибку
>Error! Username exists
>Err: 65024
>
>возможно в скрипте есть какая ошибка?А если ручками команду запусить - она повторится?
Параметры в командную строку передаются верно?
Может и правда уже есть такие пользователи?
Тогда vdeluser твой лучший друг :-)!
да дело в том что ошибка происходит в этом месте я думаю,($email,$password,$realname) = split '\t';
$emailfull = (substr($email,9,0) = "@myhost.com");но если добавить такую строку
echo $email;
ошибка такая:
Name "main:realname" used only once: possible typo at createmailusers.pl line 6.
Name "main:password" used only once: possible typo at createmailusers.pl line 6.
Name "main:emailfull" used only once: possible typo at createmailusers.pl line 6.can't locate object method "echo" via package "001001001@myhost.com" at createmailusers.pl line8, <FILE> chunk 1.
понять бы на что ругается?
все вроде разобрался...#!/usr/bin/perl -w
open (FILE, "userslist.txt") or die ("Cannot open filename: $!");
while(<FILE>)
{
chomp;
($email,$password,$realname) = split '\t';
$emailfull = $email.'@myhost.com';
system("~vpopmail/bin/vadduser -c $realname -q 3 $emailfull $password")==0 || die "\nERR: $?\n";но вот беда ->
так вот переменная $realname следующего вида "Name1 Surname1"
(т.е содержит пробел), если без пробела то все нормально проходит.а как можно чтоб в строке
system("~vpopmail/bin/vadduser -c $realname -q 3 $emailfull $password")
можно передать значение с пробелом в содержимом?
>все вроде разобрался...
>
>#!/usr/bin/perl -w
>open (FILE, "userslist.txt") or die ("Cannot open filename: $!");
>while(<FILE>)
>{
> chomp;
> ($email,$password,$realname) = split '\t';
> $emailfull = $email.'@myhost.com';
> system("~vpopmail/bin/vadduser -c $realname -q 3 $emailfull $password")==0 || die "\nERR:
>$?\n";
>
>но вот беда ->
>
>так вот переменная $realname следующего вида "Name1 Surname1"
>(т.е содержит пробел), если без пробела то все нормально проходит.
>
>а как можно чтоб в строке
>system("~vpopmail/bin/vadduser -c $realname -q 3 $emailfull $password")
>можно передать значение с пробелом в содержимом?попробуй так:
system("~vpopmail/bin/vadduser -c $realname -q 3 \"$emailfull\" \"$password\"")
да я как раз перед сном и догадался что нужно было просто этот символ экранировать Ж)