作者VivianAnn (薇薇安安)
看板Python
標題[問題] ncclient的問題
時間Fri Apr 29 16:12:06 2022
hi,一直以來感謝版友熱心的回答
本人工作上要使用ncclient這個library,不知這裡有沒有人研究過
我的問題是,我現在要用ncclient建立一個 NETCONF 的session到遠端機器
以下是部份code:
from ncclient import manager
import unittest
conn = manager.connect(host=***, username=***, password=***)
with conn.locked(target='running'):
conn.discard_changes()
suite = unittest.TestSuite()
suite.addTest(...)
suite.addTest(...)
unittest.TextTestRunner(verbosity=2).run(suite)
如果不用conn.locked (session不lock),則運行上沒有問題
有lock的話,在某個test中會出現以下錯誤信息:
ncclient.operations,rpc.RPCError: Module "gold-storm" is DS-locked by 8738585
代表另有一個session已經lock住這個module,我必須要得到這個session的id並刪除之
然而,我用session_id的方法查到都是三個數字,比如:290
這個8738585不知是怎麼來的
先感謝各位願意看完,我要先休息了,描述得不夠清楚的地方請多包涵
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 108.254.89.199 (美國)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1651219928.A.C97.html
1F:→ Hsins: 你應該先說一下 session_id 怎麼查的 04/30 16:10
2F:→ VivianAnn: 樓上,conn.session_id 04/30 23:51
3F:→ Hsins: 不知道為什麼你的 sessionId 都是三位數,這不太合理… 05/01 00:15
4F:→ Hsins: 另外你 conn 拿到的 session 是當前的,不代表 locked 的也 05/01 00:26
5F:→ Hsins: 是當前 client 的 05/01 00:26
6F:→ VivianAnn: Hsin, 你用session_id查到的是七位數嗎 05/01 00:26
7F:→ Hsins: 他的位數沒有固定呀,我拿到的是四位數,但你看其他文件也 05/01 00:28
8F:→ Hsins: 有超過七位數的狀況 05/01 00:28
9F:→ VivianAnn: 我是想用conn.kill_session()把那個妨礙我的session刪 05/01 00:29
10F:→ VivianAnn: 除 05/01 00:29
11F:→ VivianAnn: 但我發現conn.kill_session(8738535) 不work 05/01 00:32
12F:→ Hsins: 的確可以這樣殺,但原始碼裡說 kill_session() 只能殺 NETC 05/01 00:38
13F:→ Hsins: ONF session,不確定你拿到那個七位數的 session 是不是來 05/01 00:38
14F:→ Hsins: 自 NON-NETCONF 的… 05/01 00:38
15F:→ Hsins: 沒有其他錯誤訊息了嗎?有沒有試過去你的 host 上面查看 lo 05/01 00:47
16F:→ Hsins: g? 05/01 00:47
18F:→ VivianAnn: 看到的session_id是368,請問有辦法判斷是否為 05/01 17:24
19F:→ VivianAnn: netconf session或non-netconf session在干擾嗎? 05/01 17:25
20F:→ Hsins: 這我就不清楚了,如果是可以的話,我會先將 server 端重新 05/01 23:10
21F:→ Hsins: 打開一次,紀錄當下的 session 再由 client 連線去排查 05/01 23:10
22F:→ VivianAnn: 可是不是要先讓client和server連線才有session嗎? 05/01 23:53
23F:→ mikemike1021: 如果只有一個測試也會錯嗎?再猜是不是 unittest 造 05/02 06:23
24F:→ mikemike1021: 成的 05/02 06:23
25F:→ VivianAnn: 只有一個也會錯 05/02 09:56
26F:推 lycantrope: 很像conn鎖住,unitest又創新session就無法存取了 05/02 10:40
27F:推 lycantrope: log也有寫最早create的session鎖住所以後面模組無法 05/02 10:42
28F:→ lycantrope: 存取 05/02 10:43
29F:→ VivianAnn: The unittest did not create a new session and a new 05/03 14:54
30F:→ VivianAnn: lock. Below is how I list current active sessions 05/03 14:55
31F:→ VivianAnn: and locks: 05/03 14:55
NETCONF request (sent right after I lock the running datastore):
<netconf-state xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">
<datastores/>
<sessions/>
<statistics/>
</netconf-state>
NETCONF response:
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"
xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
<netconf-state xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring">
<datastores>
<datastore>
<name>running</name>
<locks>
<global-lock>
<locked-by-session>0</locked-by-session>
<locked-time>1970-01-01T01:00:00+01:00</locked-time>
</global-lock>
</locks>
</datastore>
<datastore>
<name>startup</name>
</datastore>
<datastore>
<name>candidate</name>
</datastore>
</datastores>
<sessions>
<session>
<session-id>390</session-id>
<transport>netconf-ssh</transport>
<username>root</username>
<source-host>10.42.0.91</source-host>
<login-time>2019-03-10T11:59:53+01:00</login-time>
<in-rpcs>2</in-rpcs>
<in-bad-rpcs>0</in-bad-rpcs>
<out-rpc-errors>0</out-rpc-errors>
<out-notifications>0</out-notifications>
</session>
</netconf-state>
</data>
※ 編輯: VivianAnn (168.127.213.159 美國), 05/03/2022 14:58:54