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

时间:2017-02-27 16:52:57

标签: ldap ldif changetype

enter image description here我需要使用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$10.11.12.13
    -
    add: HSS-EsmMsisdn
    HSS-EsmMsisdn: +1 234 567 8901
    -

现在,我需要做两件事:

  1. 更改IPv4地址(例如10.13.15.17)。
  2. 修改 HSS ESM 用户对象类,因此HSS-EsmUserIpV4Address将存储多个IPv4地址。
  3. 根据 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 是CONSTANT(新行)。
    5. 我是LDAP新手,非常感谢LDIF文件应该如何帮助HSS-EsmUserIpV4Address存储,例如,以下IPv4地址:

      2$159.10.1.20
      7$159.10.1.21
      8$159.10.1.22
      

      我尝试将LDIF文件更改为DeleteAdd,如下所示:

      ... (the original code)...
      changeType: modify
      delete: HSS-EsmUserProfileId
      -
      add: HSS-EsmUserProfileId
      HSS-EsmUserProfileId: 2$159.10.1.20\n7$159.10.1.21\n8$159.10.1.22\n
      -
      

      但是,它没有用(没有错误信息,只是没有变化)。

      我会感激任何帮助,我在这里(在工作中)留下来直到我实现这一目标。

2 个答案:

答案 0 :(得分:1)

public SendOrderMap()
{
    Table("Sendorder");
    Id(s => s.ID).GeneratedBy.Sequence("SEQ_SendOrder");
    Map(s => s.YBID);
    Map(s => s.TITLE);
    Map(s => s.MESSAGE).CustomSqlType("NCLOB").CustomType("StringClob");
}

首先,您正在更改错误的属性。它应该是

add: HSS-EsmUserProfileId
HSS-EsmUserProfileId: 2$159.10.1.20\n7$159.10.1.21\n8$159.10.1.22\n

并且您可能已经损坏了此属性的原始值,因此您需要将其归还:

add: HSS-EsmUserIpV4Address
HSS-EsmUserIpV4Address: 2$159.10.1.20\n7$159.10.1.21\n8$159.10.1.22\n

其次,我不知道你在哪里使用delete: HSS-EsmUserProfileId add: HSS-EsmUserProfileId HSS-EsmUserProfileId: HSS-EsmProfile_APCCI_METERING 分隔符获得此格式。我在你引用的文档中没有看到它。多个属性值的常规LDIF语法为:

\n

请注意,这将保留以add: HSS-EsmUserIpV4Address HSS-EsmUserIpV4Address: 2$159.10.1.20 HSS-EsmUserIpV4Address: 7$159.10.1.21 HSS-EsmUserIpV4Address: 8$159.10.1.22 开头的先前值,除非您之前使用过4$

答案 1 :(得分:0)

谢谢EJP,你让我顺利回答了我以前错误的原因。

解决方案:在LDIF文件中使用changeType: modify replacedelete

正确的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: 1$159.10.1.20
HSS-EsmUserIpV4Address: 2$159.10.1.21
HSS-EsmUserIpV4Address: 3$159.10.1.22
-
add: HSS-EsmMsisdn
HSS-EsmMsisdn: +12345678901
-

这将从属性中删除特定值并添加另外两个:

dn: HSS-EsmImsi=312720000000207,HSS-EsmSubscriptionId=BR-02061969,
HSS-EsmSubscriptionContainerName=HSS-EsmSubscriptionContainer,
applicationName=HSS_ESM,nodeName=bnyrgvhss1
changeType: modify
delete: HSS-EsmUserIpV4Address
HSS-EsmUserIpV4Address: 2$159.10.1.20
-
add: HSS-EsmUserIpV4Address
HSS-EsmUserIpV4Address: 1$159.10.1.23
HSS-EsmUserIpV4Address: 2$159.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: 1$159.10.1.25
HSS-EsmUserIpV4Address: 2$159.10.1.26
HSS-EsmUserIpV4Address: 3$159.10.1.27
-

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

Screen shot of the attached link

感谢@EJP的巨大帮助。