php实现cmdb
PHP实现CMDB系统
CMDB(配置管理数据库)用于集中管理IT基础设施的配置信息。以下是使用PHP实现CMDB系统的关键方法:
数据库设计
创建核心数据表结构:
CREATE TABLE assets (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
type ENUM('server', 'network', 'storage') NOT NULL,
ip_address VARCHAR(15),
status ENUM('active', 'retired', 'maintenance'),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE relationships (
id INT AUTO_INCREMENT PRIMARY KEY,
source_id INT NOT NULL,
target_id INT NOT NULL,
relation_type VARCHAR(100),
FOREIGN KEY (source_id) REFERENCES assets(id),
FOREIGN KEY (target_id) REFERENCES assets(id)
);
基础功能实现
资产CRUD操作示例:
class AssetController {
public function create($data) {
$stmt = $pdo->prepare("INSERT INTO assets (name, type, ip_address) VALUES (?, ?, ?)");
$stmt->execute([$data['name'], $data['type'], $data['ip']]);
return $pdo->lastInsertId();
}
public function getRelations($assetId) {
$stmt = $pdo->prepare("SELECT * FROM relationships WHERE source_id = ? OR target_id = ?");
$stmt->execute([$assetId, $assetId]);
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
}
前端界面集成
使用Bootstrap构建响应式界面:
<div class="asset-form">
<form method="POST" action="/assets/create">
<select name="type" class="form-control">
<option value="server">服务器</option>
<option value="network">网络设备</option>
</select>
<input type="text" name="ip" placeholder="IP地址" required>
</form>
</div>
高级功能实现
自动发现功能示例:
class NetworkScanner {
public function scanSubnet($subnet) {
$ping = new Ping();
$activeHosts = [];
for($i=1; $i<255; $i++){
$ip = "$subnet.$i";
if($ping->ping($ip)){
$activeHosts[] = $ip;
}
}
return $activeHosts;
}
}
安全措施
实施访问控制:
function checkPermission($userRole, $requiredRole) {
$roles = ['admin' => 2, 'operator' => 1, 'viewer' => 0];
return $roles[$userRole] >= $roles[$requiredRole];
}
扩展建议
- 使用Laravel或Symfony框架加速开发
- 集成LDAP/AD认证
- 添加REST API接口
- 实现配置变更审计日志
- 开发自动化同步插件
典型系统应包含资产管理、关系映射、变更跟踪、报表生成等核心模块。实际开发时需要根据具体需求调整数据模型和功能设计。







