2017-02-27 42 views
0

enter image description here我需要使用LDIF文件將IPv4地址更改爲多個IPv4地址。這是用來創建HSS ESM原LDIF文件如下:如何使用LDIF文件修改IPv4地址

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地址。

根據埃裏克森的 - ESM LDAP接口說明這應與以下格式的字符串來完成:[contextId1] $ [IPv4的地址1] \ n [contextId2] $ [IPv4的地址2 ] \ n ... [contextIdNN] $ [IPv4-AddressNN] \ n

圖例:

  1. [CONTEXTID]數據類型是UINT32。
  2. $是一個常數(美元符號)。
  3. [IPv4地址] IP地址是字符串數據類型的點分十進制數,例如, 10.12.14.16。
  4. \ n是一個常量(新行)。

我是新來的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 
- 

但是,它沒有工作(沒有錯誤消息,只是沒有變化)。

我會感謝任何幫助,我在這裏(在工作)留下來,直到我做到這一點。

+0

'2 $'不是'uint32'後面跟着'$',它是一個ASCII數字,後跟一個'$'。奇怪的格式。我希望能看到多個'HSS-EsmUserProfileId'屬性值。你能提供一個參考鏈接嗎? – EJP

+0

'2'是一個uint32值,'$'用作IPv4地址的分隔符,所以如果你寫210.11.12.13,你不會混淆'210'和'2 $ 10'。 –

+0

編號'0x00000002'是'uint32'的值。 「2」是佔用8位的單個ASCI數字值「0x32」。錯誤是Erikson的,不是你的,你引用的文檔是自相矛盾的。首先,我會向他們抱怨。 – EJP

回答

1
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 

其次,我不知道你在哪裏得到這個格式\n分隔符。我沒有在你引用的文檔中看到它。多個屬性值正常LDIF語法是:

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$的前值,除非你以前使用delete:如上。

+0

'\ n'只是表示/標記有'NEW_LINE'字符,並且文本行在問題或答案中沒有中斷。 –

+0

@BinyaminRegev'\ n'在我的回答中沒有中斷,而且也沒有打算這麼做。它是否在你的問題中這樣做沒有任何明顯的相關性。在你引用的Erikson文檔中沒有關於'\ n'的信息。我建議你嘗試這裏提到的兩種技術。而不是爭論。 – EJP

0

謝謝EJP,你讓我走上了前面錯誤的答案和理由。

解決方案:在LDIF文件中使用changeType: modifyreplacedelete

和正確的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 
- 

這將從屬性中刪除一個特定的值,並添加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: 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 
- 

我在012上找到了這個。

Screen shot of the attached link

感謝您@EJP他巨大幫助。

+0

'delete'選項不需要您示例中的值線。它將刪除指定屬性的所有值,如鏈接中所述。 LDIF格式在RFC中定義。不需要看任意的互聯網垃圾。這裏沒有什麼不同意我的回答,特別是你已經證明我對'\ n'分隔符的猜想是正確的。 – EJP