OpenLDAP命令大全

查询所有用户的所有信息

ldapsearch -x -LLL -b "dc=example,dc=com" "(objectClass=posixAccount)"

查询用户 sunty 是否存在以及其详细信息

ldapsearch -x -LLL -b "dc=example,dc=com" "(uid=sunty)"

OpenLDAP定时备份

编写一个Shell脚本,用于导出OpenLDAP的数据

vim backup_openldap.sh
#!/bin/bash

# 定义变量
BACKUP_DIR="/path/to/backup/directory"  # 替换为实际的备份目录路径
DATE=$(date +'%Y%m%d%H%M%S')
LDAP_HOST="localhost"  # 如果是远程服务器,修改为实际的主机地址
LDAP_PORT="389"  # 默认LDAP端口
LDAP_BASEDN="dc=example,dc=com"  # 替换为实际的Base DN
LDAP_ADMIN="cn=admin,dc=example,dc=com"  # 替换为实际的管理员DN
LDAP_PASSWORD="yourpassword"  # 替换为实际的管理员密码

# 创建备份目录
mkdir -p "$BACKUP_DIR"

# 导出LDAP数据到备份文件
ldapsearch -x -H ldap://$LDAP_HOST:$LDAP_PORT -D "$LDAP_ADMIN" -w "$LDAP_PASSWORD" -b "$LDAP_BASEDN" -LLL > "$BACKUP_DIR/ldap_backup_$DATE.ldif"

# 压缩备份文件(可选)
gzip "$BACKUP_DIR/ldap_backup_$DATE.ldif"

# 删除旧备份(保留最近7天的备份)
find "$BACKUP_DIR" -type f -mtime +7 -name '*.ldif.gz' -exec rm {} \;

echo "Backup completed at $DATE"

设置定时任务

crontab -e

设置每天 00:00 备份

0 0 * * * /usr/bin/sh /root/sunty/ldap/backup_openldap.sh

OpenLDAP导入备份

vim recover_openldap.sh
#!/bin/bash

# 定义变量
BACKUP_FILE="/path/to/backup/file.ldif.gz"  # 替换为备份文件路径
LDAP_HOST="localhost"  # 目标LDAP服务器
LDAP_PORT="389"
LDAP_BASEDN="dc=example,dc=com"
LDAP_ADMIN="cn=admin,dc=example,dc=com"
LDAP_PASSWORD="yourpassword"

# 解压备份文件
gunzip -c "$BACKUP_FILE" > /tmp/ldap_restore.ldif

# 清除现有的LDAP数据(可选,根据需求决定是否执行)
#ldapdelete -x -H ldap://$LDAP_HOST:$LDAP_PORT -D "$LDAP_ADMIN" -w "$LDAP_PASSWORD" -r "$LDAP_BASEDN"

# 导入备份数据
ldapadd -x -H ldap://$LDAP_HOST:$LDAP_PORT -D "$LDAP_ADMIN" -w "$LDAP_PASSWORD" -f /tmp/ldap_restore.ldif

echo "Restore completed."