繁体   English   中英

paramiko-期望更改密码

[英]paramiko-expect change password

我有几个运行 OpenWRT 的路由器,我想使用 paramiko 使用 python 脚本配置它们。 由于 Linux 上的“passwd”命令需要用户输入,因此我使用 paramiko-expect 来处理交互。 更改主机本身的密码如下所示:

root@host1:~# passwd
Changing password for root
New password: new_password 
Retype password: new_password
passwd: password for root changed by root

我的 python 脚本看起来像这样

import paramiko
from paramiko_expect import SSHClientInteraction

try:
    with paramiko.SSHClient() as ssh:
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect('192.168.1.1', 22, 'root', 'old_password')
        
        with SSHClientInteraction(ssh, timeout=10, display=True) as interact:
            interact.expect('.*root.*') # expecting root@host1:~
            interact.send('passwd')
            interact.expect(['.*password.*', '.*password.*']) # expect multiline output both containing the phrase 'password'
            interact.send('new_password')
            interact.expect('.*password.*') # expect 'Retype password: '
            interact.send('new_password')

except Exception as e:
    print(e)

脚本运行没有错误,但我仍然可以使用“old_password”登录,因此密码不会更改。 我本地终端上的 Output 看起来像:

BusyBox v1.30.1 () built-in shell (ash)

Welcome to OpenWRT

root@host1:~# passwd
Changing password for root
New password:
Retype password:

我试过一个简单的

interact.send('ls>test')

有趣的是,文件 test 已创建但它没有内容(在 host1 本身上执行时包含多个文件)。 同样的情况发生在

interact.send('ip a>test')

有趣的是 pwd>test 工作正常,当前目录被添加到测试文件中。 任何人都知道问题是什么或我如何正确调试?

帕拉米科 2.7.2
帕拉米科期望 0.3.0
Python 3.8.5
我用来执行 python 脚本的终端:用于 atom 2.10.1 的 platformio-ide-terminal 插件

问候伊恩

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM