Perl для системного администрирования


Создание системы учетных записей для работы с пользователями - часть 18


В случае с нашей демонстрационной системой учетных записей преимущества перевешивают недостатки, поэтому посмотрим на примеры кодов, в которых используется вызов внешних программ. Чтобы ничего не усложнять, мы покажем пример программы, работающей только на локальной машине с Linux и Solaris, и проигнорируем все трудности, вроде NIS и вариаций BSD. Если вам хочется посмотреть на более сложный пример этого метода в действии, поищите семейство модулей Cf gTie Рэнди Мааса (Randy Maas).

Вот основная программа, необходимая для создания учетной записи:

# На самом деле эти переменные надо определить в центральном

# конфигурационном файле

сluseraddex = "/usr/sbin/useradd"; ft путь к useradd $passwdex = "/bin/passwd";

# путь к passwd $homel)nixdirs = "/home"; ft корневой каталог

# домашних каталогов Sskeldir = "/home/skel"; ft прототип домашнего

# каталога $defshell = "/bin/zsh"; ft интерпретатор no

# умолчанию

sub CreateUnixAccount{

my ($account,$record) = @_;

# конструируем командную строку, используя:

ft -с = поле комментария

ft -d = домашний каталог

и -д = группа (считаем равной типу пользователя)

ft -m = создать домашний каталог

ft -k = и скопировать файлы из каталога-прототипа

» -s = интерпретатор по умолчанию

# (можно также использовать -G group, group, group для

# добавления пользователя к нескольким группам)

my @cmd = (Suseraddex,

"-с", $record->{"fullname"},

"-d", "$homeUnixdirs/$account",

"-g", $record->{"type"},

"-m",

"-k", $skeldir,

"-s", Sdefshell,

laccount);

print STOERR "Creating account..."; ^

my $result = Oxff & system @cmd;

# код возврата 0 в случае успеха и не 0 при неудаче,

и поэтому необходимо инвертирование

if (!$result){

print STDERR "failed.\n";

return "Suseraddex failed"; } else {

print STDERR "succeeded.\n"; }

print STDERR "Changing passwd...";




- Начало -  - Назад -  - Вперед -



Книжный магазин