[英]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.