打印输出到Ex

2024-05-14 09:38:42 发布

您现在位置:Python中文网/ 问答频道 /正文

格式化以下代码的输出时遇到问题:

import sys
import time
import select
import paramiko
import openpyxl

ip='address'
port='port'
username='uname'
password='pass'

cmd="wstalist | grep -w 'mac\|hostname\|tx\|rx\|lastip\|platform\|distance\|signal'"

ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,port,username,password)

stdin,stdout,stderr=ssh.exec_command(cmd)
outlines=stdout.readlines()
resp=''.join(outlines)
print(resp)

目前的输出如下:

^{pr2}$

您在输出上看到的缩进与out命令上的显示方式完全相同。我想提一下它,以防它会影响到以下内容:

1)以上是单个客户端的信息片段…我需要有关删除“signal”条目的第二个和第三个实例的指导

2)如果有帮助,我希望输出如下所示或(我真正想做的)将信息导出到Excel电子表格:

…所需的输出格式:

Station MAC         Device Name     IP Address      Signal      Distance     Tx/Rx
00:27:22:54:CB:5E   Deon Nelson     192.168.10.1    -66         1950"         144.0/144.0

仅供参考…此命令在Ubiquity无线设备上运行

我提前谢谢你!!!在


Tags: 代码import命令ipcmd信息paramikosignal
2条回答

我使用XlsxWriterlib创建Excel文件:

请看一下网页内容栏中的文档。。在

一些格式化和写入CSV文件就足够了。我修改了它现在可以处理多个输入。。。我选择"mac"作为分隔键。在

input_str = """\
"mac": "04:18:D6:96:7C:51",
    "lastip": "10.1.63.143",
    "tx": 130.0,
    "rx": 39.0,
    "signal": -46,
    "distance": 450,
            "signal": -44,
            "hostname": "Mcdonalds kenako",
            "platform": "PowerBeam M5 400",
            "signal": -44,
    "mac": "80:2A:A8:0E:A3:1E",
    "lastip": "10.1.63.190",
    "tx": 130.0,
    "rx": 130.0,
    "signal": -46,
    "distance": 450,
            "signal": -42,
            "hostname": "Lear sewing PE",
            "platform": "PowerBeam M5 400",
            "signal": -42,
    "mac": "80:2A:A8:7C:9A:C2",
    "lastip": "10.1.63.189",
    "tx": 130.0,
    "rx": 117.0,
    "signal": -62,
    "distance": 4950,
            "signal": -60,
            "hostname": "Sandoll Consultant",
            "platform": "PowerBeam M5 400",
            "signal": -58,"""

input_list = [x.strip() for x in input_str.split(",\n")]  # split and strip indentations
input_list = input_list[::-1]  # reverse list to ignore duplicating keys later

# http://stackoverflow.com/questions/988228/convert-a-string-representation-of-a-dictionary-to-a-dictionary
import ast

input_list_of_dict = ["{" + x + "}" for x in input_list]
parsed_list_of_dict = []
list_seperator_key = "mac"
input_dict = {}
for i in range(len(input_list_of_dict)):
    input_dict.update(ast.literal_eval(input_list_of_dict[i]))
    if list_seperator_key in input_dict:
        parsed_list_of_dict.append(input_dict)
        input_dict = {}

parsed_list_of_dict = parsed_list_of_dict[::-1]  # reverse list again


# writes a CSV file
header = "Station MAC,Device Name,IP Address,Signal,Distance,Tx/Rx\n"

with open("foo.csv", "w") as f:
    f.write(header)

    for i in range(len(parsed_list_of_dict)):
        f.write(parsed_list_of_dict[i]['mac'] + ",")
        f.write(parsed_list_of_dict[i]['hostname'] + ",")
        f.write(parsed_list_of_dict[i]['lastip'] + ",")
        f.write(str(parsed_list_of_dict[i]['signal']) + ",")
        f.write(str(parsed_list_of_dict[i]['distance']) + ",")
        f.write(str(parsed_list_of_dict[i]['tx']) + "/" + str(parsed_list_of_dict[i]['rx']) + "\n")   

现在用Excel打开foo.csv。在

相关问题 更多 >

    热门问题