Skip to content

Instantly share code, notes, and snippets.

@nyaocat
Created May 8, 2021 08:00
Show Gist options
  • Save nyaocat/5bbf5217aa2308edb4587506cbc08ed6 to your computer and use it in GitHub Desktop.
Save nyaocat/5bbf5217aa2308edb4587506cbc08ed6 to your computer and use it in GitHub Desktop.
指定コマンドをネットワーク接続不可環境下で実行させるスクリプト
#!/bin/bash
set -eu
readonly NSNAME="ns${RANDOM}"
sudo ip netns add "$NSNAME"
trap "sudo ip netns delete '$NSNAME'" 0
sudo ip netns exec "$NSNAME" sudo -u "$USER" "$@"
@nyaocat
Copy link
Author

nyaocat commented May 8, 2021

Linux環境下のみ、要 ip コマンドと sudo 実行可能権限。

上記のファイルを run-in-nonet としてパスの通った箇所に実行権限を付けて保存し、コマンド実行時に先頭に付けるとネットワーク接続不可な状態下でコマンドが実行される。

$ ping -c1 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) バイトのデータ
64 バイト応答 送信元 8.8.8.8: icmp_seq=1 ttl=115 時間=3.12ミリ秒

--- 8.8.8.8 ping 統計 ---
送信パケット数 1, 受信パケット数 1, パケット損失 0%, 時間 0ミリ秒
rtt 最小/平均/最大/mdev = 3.117/3.117/3.117/0.000ミリ秒
$ run-in-nonet ping -c1 8.8.8.8
ping: connect: ネットワークに届きません

実装としては単に空のnetnsを作り、その中で実行するようにしてるだけ。

とりあえず中身が微妙に不安なバイナリを実行する時にこれ使えばネットワークに情報流されることなくてちょっと安心かも?まぁちゃんと気にするのであればちゃんとサンドボックス作ってやりましょう。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment