Не подскажете в каком месте прописано определение открытие файла для правил allow_id.
Я хочу в место этого поставить exec и читать stdin.
Хочу управлять секциями доступа посредством ldap (AD) через скрипты perl
Небольшая просба: по allow_id
Re: Небольшая просба: по allow_id
vii-98 писал(а):Не подскажете в каком месте прописано определение открытие файла для правил allow_id.
Я хочу в место этого поставить exec и читать stdin.
Хочу управлять секциями доступа посредством ldap (AD) через скрипты perl
Код: Выделить всё
File: get_opt.c Line 439
// allow_id
pairs=pcre_exec(pat[8],spat[8],tmp,strlen(tmp),0,PCRE_NOTEMPTY,vector,vecsize);
if(pairs>=0)
{
rez=tmp+vector[2]; tmp[vector[3]]=0;
if (!h_flag) //for global allow_id
add_id(rez,&allow_id,&allow_id_count);
else // for section allow_id
add_id(rez,&redir[sections_count]->allow_id,&redir[sections_count]->allow_id_count);
continue;
}
а вот и скриптик если кому будет полезен:
Конечно этот скрипт не притендует на оптимальность.... т.к.програмирую рахз в год.
Код: Выделить всё
#!/usr/bin/perl
use strict;
use Net::LDAP;
#########################################
#Конфигурация
#Сервер ldap
my $LdapServer = "xxx.xxx.xxx.xxx";
#Версия LDAP
my $LdapVersion = 3;
#Логин пользователя LDAP
my $LdapUser="CN=ldap,CN=User,DC=domain,DC=yur";
#Пароль пользователя LDAP
my $LdapPasswd="password_ldap_user";
#Откуда надо искать
my $LdapBase="DC=domain,DC=lan";
#Имя группы
my $group="name_group_allow";
#Добовляем имя домена что передается в режик с именем пользователя
#У меня добавлено "%5C" т.к. из сквида передается в место "\" -> "%5C"
my $Domain="DOMAIN%5C";
#########################################
#Ищем где находится группа
my $ldap = Net::LDAP->new ($LdapServer) or die "$@";
my $mesg = $ldap->bind ( "$LdapUser", password => "$LdapPasswd", version => 3 );
my $attrs = [ 'member' ];
$mesg = $ldap->search ( base => "$LdapBase", scope => "sub", filter => "(sAMAccountName=$group)",attrs => $attrs);
$mesg->code && die $mesg->error;
my $GroupDst = $mesg->entry(0)->dn;
#Ищем пользователей которые находятся в этой группе
$mesg = $ldap->search ( base => "$GroupDst", filter => "(objectclass=*)",attrs => $attrs);
$mesg->code && die $mesg->error;
#Извлекаем акаунтные имена
foreach my $entry ($mesg->entries()) {
my @members = $entry->get_value('member');
foreach my $member ( @members ) {
my $UserName = $ldap->search ( base => "$member", filter => "(objectclass=*)", attrs => ['sAMAccountName']);
print STDOUT "allow_id\t".$Domain.$UserName->entry(0)->get_value('sAMAccountName')."\n";
}
}
Я бы заменил строкуcooll писал(а):После, того как настроил этот скрипт, что надо еще прописать в rejik?
print STDOUT "allow_id\t".$Domain.$UserName->entry(0)->get_value('sAMAccountName')."\n";
на
print STDOUT $Domain."разделитель".$UserName->entry(0)->get_value('sAMAccountName')."\n";
и прописал бы в режике ссылку на полученную, при помощи этого скрипта файл, в нужной секции.
Например:
allow_id f:/path/file
или
work_id f:/path/file
Код: Выделить всё
#!/bin/bash
if ! cmp file1 file2; then
echo not eq
mv file1 file2
fi
cooll писал(а):Спасибо. А не поделитесь скриптом для сравнения двух файлов. Есть file1 (создается скриптом) и file2 (для доступа в Rejik по пользователям). Если file1 отличается от file2, удалить file2 и на его месте создать новый file2 с содержимым file1.