我有这个脚本:
#!/usr/bin/python
import subprocess
import sys
HOST="cacamaca.caca"
COMMAND="display mac-address 0123-4567-8910"
ssh = subprocess.Popen(["ssh", "%s" % HOST, COMMAND],
shell=False,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
result = ssh.stdout.readlines()
if result == []:
error = ssh.stderr.readlines()
print >>sys.stderr, "ERROR: %s" % error
else:
print result
Run Code Online (Sandbox Code Playgroud)
因为输出有空格和不同的行,它也打印回车和换行,所以结果不是一个干净的:
['\r\n', 'cacamaca.caca\r\n', '信息:最大VTY用户数为10,当前在线VTY用户数\r\n','为2。\ r\n', ' 当前登录时间为 2017-07-20 20:10:54+03:00 DST。\r\n', '---------------- -------------------------------------------------- -------------\r\n', 'MAC Address VLAN/VSI Learned-From Type \r\n', '-------------- -------------------------------------------------- ---------------\r\n', '0123-4567-8910 1234/- Eth-Trunk9 动态 \r\n', '\r\n', '-- -------------------------------------------------- ---------------------------\r\n', '显示的项目总数 = 1 \n', '\r\n', '']
如何删除 '\n' 和 '\r\n' 或至少用空格替换它们,以便结果看起来像原始结果?我确实阅读了很多关于此的答案,但没有任何帮助。
你的result变量是一个列表。我认为您想将结果连接到一个字符串中并打印出来。你可以做到这一点与str.join()这样的
print ''.join(result)
Run Code Online (Sandbox Code Playgroud)
这将导致以下输出
cacamaca.caca
Info: The max number of VTY users is 10, and the number
of current VTY users on line is 2.
The current login time is 2017-07-20 20:10:54+03:00 DST.
-------------------------------------------------------------------------------
MAC Address VLAN/VSI Learned-From Type
-------------------------------------------------------------------------------
0123-4567-8910 1234/- Eth-Trunk9 dynamic
-------------------------------------------------------------------------------
Total items displayed = 1
Run Code Online (Sandbox Code Playgroud)