如何使用 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
-
现在,我需要做两件事:
- 更改 IPv4 地址(例如 10.13.15.17)。
- 修改 HSS ESM 用户对象 Class,因此 HSS-EsmUserIpV4Address 将存储多个 IPv4 地址。
根据 Erickson 的 - ESM LDAP 接口描述 这应该使用以下格式的字符串完成: [contextId1]$[IPv4-Address1]\n [contextId2]$[IPv4-Address2]\n ...[contextIdNN]$[IPv4-AddressNN]\n.
图例:
- [contextId] 数据类型为 uint32。
- $ 是常数(美元符号)。
- [IPv4-Address] IP 地址是字符串数据类型的点分十进制,例如10.12.14.16.
- \n 是一个常量(新行)。
我是 LDAP 的新手,如果您能帮助我了解 LDIF 文件的格式,以便 HSS-EsmUserIpV4Address
可以存储,例如,以下 IPv4 地址:
29.10.1.20
79.10.1.21
89.10.1.22
我尝试更改 LDIF 文件以执行 Delete
和 Add
,如下所示:
... (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: modify
和replace
,或者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 的 巨大 帮助。
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
-
现在,我需要做两件事:
- 更改 IPv4 地址(例如 10.13.15.17)。
- 修改 HSS ESM 用户对象 Class,因此 HSS-EsmUserIpV4Address 将存储多个 IPv4 地址。
根据 Erickson 的 - ESM LDAP 接口描述 这应该使用以下格式的字符串完成: [contextId1]$[IPv4-Address1]\n [contextId2]$[IPv4-Address2]\n ...[contextIdNN]$[IPv4-AddressNN]\n.
图例:
- [contextId] 数据类型为 uint32。
- $ 是常数(美元符号)。
- [IPv4-Address] IP 地址是字符串数据类型的点分十进制,例如10.12.14.16.
- \n 是一个常量(新行)。
我是 LDAP 的新手,如果您能帮助我了解 LDIF 文件的格式,以便 HSS-EsmUserIpV4Address
可以存储,例如,以下 IPv4 地址:
29.10.1.20
79.10.1.21
89.10.1.22
我尝试更改 LDIF 文件以执行 Delete
和 Add
,如下所示:
... (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: modify
和replace
,或者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 的 巨大 帮助。