-1 是不限长度,一顿乱改,只要修改 invoke_shell() 的长度就行,比如 invoke_shell(width=1024),默认是 80,太小了,命令比较长会被截断,我理解没错的话
加了宽度的效果:
默认宽度的效果:(命令显示不全)
@shawn 大佬有没有遇到过这种情况,求助!
抱歉,复制漏了,cmd 是一串命令,如下面贴出的命令:
jdbcloader card \
--jdbcurl=jdbc:mysql://192.xx.xx.xx:xxxx/test_center \
--jdbcuser=root \
--jdbcpassword=123456 \
--jdbctable=card \
--jdbcdriver=com.mysql.jdbc.Driver
目前是对发送函数做了个 while 循环,匹配到结束符就停止,然后输出 recv 的内容。
def send(cmd, channel):
# 结束符
end_symbol = ['>', '>>', ']#']
channel.send(cmd + '\n')
results = ''
i = 0
while True:
time.sleep(1)
result = channel.recv(-1).decode("utf-8")
results += result
# 包含结束符则停止循环
if results[-2:] in end_symbol or results[-1:] in end_symbol:
break
i += 1
# 避免死循环,10秒后停止
if i > 10:
break
print(results)
return results
遇到的问题:
就如描述中截图,长的命令只显示了一小部分,或者说只返回了一小部分,短的命令可以显示全部
考虑这种方式去执行,再看看有没有这种可能性
感谢大佬,我看看
感谢感谢,我查下这块的资料!
望不吝赐教,感谢大佬们~
感谢大佬~