2014-02-05 2 views
0

У меня есть файл, который имеет список хостов, и у меня есть другой файл, который имеет список команд. Я пытаюсь выполнить цикл разместить файл и запустить все команды в командном файле с помощью команды paramiko.The в основном проверки параметров, как время безотказной работы, текущий центрального процессора, количество пользователей, зарегистрированных в т.д. это код, который у меня есть:Цитирование через список хостов и команд в Paramiko и сохранение результата в excel с заголовками столбцов

#! /usr/bin/python 

import sys 
import paramiko 


username = "log_me_in" 
password = "secret" 

# Opens files in read mode 
f1 = open(hostfile,"r") 
f2 = open(commandfile,"r") 

# Creates list based on f1 and f2 
devices = f1.readlines() 
commands = f2.readlines() 



for device in devices: 
    device = device.rstrip() 
    for command in commands: 
     command = command.rstrip() 
     ssh = paramiko.SSHClient() 
     ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
     ssh.connect(device, username=username, password=password) 
     stdin, stdout, stderr = ssh.exec_command(command) 
     output = stdout.read() 
     data =[] 
     data.append(output) 
     ssh.close() 
f1.close() 
f2.close() 

проблема У меня есть после выполнения команд на удаленной машине. Мне нужно, чтобы stdout каждой команды, которая была выполнена, хранилась в листе excel в одной строке для каждого устройства description here, как это. Я слышал о библиотеках python, таких как xlwt, но искал информацию о том, как это сделать.

+0

было бы приемлем для записи в файл CSV, а затем импортировать его из Excel? Это намного проще (поскольку 'csv' является частью стандартной библиотеки Python) –

+0

@ Ricardo..yes..even, это прекрасно .. вы знаете, как это сделать? – Amistad

+0

Не могли бы вы добавить пример того, как выглядит 'output'? Вам нужно разбить его на компоненты и не знать формат ... –

ответ

2

В течение следующих двух кусков кода, я буду предполагать существование следующих:

header = ["Device Name", "Uptime", "CPU", "Count of users logged in"] 
data = [ 
    ('ns1', '200 days', '10%', '15'), 
    ('ns2', '23 days', '12%', '23'), 
    ('ns3', '45 days', '56%', '108') 
] 

Использование CSV делает его немного легче кода и легко развернуть на любой машине, потому что это Безразлично «т требует установки какого-либо дальнейшего пакета (csv поставляется с Python):

import csv 

with open('output.csv', 'wb') as csvfile: 
    spamwriter = csv.writer(csvfile, dialect='excel') 
    spamwriter.writerow(header) 
    for row in data: 
     spamwriter.writerow(row) 

будет производить следующий output.csv файл:

Device Name,Uptime,CPU,Count of users logged in 
ns1,200 days,10%,15 
ns2,23 days,12%,23 
ns3,45 days,56%,108 

Теперь, если вы действительно хотите использовать xlwt, здесь будет эквивалент (добавление дополнительного желтого цвета фона для заголовка):

import xlwt 

book = xlwt.Workbook() 
sheet = book.add_sheet("foobar") 

# Put the header in the appropriate cells... 
style = xlwt.easyxf('pattern: pattern solid, fore-colour yellow') 
for col, text in enumerate(header): 
    sheet.write(0, col, text, style) 

# Now, let's write the contents 

for row, data_in_row in enumerate(data): 
    for col, text in enumerate(data_in_row): 
     sheet.write(row + 1, col, text) 

book.save("example.xls") 
+0

@ Ricardo .., хотя это действительно полезно, я ударил несколько дорожных блоков. Я не знаю, какие данные нужно вводить в CSV заранее. Мне нужно для хранения вывода paramiko для каждого устройства в массиве, а затем записать его в csv, который из-за моего ограниченного знания python, я не уверен, как это сделать. Кроме того, некоторые из выходных команд уже имеют в них запятые. Будет ли это зачеркивать запись в файл csv? – Amistad

+0

Ну, это всего лишь пример данных. Если бы вы развернули свой вопрос, показывая некоторые примеры данных, тогда было бы легче ответить :) –

+0

Хорошо ... Я также дал вам пример того, как работать с 'xlwt'. Все, что требуется сейчас, - это преобразовать свой вход в то, с чем могут работать два (но мне еще нужен образец вашего ввода) –

 Смежные вопросы

  • Нет связанных вопросов^_^