2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

コマンドラインからのBT DUN接続

Posted at

LinuxでBTテザリングへの接続は簡単に出来た。
今度はこれを簡単にOn/Offしたい。

ネットワークのコマンドライン操作。

それっぽいキーワードでぐぐったら大体そのまんまの内容がヒットした。

nmcliコマンドを使え、とのこと。

nmcliの使い方

具体的にはnmcliでの接続操作はconnectionオブジェクトに対して、指定の接続のup/downを命じる、ということらしい。
接続時には下記のように、切断したい時はupに変えてdown。

$ nmcli -t con up "id"

接続には必要なidは下記手順で確認。
日本語環境であれば「名前」のところに表示される名称を使用する。
当然ながら予めBTデバイスとのペアリング、接続を1回は行っていることが前提の手順。
ペアリングやNetworkManagerの登録もCUIで!というお話は本項の範疇外。

$ nmcli c
名前              UUID              タイプ           デバイス          
XXXXXXXXXXXX     UUIDがなんとか      bluetooth       XX:XX:XX:XX:XX:XX 

スクリプト化

up/downで想定通りの動作をすることが確認できたのでスクリプト化。
GUI環境のショートカットキーでトグル動作してほしい、という仕様で以下のスクリプトを作成、ショートカットとして登録。
実はBTデバイスには特化していないので接続名称とデバイス名さえ適切に設定すれば他のネットワークデバイスでも動作する、はず。

# !/bin/sh

# =====================================
# ======= settings ====================
NW_NAME="接続名称"
# =====================================

UP_DOWN="up"

LANG=C nmcli d | grep "$NW_NAME" 
if [ $? -eq 0 ] ; then
  UP_DOWN="down"
fi

nmcli -t con $UP_DOWN "$NW_NAME"

トグル動作のためにnmcli dの実行結果を見ている。
接続の有無それぞれの状態でnmcli dを実行すればわかるが、接続が確立している場合のみ、出力に接続名称が現れることを利用。
名前の被り等は考慮していないので、厳密にやるのであればもうひと工夫必要。

nmcliについて

以下、備忘を兼ねて

インストール

Debian系ではnmcliはnetwork-managerパッケージの一部。
ということで、今時なGUIを導入している環境であれば、大抵のところでそのまま使えそう。

$ dpkg -S nmcli
network-manager: /usr/share/bash-completion/completions/nmcli
network-manager: /usr/share/man/man1/nmcli.1.gz
network-manager: /usr/share/man/man5/nmcli-examples.5.gz
network-manager: /usr/bin/nmcli

使い方

詳しくはmanしていただくとして、引数なしで実行するとUsageが表示される。
名前通りNetworkManagerのCUIフロントエンドということで多数のオプションあり。
多用しそうなものは今回も使用したn(networking)、c(connection)あたりだろうか?

$ nmcli 
Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }

OPTIONS
  -t[erse]                                   terse output
  -p[retty]                                  pretty output
  -m[ode] tabular|multiline                  output mode
  -f[ields] <field1,field2,...>|all|common   specify fields to output
  -e[scape] yes|no                           escape columns separators in values
  -n[ocheck]                                 don't check nmcli and NetworkManager versions
  -a[sk]                                     ask for missing parameters
  -w[ait] <seconds>                          set timeout waiting for finishing operations
  -v[ersion]                                 show program version
  -h[elp]                                    print this help

OBJECT
  g[eneral]       NetworkManager's general status and operations
  n[etworking]    overall networking control
  r[adio]         NetworkManager radio switches
  c[onnection]    NetworkManager's connections
  d[evice]        devices managed by NetworkManager
  a[gent]         NetworkManager secret agent or polkit agent
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?