概要
Whosthere は、Goで開発された モダンなTUI型LAN探索ツール。 mDNS/SSDP/ARP など複数の手法で権限不要の高速スキャンを実現。 OUI参照 によるメーカー情報表示や ポートスキャナ 機能搭載。 デーモンモード でHTTP APIも提供、カスタマイズ性も高い。 Linux/macOS 対応、ネットワーク管理者向けの直感的な操作感。
Whosthereの特徴
- Go製TUIアプリ による直感的な端末操作
- mDNS/SSDP/ARP による並列デバイス探索
- 管理者権限不要 のユーザースペース動作
- OUI参照 でメーカー名を自動表示
- 統合ポートスキャナ によるサービス発見(許可されたデバイスのみ推奨)
- デーモンモード&HTTP API で他ツールとの連携容易
- テーマ/設定 をYAMLで柔軟にカスタマイズ
- Linux/macOS に対応(Windowsは今後対応予定)
インストール方法
- Homebrew によるインストール
brew tap ramonvermeulen/whostherebrew install whosthere
- Go によるインストール
go install github.com/ramonvermeulen/whosthere@latest
- ソースビルド
git clone https://github.com/ramonvermeulen/whosthere.gitcd whostheremake build
基本的な使い方
- TUIで対話的探索
whosthere
- デーモンモード(HTTP API有効)
whosthere daemon --port 8080
- 追加コマンドラインオプション
whosthere --helpで確認
サポートプラットフォーム
- Linux
- macOS
- Windows (将来的に対応予定、貢献歓迎)
TUI キーバインド一覧
/:正規表現検索開始k:上へj:下へg:先頭へG:末尾へy:選択デバイスのIPコピーenter:デバイス詳細表示CTRL+t:テーマ切替CTRL+c:アプリ終了ESC:検索クリア/戻るp(詳細画面):ポートスキャン開始tab(モーダル):ボタン選択切替
環境変数
WHOSTHERE_CONFIG:設定ファイルのパス指定WHOSTHERE_LOG:ログレベル設定(debug, info, warn, error)
設定ファイル(YAML)
- 優先読み込み順
WHOSTHERE_CONFIG環境変数で指定$XDG_CONFIG_HOME/whosthere/config.yaml~/.config/whosthere/config.yaml
- 主な設定項目
scan_interval:探索間隔(例:20s)scan_duration:各探索の最大時間splash:スプラッシュ画面表示設定theme:テーマ名やカスタム色scanners:mdns/ssdp/arpの有効化port_scanner:タイムアウト/スキャンポートリストnetwork_interface:特定インターフェース指定(省略可)
デーモンモード HTTP API
- エンドポイント一覧
GET /devices:全デバイス一覧取得GET /device/{ip}:特定デバイス詳細取得GET /health:ヘルスチェック
テーマ設定
- 設定ファイルまたはTUI(CTRL+t)で切替可能
- 公式テーマ一覧 : https://github.com/ramonvermeulen/whosthere/tree/main/internal/ui/theme/theme.go
- カスタムテーマ :色指定で独自テーマ作成可
ログ出力
- TUI以外 :標準出力にも出力
- ファイル出力先
$XDG_STATE_HOME/whosthere/app.log~/.local/state/whosthere/app.log(XDG未設定時)
既知の問題・注意事項
- クリップボード機能要件
- Linux(X11):
libx11-6等クライアントライブラリ - Linux(Wayland):未サポート、XWayland推奨
- macOS/Windows:追加依存なし
- Linux(X11):
- ビルド要件(Linux)
- X11開発パッケージ(
libx11-dev等)
- X11開発パッケージ(
利用上の注意
- 許可されたネットワーク のみで利用推奨
- 無断スキャンは違法・非倫理的 な場合あり
- 必ず事前に権限を取得 すること
コントリビューション・開発参加
- 機能要望・バグ報告・改善提案歓迎
- GitHubリポジトリ でIssue/Pull Request受付
- 大規模変更前には必ずIssueで相談 推奨
Whosthere は、誰がネットワーク上にいるのかを 直感的・安全に把握 したいネットワーク管理者のための 強力なLAN探索ツール です。
Goで完全に書かれたターミナルユーザーインターフェース(TUI)のLAN発見ツールを作ってるんだ。名前はWhosthereで、特権なしでローカルネットワークのデバイスを探索できるように設計されてるよ。いくつかの発見方法を組み合わせて動作するんだ:
さらに、以下の機能も含まれてるよ:
作った理由は主に学ぶためで、Goをプログラミングして約1年になるから、Goを学びながらネットワーキングについても学べるプロジェクトを作りたかったんだ。TUIアプリケーション、特にlazygitやk9s、diveが大好きで、LAN上のデバイスを表示するTUIアプリを作るアイデアが浮かんだんだ。ネットワーキングの専門家ではないけど、ARPの仕組みやmDNS、SSDPなどの発見プロトコルを理解するのは楽しかったよ。
使用例:
HomeBrew経由でインストール
brew tap ramonvermeulen/whosthere brew install whosthere
またはgo installで
go install github.com/ramonvermeulen/whosthere@latest
TUIとして実行
whosthere
デーモンとして実行
whosthere daemon --port 8080
フィードバックがあれば聞かせてほしいな。追加機能や改善案があれば大歓迎だよ!現在のプラットフォームサポートはLinuxとMacOSだよ。