gpt4 book ai didi

python - Ansible、Juniper CLI 命令。超时错误?

转载 作者:太空宇宙 更新时间:2023-11-04 05:35:12 35 4
gpt4 key购买 nike

我正在尝试将我用 Python 制作的自动化脚本传输到 ansible(公司请求),而我之前从未使用过 ansible。我试过“wait_for:”,但我也没有让它工作。在脚本中,我可以设置 dev.timeout=None 或我需要的任何内容。我发现很难弄清楚在哪里可以做到这一点。我尝试在“ansible.cfg”文件中设置超时。但这不起作用。我可以执行简单的命令,例如:

cli="显示版本",或cli="显示系统固件"。

以下是我的剧本:

    - hosts: local
roles:
- Juniper.junos
connection: local
gather_facts: no

tasks:
- junos_cli:
host={{ inventory_hostname }}
user=root
passwd=Hardware1
cli="request system snapshot slice alternate"
dest="{{ inventory_hostname }}.txt"

运行后,大约 120 秒后,出现以下错误:

fatal: [192.168.2.254]: FAILED! => {"changed": false, "failed": true, "module_stderr": "/usr/local/lib/python2.7/dist-packages/jnpr/junos/device.py:652: RuntimeWarning: CLI command is for debug use only!\n  warnings.warn(\"CLI command is for debug use only!\", RuntimeWarning)\nTraceback (most recent call last):\n  File \"/home/pkb/.ansible/tmp/ansible-tmp-1457428640.58-63826456311723/junos_cli\", line 2140, in <module>\n    main()\n  File \"/home/pkb/.ansible/tmp/ansible-tmp-1457428640.58-63826456311723/junos_cli\", line 177, in main\n    dev.close()\n  File \"/usr/local/lib/python2.7/dist-packages/jnpr/junos/device.py\", line 504, in close\n    self._conn.close_session()\n  File \"/usr/local/lib/python2.7/dist-packages/ncclient/manager.py\", line 158, in wrapper\n    return self.execute(op_cls, *args, **kwds)\n  File \"/usr/local/lib/python2.7/dist-packages/ncclient/manager.py\", line 228, in execute\n    raise_mode=self._raise_mode).request(*args, **kwds)\n  File \"/usr/local/lib/python2.7/dist-packages/ncclient/operations/session.py\", line 28, in request\n    return self._request(new_ele(\"close-session\"))\n  File \"/usr/local/lib/python2.7/dist-packages/ncclient/operations/rpc.py\", line 342, in _request\n    raise TimeoutExpiredError('ncclient timed out while waiting for an rpc reply.')\nncclient.operations.errors.TimeoutExpiredError: ncclient timed out while waiting for an rpc reply.\n", "module_stdout": "", "msg": "MODULE FAILURE", "parsed": false}

我认为是超时,我可能是错的。但是,如此简单的任务却让我望而却步,这让我很头疼。

最佳答案

好的,我设法解决了这个问题。

执行 CLI (junos_cli) 的 Ansible 模块不支持超时。因此,我进入了:

/etc/ansible/roles/Juniper.junos/library/junos_cli

下面一行:

dev = Device(args['host'], user=args['user'], password=args['passwd'],
port=args['port'], gather_facts=False).open()

我补充说:

dev.timeout=None

这会将计时器设置为无穷大,因此我在执行“请求系统快照切片交替”时有时间进行格式化。

希望这可以帮助其他人通过可靠的自动化使用 junos cli 做一些事情。

关于python - Ansible、Juniper CLI 命令。超时错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35863701/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com