如何使用 LDIF 文件修改 IPv4 地址

How to modify IPv4 address using LDIF Files

我需要使用 LDIF 文件将一个 IPv4 地址更改为多个 IPv4 地址。用于创建 HSS ESM 的原始 LDIF 文件如下:

dn: HSS-EsmImsi=312720000000207,HSS-EsmSubscriptionId=BR-02061969,
    HSS-EsmSubscriptionContainerName=HSS-EsmSubscriptionContainer,
    applicationName=HSS_ESM,nodeName=bnyrgvhss1
    changeType: modify
    add: HSS-EsmUserProfileId
    HSS-EsmUserProfileId: HSS-EsmProfile_APCCI_METERING
    -
    add: HSS-EsmUserIpV4Address
    HSS-EsmUserIpV4Address: 4.11.12.13
    -
    add: HSS-EsmMsisdn
    HSS-EsmMsisdn: +1 234 567 8901
    -

现在,我需要做两件事:

  1. 更改 IPv4 地址(例如 10.13.15.17)。
  2. 修改 HSS ESM 用户对象 Class,因此 HSS-EsmUserIpV4Address 将存储多个 IPv4 地址。

根据 Erickson 的 - ESM LDAP 接口描述 这应该使用以下格式的字符串完成: [contextId1]$[IPv4-Address1]\n [contextId2]$[IPv4-Address2]\n ...[contextIdNN]$[IPv4-AddressNN]\n.

图例:

  1. [contextId] 数据类型为 uint32。
  2. $ 是常数(美元符号)。
  3. [IPv4-Address] IP 地址是字符串数据类型的点分十进制,例如10.12.14.16.
  4. \n 是一个常量(新行)。

我是 LDAP 的新手,如果您能帮助我了解 LDIF 文件的格式,以便 HSS-EsmUserIpV4Address 可以存储,例如,以下 IPv4 地址:

29.10.1.20
79.10.1.21
89.10.1.22

我尝试更改 LDIF 文件以执行 DeleteAdd,如下所示:

... (the original code)...
changeType: modify
delete: HSS-EsmUserProfileId
-
add: HSS-EsmUserProfileId
HSS-EsmUserProfileId: 29.10.1.20\n79.10.1.21\n89.10.1.22\n
-

但是,它不起作用(没有错误消息,只是没有变化)。

我将不胜感激任何帮助,我会一直在这里(工作)直到我实现这一目标。

add: HSS-EsmUserProfileId
HSS-EsmUserProfileId: 29.10.1.20\n79.10.1.21\n89.10.1.22\n

首先,您更改了错误的属性。应该是

add: HSS-EsmUserIpV4Address
HSS-EsmUserIpV4Address: 29.10.1.20\n79.10.1.21\n89.10.1.22\n

而且你可能已经破坏了这个属性的原始值,所以你需要把它放回去:

delete: HSS-EsmUserProfileId
add: HSS-EsmUserProfileId
HSS-EsmUserProfileId: HSS-EsmProfile_APCCI_METERING

其次,我不知道你从哪里得到这种带有 \n 分隔符的格式。我在您引用的文档中没有看到它。多个属性值的正常 LDIF 语法为:

add: HSS-EsmUserIpV4Address
HSS-EsmUserIpV4Address: 29.10.1.20
HSS-EsmUserIpV4Address: 79.10.1.21
HSS-EsmUserIpV4Address: 89.10.1.22

请注意,这将保留以 4$ 开头的先前值,除非您之前像上面那样使用 delete:

谢谢 EJP,你让我找到了答案和我之前错误的原因。

解决方法:在LDIF文件中使用changeType: modifyreplace,或者delete.

正确的 LDIF 文件应该是:

dn: HSS-EsmImsi=312720000000207,HSS-EsmSubscriptionId=BR-02061969,
HSS-EsmSubscriptionContainerName=HSS-EsmSubscriptionContainer,
applicationName=HSS_ESM,nodeName=bnyrgvhss1
changeType: modify
add: HSS-EsmUserProfileId
HSS-EsmUserProfileId: HSS-EsmProfile_APCCI_METERING
-
delete: HSS-EsmUserIpV4Address
-
add: HSS-EsmUserIpV4Address
HSS-EsmUserIpV4Address: 19.10.1.20
HSS-EsmUserIpV4Address: 29.10.1.21
HSS-EsmUserIpV4Address: 39.10.1.22
-
add: HSS-EsmMsisdn
HSS-EsmMsisdn: +12345678901
-

这将从属性中删除一个特定值并添加 2 个其他值:

dn: HSS-EsmImsi=312720000000207,HSS-EsmSubscriptionId=BR-02061969,
HSS-EsmSubscriptionContainerName=HSS-EsmSubscriptionContainer,
applicationName=HSS_ESM,nodeName=bnyrgvhss1
changeType: modify
delete: HSS-EsmUserIpV4Address
HSS-EsmUserIpV4Address: 29.10.1.20
-
add: HSS-EsmUserIpV4Address
HSS-EsmUserIpV4Address: 19.10.1.23
HSS-EsmUserIpV4Address: 29.10.1.24
-

以下代码将删除该属性的所有实例,并使用其他 3 个值再次添加该属性:

dn: HSS-EsmImsi=312720000000207,HSS-EsmSubscriptionId=BR-02061969,
HSS-EsmSubscriptionContainerName=HSS-EsmSubscriptionContainer,
applicationName=HSS_ESM,nodeName=bnyrgvhss1
changeType: modify
delete: HSS-EsmUserIpV4Address
-
add: HSS-EsmUserIpV4Address
HSS-EsmUserIpV4Address: 19.10.1.25
HSS-EsmUserIpV4Address: 29.10.1.26
HSS-EsmUserIpV4Address: 39.10.1.27
-

我在 How To Use LDIF Files to Make Changes to an OpenLDAP System 上找到了这个。

感谢@EJP 的 巨大 帮助。