J'ai essayé de sortir la liste rpm de la destination de connexion SSH sur une feuille Excel avec Python + openpyxl.

Qu'est-ce que openpyxl

openpyxl est une bibliothèque pour lire et écrire * .xlsx en Python.

A Python library to read/write Excel 2010 xlsx/xlsm files https://openpyxl.readthedocs.org/en/default/

Ce n'est pas très intéressant de l'utiliser seul, mais certaines personnes peuvent être heureuses de pouvoir récupérer les informations de configuration de la destination de connexion SSH et générer automatiquement la feuille de paramètres d'Excel, alors j'ai essayé un peu.

Essayez d'écrire du code

Voici l'exemple de code qui a été créé en essayant les fonctions qui pourraient être utilisées une par une.

createlPackageList.py


import ssh
from openpyxl import Workbook
from openpyxl.styles.borders import Side, Border
from openpyxl.styles import Style, PatternFill

hostname = 'foo.bar.com'
username = 'root'
password = 'XXXXXXXX'
port = 22

client = ssh.SSHClient()
client.set_missing_host_key_policy(ssh.AutoAddPolicy())
client.connect(hostname, username = username, password = password, port = port)
stdin, stdout, stderr = client.exec_command('rpm -qa --queryformat="%{NAME},%{VERSION},%{RELEASE},%{ARCH},%{GROUP}\n" | sort')

wb = Workbook()
ws = wb.active

ws.append(['Name', 'Version', 'Release', 'Architecture', 'Group'])

for line in stdout.read().split('\n'):
    ws.append(list(line.split(',')))

thin_border = Border(left = Side(style = 'thin'), 
                     right = Side(style = 'thin'), 
                     top = Side(style = 'thin'), 
                     bottom = Side(style = 'thin'))
 
my_style = Style(border = thin_border)

for _row in ws.iter_rows('A1:E' + str(ws.max_row)):
    for _cell in _row:
        _cell.style = my_style

lightblueFill = PatternFill(start_color = '0000FFFF',
                      end_color = '0000FFFF',
                      fill_type = 'solid')

for _row in ws.iter_rows('A1:E1'):
    for _cell in _row:
        _cell.fill = lightblueFill

ws.column_dimensions['A'].width = 45
ws.column_dimensions['B'].width = 15
ws.column_dimensions['C'].width = 28
ws.column_dimensions['E'].width = 30

wb.save("output.xlsx")

Puisque openpyxl traite en interne les lignes Excel comme une liste, nous lisons ici le résultat de l'exécution (stdout) de rpm -qa… | sort exécuté à la destination de connexion SSH ligne par ligne, et le divisons colonne par colonne dans la liste. Vous pouvez le convertir et l'ajouter à la feuille de calcul ws de la classe Workbook.

Vous pouvez également encadrer les cellules, spécifier des couleurs ou modifier la largeur des colonnes dans le module Styles.

Fichier Excel généré

Le fichier Excel suivant est créé en exécutant le script ci-dessus. Bien entendu, aucun travail d'édition artificiel n'est effectué après la génération du fichier.

openpyxlの画面出力例_20151202_002.png

Si vous avez une bibliothèque facile à utiliser en Python, c'est très pratique car vous pouvez facilement le faire avec des dizaines de lignes de code.

Environnement: confirmé avec Python 2.7.9 + openpyxl 2.3.1.

Recommended Posts

J'ai essayé de sortir la liste rpm de la destination de connexion SSH sur une feuille Excel avec Python + openpyxl.
Je veux sortir le début du mois prochain avec Python
J'ai essayé d'améliorer l'efficacité du travail quotidien avec Python
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
J'ai essayé de rationaliser le rôle standard des nouveaux employés avec Python
J'ai essayé d'obtenir les informations sur le film de l'API TMDb avec Python
J'ai essayé de sortir LLVM IR avec Python
J'ai essayé de visualiser facilement les tweets de JAWS DAYS 2017 avec Python + ELK
J'ai essayé d'envoyer automatiquement la littérature du nouveau virus corona à LINE avec Python
J'ai essayé de toucher un fichier CSV avec Python
J'ai essayé de résoudre Soma Cube avec python
J'ai essayé d'implémenter le perceptron artificiel avec python
J'ai essayé de résoudre le problème avec Python Vol.1
J'ai essayé de résumer les opérations de chaîne de Python
J'ai étudié comment rationaliser le flux de travail avec Excel x Python ②
J'ai étudié comment rationaliser le flux de travail avec Excel x Python ④
J'ai essayé de savoir comment rationaliser le flux de travail avec Excel x Python ⑤
J'ai essayé d'automatiser la mise à jour de l'article du blog Livedoor avec Python et sélénium.
J'ai étudié comment rationaliser le flux de travail avec Excel x Python ①
J'ai étudié comment rationaliser le flux de travail avec Excel x Python ③
J'ai essayé de comparer la vitesse de traitement avec dplyr de R et pandas de Python
Le 15e temps réel hors ligne, j'ai essayé de résoudre le problème de l'écriture avec python
J'ai essayé la "correction gamma" de l'image avec Python + OpenCV
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
[Python] J'ai essayé de visualiser la relation de suivi de Twitter
Attacher au processus Python de la destination SSH et déboguer
J'ai essayé de résoudre le problème de F02 comment écrire en temps réel hors ligne avec Python
J'ai écrit un doctest dans "J'ai essayé de simuler la probabilité d'un jeu de bingo avec Python"
J'ai essayé de gratter le classement du calendrier de l'avent Qiita avec Python
J'ai essayé de résoudre l'édition du débutant du livre des fourmis avec python
J'ai essayé d'obtenir l'index de la liste en utilisant la fonction énumérer
J'ai essayé d'automatiser l'arrosage du pot avec Raspberry Pi
Exportez le contenu de ~ .xlsx dans le dossier en HTML avec Python
J'ai essayé de corriger "J'ai essayé la simulation probabiliste du jeu de bingo avec Python"
J'ai essayé d'agrandir la taille du volume logique avec LVM
J'ai essayé de collecter automatiquement des images de Kanna Hashimoto avec Python! !!
J'ai essayé de créer une fonction de similitude d'image avec Python + OpenCV
PhytoMine-I a essayé d'obtenir les informations génétiques de la plante avec Python
J'ai essayé de savoir comment rationaliser le flux de travail avec Excel × Python, mon résumé d'article ★
Je souhaite extraire une URL arbitraire de la chaîne de caractères de la source html avec python
J'ai essayé de vérifier l'identification du locuteur par l'API de reconnaissance du locuteur d'Azure Cognitive Services avec Python. # 1
J'ai essayé de vérifier l'identification du locuteur par l'API de reconnaissance du locuteur d'Azure Cognitive Services avec Python. # 2
[Python] J'ai essayé de visualiser le prix en argent de "ONE PIECE" plus de 100 millions de caractères avec matplotlib.
J'ai essayé de résoudre la première question de l'examen d'entrée en mathématiques 2019 de l'Université de Tokyo avec python sympy
[Python] J'ai essayé de visualiser la nuit du chemin de fer de la galaxie avec WordCloud!
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
J'ai essayé d'extraire automatiquement les mouvements des joueurs Wiire avec un logiciel
(Python) J'ai essayé d'analyser 1 million de mains ~ J'ai essayé d'estimer le nombre d'AA ~
Je veux colorer une partie de la chaîne Excel avec Python
J'ai essayé avec les 100 meilleurs packages PyPI> J'ai essayé de représenter graphiquement les packages installés sur Python
J'ai essayé de vérifier et d'analyser l'accélération de Python par Cython
J'ai essayé d'analyser la négativité de Nono Morikubo. [Comparer avec Posipa]
J'ai essayé de visualiser le texte du roman "Weather Child" avec Word Cloud
J'ai mesuré la vitesse de la notation d'inclusion de liste, pendant et pendant avec python2.7.