我使用以下脚本在shell中运行一些命令。 基本方案是,我是一个服务器应用程序,我可以使用ssh命令通过远程shell连接到该应用程序。我使用paramiko模仿这个,但问题是我运行以下脚本 -
import sys
#sys.stderr = open('/dev/null') # Silence silly warnings from paramiko
import paramiko as pm
from paramiko import AutoAddPolicy
sys.stderr = sys.__stderr__
import os
class AllowAllKeys(pm.MissingHostKeyPolicy):
def missing_host_key(self, client, hostname, key):
return
HOST = 'localhost'
USER = 'admin'
PASSWORD = 'admin'
client = pm.SSHClient()
#client.load_system_host_keys()
#client.load_host_keys(str(pm.AutoAddPolicy()))
client.set_missing_host_key_policy(pm.AutoAddPolicy())
client.connect(HOST, username=USER, password=PASSWORD, port=2222)
channel = client.invoke_shell()
stdin = channel.makefile('wb')
stdout = channel.makefile('rb')
stdin.write('''
cd /Realms
exit
''')
for line in stdout:
print line.strip('\n')
stdout.close()
stdin.close()
client.close()
执行此操作会显示许多不良字符,如下所示 -
←[39m←[1madmin←[0m@pjajoo-t420:/>
←[39m←[1madmin←[0m@pjajoo-t420:/> cd /Realms
←[39m←[1madmin←[0m@pjajoo-t420:/Realms> exit
有人可以帮我删除这些不良字符,以便它有助于我的调试和答案验证吗?
注意:我使用的是Windows 7。
答案 0 :(得分:0)
答案可以在 - How can I remove the ANSI escape sequences from a string in python
找到我已经使用了上面代码的以下代码行,它对我有用 -
import re
for line in stdout:
print (re.compile(r'\x1b[^m]*m')).sub('', line)
删除了所有不良角色。