※以下、/path/to や your_program は環境や実行ファイル等にあわせて書き換えること
1)socat (SOcket CAT:標準出力をTCP接続へ渡す)
<使用例>
<使用例>
/path/to/your_program | tee -a output.log | socat - TCP4:127.0.0.1:12345
・your_program 実行して、
・your_program 実行して、
・標準出力を 画面に表示しつつ、 outlput.logに 追記
・標準出力を TCP 接続で 127.0.0.1 port 12345 に送信。
※補足
接続は色々設定できる。
標準出力 → TCP へ転送
your_command | socat - TCP:192.168.0.10:5000
標準出力 → ローカルで待ち受け(他プロセスに渡す)
your_command | socat - TCP-LISTEN:5000,reuseaddr,fork
your_command | socat - TCP-LISTEN:5000,reuseaddr,fork
標準出力 → UDP で転
your_command | socat - UDP:192.168.0.10:5000
シリアルコンソール → TCP/UDP へ転送(双方向対応)
socat -d -d /dev/ttyUSB0,b115200 TCP-LISTEN:5000,reuseaddr,fork
socat -d -d /dev/ttyUSB0,b115200 TCP-LISTEN:5000,reuseaddr,fork
TCP → 標準出力(逆方向)
socat TCP-LISTEN:5000,reuseaddr,fork -
socat TCP-LISTEN:5000,reuseaddr,fork -
リアルタイム性が重要でバッファリングを避ける場合、コマンドにstdbuf -o0を付ける
stdbuf -o0 your_command | socat - TCP:192.168.0.10:5000
途切れ対策
reuseaddr 同じポートで再起動許可の指定
fork 複数クライアント対応(TCPの場合)
を付ける。両方付けた方が無難
なお、 - は標準入出力(コンソール)へ接続を示す
UDPで送出先のポートが閉じるとICMP Port Unreachable が発生して送出側が止まる
止まらなくするには
SEND-TOを使う
socat - UDP-SENDTO:192.168.0.10:5000
raw UDP をs使う
socat -T0 - UDP-SENDTO:192.168.0.10:5000
<決定版>
stdbuf -oL -eL /path/to/your_program | tee -a "logfilename" | socat - UDP-SENDTO:192.168.166.70:5000
2) valgrind (メモリリーク、未初期化メモリの使用、無効なメモリアクセスなどを検出するツール)
<使用例>
sudo -S valgrind -s --log-file=/path/to/logfile.log --track-origins=yes --leak-check=full --show-leak-kinds=all /path/to/your_program・管理者権限でyour_program 実行して、
・エラーレポートを標準エラー出力にも表示
・ログを指定ファイルに保存
・未初期化メモリの「発生源」を追跡
・メモリリークの詳細を完全に表示
・すべての種類のメモリリーク(確実、疑わしい、一時的)を表示
3)usbreset USBデバイスをソフトウエア的にリセット
usbutils をインストールするとついてくる(Ubuntu22.04以降)
4)procinfo 軽量な診断ツール
・procinfo システム統計情報の表示
・lsdev ハードウエアデバイス情報の取得
・socklist ソケット情報の表示(つかえない環境あり)
5)smartctl
smartmontools をインストールすると利用できる。
sudo smartctl -a /dev/sdX sdXはsdaなど
•Reallocated_Sector_Ct (代替セクタ数)
•Current_Pending_Sector(保留中の不良セクタ)
•Offline_Uncorrectable(修復不能セクタ)
•Current_Pending_Sector(保留中の不良セクタ)
•Offline_Uncorrectable(修復不能セクタ)
それぞれが0でなければ交換検討対象
6)tio
シリアル通信専用計量ターミナル
使用例:
tio -t timestamp -l serial.log /dev/ttyUSB0 -b 115200
7)nmap
ネットワーク上の相手がどのポートで何を待っているかを外側から調べるツール
使用例:
nmap 192.168.0.10
出力例:
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
8080/tcp closed http-proxy
443/tcp closed https
22/tcp open ssh
80/tcp open http
8080/tcp closed http-proxy
443/tcp closed https
8)netstat
「今この機器がどのポートで通信しているか」を一覧表示するネットワーク診断ツール。
「今この機器がどのポートで通信しているか」を一覧表示するネットワーク診断ツール。
特に “どのポートが LISTEN(待ち受け)しているか” を調べるための道具。
インストールは net-tools
インストールは net-tools
sudo apt install net-tools
使用例:
netstat -tlnp
オプションは
-t | TCP だけ表示 |
|---|---|
-u | UDP だけ表示 |
-l | LISTEN 中のポートだけ表示 |
-n | 名前解決せず数値で表示(高速) |
-p | どのプロセスが使っているか表示 |
(順次追記予定)