v1.2.0
v1.2.0 で変わったこと
ターミナルの描画を作り直しました。これまでは受信した文字を書き足していく
だけで、行と桁からなる「画面」という概念を持っていませんでした。そのため
nano や vi が「23 行目の 1 桁目へ」と指示しても行き先が無く、画面ぶんの
描画がすべて同じ場所に重なっていました。
設定や接続先の作り直しは不要です。 これまでの config.json をそのまま
使えます。
追加
nanoやviの画面が崩れなくなった。 これまでは「対応していません」と
案内を出すのが精一杯でした。タイトルバー・編集領域・下部のショートカット
2 段が、実際の画面として組み上がります。lessやtopのような画面を
作るコマンドも同じ仕組みで扱いますが、すべてのコマンドを試したわけでは
ないため、崩れるものが残っている可能性はあります。- 全画面のコマンドの画面は、記録にも残ります。
nanoやviを閉じても
開く前の画面は戻らず、編集中の画面がそのままスクロールバックと
セッションログに残ります。NetBelt は端末種別をvt100として接続するため、
これらのコマンドが画面を退避する仕組み(代替画面)を使わないためです。
編集内容を記録に残したくない場合は、ログ記録を止めてください
(スクロールバックには残りますが、画面上だけでファイルには残りません)。 - 色と装飾を表示するようになった。 文字色・背景色・太字・下線・反転に
対応しました。基本 16 色に加えて 256 色パレットと RGB 直接指定も扱えます。
反転表示は、設定した文字色と背景色を入れ替えて表示します。 - ウィンドウの大きさを機器へ伝えるようになった。 これまでは 80×24 固定で、
ウィンドウを広げてもshowの出力が 80 桁で折り返していました。接続時と
リサイズ時に実際の行数・桁数を伝えます(RFC 4254 §6.2 / §6.7)。
この通知は SSH のみです。Telnet とシリアルでは通知しませんが、
画面の描画・色・折り返しはこれまでどおり同じように働きます。 - アプリケーションが指定する入力方式に従うようになった。
nanoが
要求するカーソルキーの形式(DECCKM)と、bash のブラケットペーストに
対応しました。貼り付けが 1 行ずつ実行されず、まとめて編集できます。 - ステータスバーに端末の大きさを表示するようにした。 いま表示中の
ターミナルの桁数と行数が右端に出ます(SSH ではこの値を機器へ伝えて
います。Telnet とシリアルでは表示だけです)。 - ターミナルのタブをドラッグで並べ替えられるようにした。
- 接続先リストを隠せるようにした。 ツールエリアと同じく、仕切りを
ドラッグする・右クリックする・表示メニューから切り替える、の 3 通りです。 - 更新の通知に、何が変わったかを出すようにした。 これまでは使い方の
案内しか出ておらず、更新して何が変わるのか分かりませんでした。
何世代か飛ばしている場合は、その間のぶんもまとめて表示します
(多すぎると読まれないため、5 世代までとし、残りは件数だけ添えます)。
修正
nanoやviを開くと画面が 1 行に潰れていた。 上の「追加」の
とおり、画面として組み上がるようになりました。- ウィンドウを広げても、出力が 80 桁で折り返したままだった。
端末の大きさを 80×24 に固定して機器へ伝えていたためです。
変更
- 受信の解釈を、正規表現による逐次処理から仕様どおりの状態機械へ置き換え
ました。受信がどこで途切れても解釈が変わりません。実機から採取した
データを分割して検証しています(Linux 側の 3 種は全ての切れ目、
機器から採った 7058 バイトは 7 バイトおき)。 - 画面の大きさが変わったとき、すでに書かれた行は組み直しません(実端末と
同じ挙動です)。狭い状態で出力された行は、その折り返しのまま残ります。
ただし表示領域から流れて記録に入った行は 1 本の行として保存されるため、
ウィンドウの幅に合わせて折り返し直されます。 - 全画面アプリを検知して案内を出す仕組みを廃止しました。実際に表示できる
ようになったため不要になりました。 - 機器から端末への問い合わせ(カーソル位置・装置種別)に、自動で答える
ようになりました。答えないと待ち続けるアプリケーションがあるためです。
送るのは問い合わせへの応答だけで、こちらから何かを送ることはありません。 - 端末の高さを機器へ伝えるようになったため、機器側のページャ(
--More--)
の区切りがウィンドウの高さで変わります。ウィンドウが高いほど一度に
多く表示されます。 - 全角文字は 1 桁として数えます。日本語を含む行の折り返し位置が、
実際の見た目とずれることがあります。機器の出力は英数字が中心のため、
影響は Linux 側での日本語編集に限られます。
開発メモ
作り直しは仕様から行っています。既存のターミナル実装のソースコードは
読んでいません(読んで書き直すと、構造や命名が似たときに派生物とみなされる
余地が残るため)。参照したのは Paul Williams の DEC 互換パーサ状態遷移図、
ECMA-48(= ISO/IEC 6429)、ISO/IEC 2022、RFC 4254、および標準に無い部分に
ついては XTerm Control Sequences です。
NetBelt ポータブル版
📄 ライセンスと対応するソースコード
NetBelt は GNU General Public License v3.0 で配布しています。
この実行ファイルには PyQt6 (GPL-3.0)、Qt (LGPL-3.0)、paramiko (LGPL-2.1-or-later)
などが組み込まれています。この実行ファイルに対応するソースコードは、
本リリースに自動添付される Source code アーカイブ、および
https://github.com/gomanizm/NetBelt のタグ v1.2.0 で入手できます。
ビルドは同梱の requirements.txt(バージョン固定済み)と NetBelt.spec、
Python 3.11 で再現できます。
組み込まれた第三者パッケージの一覧・ライセンス本文・配布元は、
ZIP 内の THIRD-PARTY-NOTICES.txt を参照してください。
📦 パッケージ内容
NetBelt.exe- アプリケーション本体README.txt- 使い方ガイドLICENSE.txt- NetBelt のライセンス(GPL-3.0)THIRD-PARTY-NOTICES.txt- 同梱した第三者パッケージのライセンス表示CHANGELOG.txt- この版で変わったこと.sha256- ZIP のチェックサム。自動更新がダウンロード後に照合し、
一致しなければ更新を中止します(破損の検知が目的で、GitHub 自体が
侵害された場合の改ざんは検知できません)mibs/- MIB ファイルの配置先(既定では空。README を参照)
🚀 インストール方法
- ZIPファイルをダウンロード
- 任意のフォルダに展開
NetBelt.exeをダブルクリックして起動
💻 動作環境
- Windows 10 / Windows 11 (64bit)
- Pythonのインストールは不要
- すべての依存ファイルが含まれています
✨ 主な機能
- SSH、Telnet、シリアル接続に対応
- デバイス管理とグループ化
- マクロ機能
- SNMP Trap / Syslog 受信(カスタムMIB対応)
- SFTP ファイル転送
📝 初回起動
- 初回起動時に
config.jsonが自動生成されます - MIB ファイルは同梱していません。
mibs/README.mdの手順で配置してください
詳しい使い方は README.md をご覧ください。