InternetWatchの「イニシャルB」で紹介されていたnetwork_sketcherを試しました。
https://internet.watch.impress.co.jp/docs/column/shimizu/1591288.html
普段Pythonなんて使わないし、メインPCにPython入れたくなかった上に、配布元の紹介動画でexeを実行していたので、exe化することろから始めました(笑
VirtualBoxでWin10を適当にインストール、pythonをインストールして、pipコマンドでなんとかpyinstaller.exeをインストール完了。
python ./network_sketcher.py
で起動することを確認。
(必要モジュールとかは「python3 -m pip install -r requirements.txt」でインストールしろ、って書いてあったので、pip install -r requirements.txt を実行)
配布元の「How to create the exe file for Windows using pyinstaller」のコマンドをpathをちょっといじって実行、38MiBほどのexeができました(でかいなぁ)。
exeを起動すると、
_tkinter.TclError: couldn't open "ns_logo.png": no such file or directory
っていうエラーが、、、。
Copilotさんに尋ねると、いろいろ回答してくれたけど、コマンドオプションやらspecファイル修正でも解決できなかった。。。
「ns_logo.pngの読み込みに失敗しているだけなのだから、読み込まなければ良い」
と思いつき、ns_logo.pngをBASE64エンコードして、ソースファイル内にべた書きしました。(BASE64エンコード方法と、ソースファイルへの修正はCopilotさんに考えてもらいました)
その後、pyinstaller.exe でexeを作成。
問題なく起動できました。
さて、本題にとりかかろう(笑
$ diff -u ./network_sketcher.py.org ./network_sketcher.py
--- ./network_sketcher.py.org 2025-07-15 08:44:51.000000000 +0900
+++ ./network_sketcher.py 2025-07-21 14:18:40.000000000 +0900
@@ -22,7 +22,9 @@
import ns_def,network_sketcher_dev,ns_sync_between_layers,ns_attribute_table_sync_master, network_sketcher_cli
import ns_extensions
import ns_vpn_diagram_create
-
+import base64
+from io import BytesIO
+from PIL import Image, ImageTk
class ns_front_run():
'''
@@ -44,7 +46,11 @@
self.root = TkinterDnD.Tk()
self.root.title("Network Sketcher ver 2.5.2")
self.root.geometry("510x200+100+100")
- icon = tk.PhotoImage(file='ns_logo.png')
+ img_base64="""iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAA・・・中略・・・BEAAAAASUVORK5CYII="""
+ img_data = base64.b64decode(img_base64)
+ image = Image.open(BytesIO(img_data))
+ icon = ImageTk.PhotoImage(image)
+ #icon = tk.PhotoImage(file='ns_logo.png')
self.root.iconphoto(True, icon)
# Notebook
BuffaloのNASであるLS220Dの赤色LEDが点滅していました。。。 HDD故障だそうです。 元から入っていたのは、東芝の1TB(TOSHIBA DT01ACA1)でした。 手元にWDの2TB(WD20EARS)、4TB(WD40EZRX)、6TB(WD60EZAZ)、SeaGateの4TB(ST4000DM000)、8TB(ST8000AS0002)が あったので、後日容量アップができるのでは、と思い入れてみました。 RAID再構築をクリックしてみたら・・・ WD 2TB:「指定したメソッドに対するパラメータが不正です。」 4TB:「指定したメソッドに対するパラメータが不正です。」 6TB:リビルド成功 SeaGate 4TB:「指定したメソッドに対するパラメータが不正です。」 8TB:「指定したメソッドに対するパラメータが不正です。」 という散々な結果でした。 何がダメなんだろう?と思い返してみると、WDの6TBだけは未使用の ものでした。 ほかのHDDは入れる前にパーティション情報をWindows上で消したけど、 もしかしてMBR領域(というかHDDの先頭セクタ0)になにか情報があると ダメなのかも。 ということで、Linux機にWD 4TB(/dev/sdb)をつないで、 sudo dd if=/dev/zero of=/dev/sdb bs=512 count=1 sudo sgdisk -Z /dev/sdb を実行してからLS220に入れました。 「破損」という表示になってしまいしたが、RAID再構築を押すと 再構築が始まった、、、、ぽい。
コメント
コメントを投稿