2011年 11月 の記事

ipmitool を使用して iLO3 から情報を取得する方法

ipmitoolを使用してiLO3から情報を取得する方法は以下の通り。

# ipmitool -I lanplus -H <IPアドレス> -U <アカウント名> -P <パスワード> sdr

【例】

# ipmitool -I lanplus -H 192.168.1.101 -U Administrator -P password sdr

環境:
CentOS 5.7 (x86_64)
HP ProLiant DL360 G7

Net_LDAP2 を使って LDAP エントリを変更する方法

Net_LDAP2を使ってLDAPエントリを変更する方法は以下の通り。

【例】user01のsambaPwdLastSetを今の時刻に変更

<?php

require_once 'Net/LDAP2.php';

$bindDn   = 'cn=Manager,dc=example,dc=com';
$bindPw   = 'password';
$ldapHost = '192.168.1.101';
$ldapPort = 389;
$baseDn   = 'dc=example,dc=com';

$config = array (
 'binddn' => $bindDn,
 'bindpw' => $bindPw,
 'basedn' => $baseDn,
 'port'   => $ldapPort,
 'host'   => $ldapHost
);

$ldap = Net_LDAP2::connect($config);

if (PEAR::isError($ldap)) {
 die('LDAPサーバに接続できませんでした:' . $ldap->getMessage());
}

$dn    = 'uid=user01,ou=Users,dc=example,dc=com';
$entry = $ldap->getEntry($dn);
$entry->replace(array('sambaPwdLastSet' => time()));
$entry->update();

?>

Net_LDAP2 を使って LDAP エントリを削除する方法

Net_LDAP2を使ってLDAPエントリを削除する方法は以下の通り。

【例】user01を削除

<?php

require_once 'Net/LDAP2.php';

$bindDn   = 'cn=Manager,dc=example,dc=com';
$bindPw   = 'password';
$ldapHost = '192.168.1.101';
$ldapPort = 389;
$baseDn   = 'dc=example,dc=com';

$config = array (
 'binddn' => $bindDn,
 'bindpw' => $bindPw,
 'basedn' => $baseDn,
 'port'   => $ldapPort,
 'host'   => $ldapHost
);

$ldap = Net_LDAP2::connect($config);

if (PEAR::isError($ldap)) {
 die('LDAPサーバに接続できませんでした:' . $ldap->getMessage());
}

$dn    = 'uid=user01,ou=Users,dc=example,dc=com';
$entry = $ldap->getEntry($dn);
$entry->delete();
$entry->update();

?>

Net_LDAP2 を使って LDAP エントリを登録する方法

Net_LDAP2を使ってLDAPエントリを登録する方法は以下の通り。

【例】samba用の新規アカウントuser01を登録
※sambaパスワードとuserパスワード、表示名は全て usre01

<?php

require_once 'Net/LDAP2.php';

$bindDn    = 'cn=Manager,dc=example,dc=com';
$bindPw    = 'password';
$ldapHost  = '192.168.1.101';
$ldapPort  = 389;
$baseDn    = 'dc=example,dc=com';

$attrs           = array();
$uid             = 'user01';
$addDn           = 'uid=' . $uid . ',ou=Users,' . $baseDn;
$loginShell      = '/bin/bash';
$homeDirectory   = '/home/' . $uid;
$sambaPwdLastSet = time();
$sambaAcctFlags  = '[U          ]';
$objectClass     = array('account', 'posixAccount', 'sambaSamAccount');

$sambaPasswordHistory = '';
$userPassword = '';
$sambaNTPassword = '';
$uidNumber    = '';
$gidNumber    = '';
$userSID      = '';

for ($i = 0; $i < 64; $i++) {
 $sambaPasswordHistory .= '0';
}

$salt = sha1(rand());
$salt = substr($salt, 0, 4);
$hash = base64_encode( sha1($uid . $salt, true) . $salt );
$userPassword = '{SSHA}' . $hash;
$sambaNTPassword = hash('md4',mb_convert_encoding($uid, "UCS-2LE", "utf-8"));;

$config = array (
 'binddn' => $bindDn,
 'bindpw' => $bindPw,
 'basedn' => $baseDn,
 'port'   => $ldapPort,
 'host'   => $ldapHost
);

$ldap = Net_LDAP2::connect($config);

if (PEAR::isError($ldap)) {
 die('LDAPサーバに接続できませんでした:' . $ldap->getMessage());
}

$dn        = 'ou=Idmap,dc=example,dc=com';
$entry     = $ldap->getEntry($dn);
$uidNumber = $entry->getValue('uidNumber', 'single');
$entry->replace(array('uidNumber' => $uidNumber + 1));
$entry->update();

$dn        = 'cn=domusers,ou=Groups,dc=example,dc=com';
$entry     = $ldap->getEntry($dn);
$gidNumber = $entry->getValue('gidNumber', 'single');

$dn            = 'sambaDomainName=EXAMPLE,dc=example,dc=com';
$entry         = $ldap->getEntry($dn);
$sambaSID      = $entry->getValue('sambaSID', 'single');
$sambaNextRid  = $entry->getValue('sambaNextRid', 'single') + 1;
$userSID       = $sambaSID . '-' . $sambaNextRid;
$entry->replace(array('sambaNextRid' => $sambaNextRid));
$entry->update();

$attrs = array(
 'objectClass'          => $objectClass,
 'cn'                   => $uid,
 'uid'                  => $uid,
 'uidNumber'            => $uidNumber,
 'gidNumber'            => $gidNumber,
 'loginShell'           => $loginShell,
 'homeDirectory'        => $homeDirectory,
 'displayName'          => $uid,
 'userPassword'         => $userPassword,
 'sambaSID'             => $userSID,
 'sambaAcctFlags'       => $sambaAcctFlags,
 'sambaPasswordHistory' => $sambaPasswordHistory,
 'sambaPwdLastSet'      => $sambaPwdLastSet,
 'sambaNTPassword'      => $sambaNTPassword
);

$entry = Net_LDAP2_Entry::createFresh($addDn, $attrs);

$ldap->add($entry);
if (Net_LDAP2::isError($ldap)) {
 die('ユーザーの登録に失敗しました:' . $ldap->getMessage());
}

?>

Net_LDAP2 を使って LDAP エントリの属性値を取得する方法

Net_LDAP2を使ってLDAPエントリの属性値を取得する方法は以下の通り。

【例】user01のuidNumberとuserPasswordを取得

<?php

require_once 'Net/LDAP2.php';

$bindDn   = 'cn=Manager,dc=example,dc=com';
$bindPw   = 'password';
$ldapHost = '192.168.1.101';
$ldapPort = 389;
$baseDn   = 'dc=example,dc=com';
$dn       = 'uid=user01,ou=Users,dc=example,dc=com';

$config = array (
 'binddn' => $bindDn,
 'bindpw' => $bindPw,
 'basedn' => $baseDn,
 'port'   => $ldapPort,
 'host'   => $ldapHost
);

$ldap = Net_LDAP2::connect($config);

if (PEAR::isError($ldap)) {
 die('LDAPサーバに接続できませんでした:' . $ldap->getMessage());
}

$entry = $ldap->getEntry($dn);
$uidNumber = $entry->getValue('uidNumber', 'single');
$userPassword = $entry->getValue('userPassword', 'single');
echo 'uidNumber: ' . $uidNumber . "n";
echo 'userPassword: ' . $userPassword . "n";

?>

Net_LDAP2 を使って LDAP エントリの属性値を取得する方法(匿名)

Net_LDAP2を使ってLDAPエントリの属性値を匿名で取得する方法は以下の通り。

【例】user01のuidNumberを取得

<?php

require_once 'Net/LDAP2.php';

$ldapHost = '192.168.1.101';
$ldapPort = 389;
$baseDn   = 'dc=example,dc=com';
$dn       = 'uid=user01,ou=Users,dc=example,dc=com';

$config = array (
 'basedn' => $baseDn,
 'port'   => $ldapPort,
 'host'   => $ldapHost
);

$ldap = Net_LDAP2::connect($config);

if (PEAR::isError($ldap)) {
 die('LDAPサーバに接続できませんでした:' . $ldap->getMessage());
}

$entry = $ldap->getEntry($dn);
$uidNumber = $entry->getValue('gidNumber', 'single');
echo 'uidNumber: ' . $uidNumber . "n";

?>

Net_LDAP2 を使って LDAP エントリを検索する方法

Net_LDAP2を使ってLDAPエントリを検索する方法は以下の通り。

<?php

require_once 'Net/LDAP2.php';

$bindDn   = 'cn=Manager,dc=example,dc=com';
$bindPw   = 'password';
$ldapHost = '192.168.1.101';
$ldapPort = 389;
$baseDn   = 'ou=Users,dc=example,dc=com';

$config = array (
 'binddn' => $bindDn,
 'bindpw' => $bindPw,
 'basedn' => $baseDn,
 'port'   => $ldapPort,
 'host'   => $ldapHost
);

$ldap = Net_LDAP2::connect($config);

if (PEAR::isError($ldap)) {
 die('LDAPサーバに接続できませんでした:' . $ldap->getMessage() . "n");
}

$filter0 = Net_LDAP2_Filter::create('uidNumber', 'any', 'ANY');
$filter_Admin = Net_LDAP2_Filter::create('uid', 'equals', 'administrator');
$filter_not_Admin = Net_LDAP2_Filter::combine('not', $filter_Admin);
$filter_Guest = Net_LDAP2_Filter::create('uid', 'equals', 'guest');
$filter_not_Guest = Net_LDAP2_Filter::combine('not', $filter_Guest);
$filter = Net_LDAP2_Filter::combine('and',array($filter0, $filter_not_Admin, $filter_not_Guest));

$attrs = array('uid', 'uidNumber');

$options = array(
 'scope' => 'sub',
 'attributes' => $attrs
);

$search = $ldap->search($baseDn, $filter, $options);
if (PEAR::isError($search)) {
 die('LDAP検索に失敗しました: ' . $search->getMessage() . "n");
}
echo $search->count() . "エントリみつかりましたn";

foreach ($search as $dn => $entry) {
 echo 'DN: ' . $dn . "n";
 echo 'uidNumber: ' . $entry->getValue('uidNumber') . "n";
}

?>
if (PEAR::isError($search)) {
    die($search->getMessage() . "n");
}

Net_LDAP2 を使って LDAP エントリを検索する方法(匿名)

Net_LDAP2を使ってLDAPエントリを匿名で検索する方法は以下の通り。

<?php

require_once 'Net/LDAP2.php';

$ldapHost = '192.168.1.101';
$ldapPort = 389;
$baseDn   = 'ou=Users,dc=example,dc=com';

$config = array (
 'basedn' => $baseDn,
 'port'   => $ldapPort,
 'host'   => $ldapHost
);

$ldap = Net_LDAP2::connect($config);

if (PEAR::isError($ldap)) {
 die('LDAPサーバに接続できませんでした:' . $ldap->getMessage() . "n");
}

$filter0 = Net_LDAP2_Filter::create('uidNumber', 'any', 'ANY');
$filter_Admin = Net_LDAP2_Filter::create('uid', 'equals', 'administrator');
$filter_not_Admin = Net_LDAP2_Filter::combine('not', $filter_Admin);
$filter_Guest = Net_LDAP2_Filter::create('uid', 'equals', 'guest');
$filter_not_Guest = Net_LDAP2_Filter::combine('not', $filter_Guest);
$filter = Net_LDAP2_Filter::combine('and',array($filter0, $filter_not_Admin, $filter_not_Guest));

$attrs = array('uid', 'uidNumber');

$options = array(
 'scope' => 'sub',
 'attributes' => $attrs
);

$search = $ldap->search($baseDn, $filter, $options);
if (PEAR::isError($search)) {
 die('LDAP検索に失敗しました: ' . $search->getMessage() . "n");
}
echo $search->count() . "エントリみつかりましたn";

foreach ($search as $dn => $entry) {
 echo 'DN: ' . $dn . "n";
 echo 'uidNumber: ' . $entry->getValue('uidNumber') . "n";
}

?>

Net_LDAP2 を使って LDAP サーバへ接続する方法

Net_LDAP2を使ってLDAPサーバへ接続する方法は以下の通り。

<?php

require_once 'Net/LDAP2.php';

$bindDn   = 'cn=Manager,dc=example,dc=com';
$bindPw   = 'password';
$ldapHost = '192.168.1.101';
$ldapPort = 389;
$baseDn   = 'ou=Users,dc=example,dc=com';

$config = array (
 'binddn' => $bindDn,
 'bindpw' => $bindPw,
 'basedn' => $baseDn,
 'port'   => $ldapPort,
 'host'   => $ldapHost
);

$ldap = Net_LDAP2::connect($config);

if (PEAR::isError($ldap)) {
 die('LDAPサーバに接続できませんでした:' . $ldap->getMessage() . "n");
} else {
 echo "LDAPサーバに接続しましたn";
}

?>

Net_LDAP2 を使って LDAP サーバへ接続する方法(匿名)

Net_LDAP2を使ってLDAPサーバへ匿名で接続する方法は以下の通り。

<?php

require_once 'Net/LDAP2.php';

$ldapHost = '192.168.1.101';
$ldapPort = 389;
$baseDn   = 'ou=Users,dc=example,dc=com';

$config = array (
 'basedn' => $baseDn,
 'port'   => $ldapPort,
 'host'   => $ldapHost
);

$ldap = Net_LDAP2::connect($config);

if (PEAR::isError($ldap)) {
 die('LDAPサーバに接続できませんでした:' . $ldap->getMessage() . "n");
} else {
 echo "LDAPサーバに接続しましたn";
}

?>
TOP

INFORMATION

当サイトは備忘録であり、その内容を保証するものではありません。 当サイトまたはリンク先によるいかなるトラブルや損害に関しても、一切の責任を負いかねます。 当サイトの内容を無断で転用したり、転載する等の行為はおやめください。