python - Junos PyEZ 从 Python 输入密码

标签 python automation passwords pyez

您好,我目前正在学习 PyEZ 以从 Python 配置 JunOS 设备。但是我被困在某个问题上。我希望能够通过 Python 创建新用户,但我不知道如何使用 python 输入密码。我尝试了很多不同的东西,但似乎无法让它发挥作用。任何建议将不胜感激

from jnpr.junos import Device
from jnpr.junos.utils.config import Config  

dev = Device(host='192.168.56.2', user='root', password='Juniper1')
dev.open()
cu=Config(dev)

new_User='set system login user Read class read-only authentication plain-text-password'
pass_New='Read1234'
pass_Repeat='Read1234'

cu.load(new_User, format='set')
cu.load(pass_New,format='set')
cu.load(pass_Repeat,format='set')

这里是错误

Traceback (most recent call last):
  File "/home/oscar/PycharmProjects/Junos/HelloWorld.py", line 18, in <module>
    cu.load(pass_New,format='set')
  File "/usr/local/lib/python2.7/dist-packages/jnpr/junos/utils/config.py", line 377, in load
    return try_load(rpc_contents, rpc_xattrs)
  File "/usr/local/lib/python2.7/dist-packages/jnpr/junos/utils/config.py", line 343, in try_load
    raise ConfigLoadError(cmd=err.cmd, rsp=err.rsp, errs=err.errs)
jnpr.junos.exception.ConfigLoadError: ConfigLoadError(severity: error, bad_element: Read1234, message: unknown command)

最佳答案

当您使用 PyEZ 应用配置时,模块需要原子配置 blob;它不仅仅是交互式 CLI shell 的替代品。

您看到的错误是因为您在 Junos 期待特定的set 命令时发送了 pass_New 'Read1234'。

为实现您的目标,您必须在代码中提供密码的哈希版本,并将其作为 new_User 命令的一部分发送。

为此,您需要一个散列模块 - 我使用 passlib,因为 OSX 中的 crypt() 函数吐出与 Junos 不兼容的散列,即使它们都是 BSD 变体 - 看图。

#!/usr/bin/python
from passlib.hash import md5_crypt
from jnpr.junos import Device
from jnpr.junos.utils.config import Config

username = 'Read'
plaintext = 'toomanysecrets'

dev = Device(host='192.168.56.2', user='root',passwd='Juniper1')
dev.open()
cu=Config(dev)
hashedpassword = md5_crypt.encrypt(plaintext)
set_command = 'set system login user '+username+' class read-only authentication encrypted-password '+hashedpassword
cu.load(set_command, format='set')
dev.commit()
dev.close()

关于python - Junos PyEZ 从 Python 输入密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32518979/

相关文章:

windows - 我无法通过命令行连接和上传到 FTP

python - 捕获屏幕上所有内容的脚本

passwords - 如何使用事件订阅者 Typeorm 对密码进行哈希处理

Excel求解器密码: what is it and where can it be acquired/bought?

macos - Mac 重置密码提示

python - GStreamer;无法播放错误: "Invalid URI\"\"."

python解析2个已知行之间的文本 block

python - python中的矩阵 split 和乘法

php - 自动将 SQL 表内容发送到电子邮件地址

python - 哪些脚本会进入 Python 包的 bin 文件夹?