現在、NW機器のコンフィグパラメータシートをPythonで開発をしているのですが、現在のところまでの構築までをまとめました。
コードを公開するので参考にしてください。
NW機器へのSSHアクセスからエクセルシートへの反映までをPythonで自動化
現在、パーツ単位で動作確認をしており、以下は途中まで、エクセルシートへの書き込みプログラムとなります。
動作は、SSHへのアクセス(IP入力)ID/Passとコマンドを記載し、プログラムを実行することで出力結果をエクセルへ落とし込みます。
プログラムコード
※ ssh_test.py
import paramiko import pandas as pd import re #sshアクセス後にコマンド出力をcsvファイルへ書き込み def ssh_cmd(ip, user, password, cmd): client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(ip, username=user, password=password, port=22) stdin, stdout, stderr = client.exec_command(cmd) stdin.write(cmd) for o in stdout: with open('file.csv', 'a', newline='') as f: print(o, file = f) for e in stderr: print(e) return #SSHアクセス/IP/userID/Password/コマンド入力 ssh_cmd('192.168.10.1', 'root', 'password', 'df -h',) print('コンフィグ取得 > csvファイル保存完了') # 出力結果のスペースをカンマ区切りに変換 with open('file.csv', 'r', newline='') as file, \ open('file_out.csv', 'w', newline='') as fileout: text = re.sub(r'\s* ', ',', file.read()) print(text, file = fileout) print('置換完了') # CSVファイルの読み込み col_names = ['c{0:02d}'.format(i) for i in range(100)] data = pd.read_csv('file_out.csv', encoding='cp932', names = col_names) # Excel形式で出力 data.to_excel('excel-data.xlsx', encoding='utf-8') print('CSV > Excel変換完了')
モジュールは以下を使用しています。
- import paramiko : sshアクセス用のモジュール
- import pandas as pd : CSV、エクセルへの読み取り、書き込みをするモジュール
- import re : エクセルのセルごとにデータを出力させるために、スペースをカンマに置換するモジュール
また、以下はそれぞれのコードの説明となります。
- 14行目~:アクセスしたNW機器から取得したデータを「file.csv」へ書き込み
- 24行目:SSHアクセス/IP/userID/Password/コマンド入力
- 30行目:「file.csv」の出力結果のスペースをカンマ区切りに変換し、「file_out.csv」へ出力
- 39行目~:「pandas」で、csvファイル読み込み。「col_names」はカラムを指定し読み込ませないとエラーが発生するために絡む番号を100列指定
- 43行目:「file_out.csv」のデータを、「excel-data.xlsx」へエクセル形式で出力
実行結果 エクセルシートへの反映
PS C:\Python> python .\ssh_test.py コンフィグ取得 > csvファイル保存完了 置換完了 CSV > Excel変換完了 PS C:\Python>
データが反映されたエクセルシートの中身です。
今回は、Linuxサーバへのデータ容量「df -h」を実行した結果を反映しています。
残りの作業は必要なデータ情報の抜粋と、指定のセルの位置へのデータ書き込みとなります。
続きのデータは次回公開します。
サーバーを構築するならVPSがおすすめです。
エンジニアのオンライン学習
ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。
おすすめオンライン教材 | |
自宅で学習ができるオンラインスクール | |
ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。
コメントを残す