作者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/cn.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