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."