gpt4 book ai didi

python - 通过串行通信自动登录操作

转载 作者:行者123 更新时间:2023-12-01 00:32:25 26 4
gpt4 key购买 nike

我正在尝试自动执行通过串行进行通信的设备的登录功能。为了达到 login: 提示,我必须在设备启动时按 Enter 键,然后一段时间后,login: 提示将会出现,一旦程序发现 ' login:' 字符串输入用户名(或至少是计划)。输入正确的用户名后,会出现密码:提示,如果我输入正确的密码,我成功登录设备,如果我输入错误的密码,我必须重新开始(这意味着再次输入用户名)。另外,如果我第一次登录失败,请尝试将 login: 提示更改为 username:

到目前为止我已经做到了,但是

import serial
import re
from time import sleep
import time

ser = serial.Serial('COM3', timeout=1)
ser.baudrate = 115200

def auto_login():
while True:
output = ser.read(10000).decode('utf-8', 'ignore')
testmode_command = ser.write("\r\n".encode())
print(output)
if "1 : press [Enter] for test mode / [Esc+Enter] for plain Linux" in output:
ser.write(testmode_command)
if " login:" in output:
break



def login_repeat():
login = b"root \r\n"
output = ser.read(10000).decode('utf-8', 'ignore')
print(output)
if " login:" in output:
ser.write(login)
if "Username:" in output:
ser.write(login)

def pass_word():
password = b"p \r\n"
time.sleep(0.1)
output = ser.read(10000).decode('utf-8', 'ignore')
print(output)
if "Password:" in output:
ser.write(password)

我得到的结果是:

Login incorrect
Username:
root

System starting up, please try later

Login incorrect
Username:
root

出于某种原因,我看起来输入首先发送的是 \r\n 命令,而不是用户名,然后是命令。知道如何解决这个问题吗?

最佳答案

在发送命令之前添加time.sleep(0.1),如下所示:

time.sleep(0.1)
ser.write(b"root")
time.sleep(0.1)
ser.write('\r'.encode())

关于python - 通过串行通信自动登录操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58081264/

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