python - 如何解析提示?
问题描述
我制作了一个 python 脚本来连接到 SSH 服务器:
import paramiko
from paramiko import SSHClient
product.sshClient = SSHClient()
product.sshClient.load_system_host_keys()
product.sshClient.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
product.sshClient.connect(product.ip, port=22, username=login, password=password, look_for_keys=False, allow_agent=False, timeout=5000)
product.sshConnection = product.sshClient.invoke_shell()
except:
product.sshClient.close()
product.sshConnection = None
product.sshClient = None
print(" SSH can't connect '" + login + "'@" + product.ip + "...")
return False
if ssh_waitPrompt(5) == False:
print(" SSH timeout prompt '" + login + "'@" + product.ip + "...")
product.sshClient.close()
product.sshConnection = None
product.sshClient = None
return False
问题是我不知道如何创建 ssh_waitPrompt(timeout) 函数,因为提示格式是“\x1b[1m\x1b[0mMY_PROMPT_NAME\x1b[0m\x1b[1m:/#\x1b[0m””...我有问题用“\x??” 字节
def ssh_waitPrompt(timeout):
bufsize = 65535
output = b""
start = datetime.datetime.now()
start_secs = time.mktime(start.timetuple())
while True:
# Timeout check
now = datetime.datetime.now()
now_secs = time.mktime(now.timetuple())
et_secs = now_secs - start_secs
if et_secs > timeout:
return False
if product.sshConnection.exit_status_ready():
return False
if product.sshConnection.recv_ready():
buf = product.sshConnection.recv(bufsize) #.decode('ascii')
#print(buf)
output = output + buf
vals = output.split(b"\x1b[0m\x1b[1m:/#\x1b[0m ", 1)
if len(vals) > 1:
vals2 = vals[0].split(b"\n")
print(b" SSH prompt : '" + vals2[len(vals2) - 1] + b"'")
output = vals[1]
break
time.sleep(0.200)
buf = product.sshConnection.recv(bufsize) #.decode('ascii')
#print(buf)
output = output + buf
return True
我能怎么做 ?
PS:我需要将我的 scrypt 运行到交互式 shell 模式
解决方案
推荐阅读
- python - 在python的循环条件中添加列表时出错
- r - 在 Vegan 中绘制多变量数据时出现“错误:尺寸不正确”
- asp.net - 即使禁用了 JavaScript 调试,Visual Studio 版本 15.7.1 也会在新的 chrome 实例中调试 aspx 应用程序
- azure - Virtocommerce Storefront Core 部署到 Azure 500 错误
- javascript - node-创建多部分请求以下载图像
- android - 推送通知未在 kitkat 4.4.2 版本中显示
- c++ - 当我将 unique_ptr 或 shared_ptr 传递给引用指向对象的第三方函数时崩溃
- angular - 替代 ngx-datatable-group-footer
- ios - 使用 WebRTC 通过 ReplayKit 发送 iOS 设备的屏幕截图
- python - pyBarcode - imageWriter 设置