Linux のネットワーク管理コマンド nmcli と nmtui
nmcli
nmcli connection
: すべての接続を表示
pi@raspberrypi:~ $ nmcli connection
NAME UUID TYPE DEVICE
preconfigured 1b29633c-51a7-42a8-8357-a23ddbb791b9 wifi wlan0
lo 37334688-5c87-47fc-87d3-8c4e31934dd2 loopback lo
有線接続 1 0df9157e-b1a9-3026-9bd5-f05234e1cf4b ethernet --
nmcli device
: デバイスと状態を表示
pi@raspberrypi:~ $ nmcli device
DEVICE TYPE STATE CONNECTION
wlan0 wifi 接続済み preconfigured
lo loopback 接続済み (外部) lo
p2p-dev-wlan0 wifi-p2p 切断済み --
eth0 ethernet 利用不可 --
nmcli connection show ...
: プロパティを表示
nmcli connection show プロファイル名
を実行し、プロパティを表示できる。
pi@raspberrypi:~ $ nmcli connection show <プロファイル名>
connection.id: <プロファイル名>
connection.uuid: 1b29633c-51a7-42a8-8357-a23ddbb791b9
connection.stable-id: --
connection.type: 802-11-wireless
connection.interface-name: --
connection.autoconnect: はい
connection.autoconnect-priority: 0
connection.autoconnect-retries: -1 (default)
connection.multi-connect: 0 (default)
connection.auth-retries: -1
connection.timestamp: 1710955164
connection.read-only: いいえ
connection.permissions: --
connection.zone: --
connection.master: --
connection.slave-type: --
connection.autoconnect-slaves: -1 (default)
connection.secondaries: --
connection.gateway-ping-timeout: 0
connection.metered: 不明
connection.lldp: default
connection.mdns: -1 (default)
connection.llmnr: -1 (default)
connection.dns-over-tls: -1 (default)
lines 1-24
IP アドレスの確認
pi@raspberrypi:~ $ nmcli connection show <プロファイル名> | grep ipv4.addresses
ipv4.addresses: 192.168.10.113/24
IP アドレスの設定
以下の例では、IP アドレスを 192.168.10.113
、プレフィックス長を 24
に設定。
sudo nmcli connection modify <プロファイル名> ipv4.addresses 192.168.10.113/24
DNS サーバーの確認
pi@raspberrypi:~ $ nmcli connection show <プロファイル名> | grep ipv4.dns:
ipv4.dns: 192.168.10.1
DNS サーバーの設定
以下の例では、DNS サーバーを 192.168.10.1
に設定
sudo nmcli connection modify <プロファイル名> ipv4.dns 192.168.10.1
接続を切断
sudo nmcli connection down <プロファイル名>
接続
sudo nmcli connection up <プロファイル名>
nmtui: TUI でネットワーク接続を設定
sudo nmtui
Linux プロンプトを日本語化する方法
Linux のプロンプトを日本語化する方法を紹介します。
1. 日本語ロケールのインストール
次に、日本語のロケールが存在しない場合は、それをインストールします。以下のコマンドを実行します。
sudo apt update
sudo apt install language-pack-ja
2. ロケールの設定
日本語のロケールを設定します。以下のコマンドを実行します。
sudo update-locale LANG=ja_JP.UTF8
3. システムの再起動
最後に、システムを再起動します。これにより、新しいロケール設定が反映されます。
sudo reboot
以上で、Linux プロンプトが日本語化されます。
RaspberryPi のプロンプトを日本語化する方法
Ubuntu (WSL2 含む) に pyenv と Python をインストールする方法
依存パッケージのインストール
sudo apt update
sudo apt install build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
Pyenv のインストール
参考: pyenv/pyenv-installer: This tool is used to install pyenv
and friends.
curl https://pyenv.run | bash
~/.bashrc に初期化スクリプトを書き込む
# ~/.bashrc を開く
code ~/.bashrc
以下を書き込みます。
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
Python のインストール
インストール可能なバージョン一覧を表示
pyenv install -l
Python のインストール
Python 3.12.2 をインストールします。
pyenv install 3.12.2
Python のバージョンを指定
デフォルトのバージョンを Python 3.12.2 に設定します。
pyenv global 3.12.2
python -V # Python 3.12.2
Ubuntu (WSL2 含む) に dotnet をインストール方法
参考: パッケージ マネージャーを使用せずに Linux に .NET をインストールする - .NET | Microsoft Learn
インストールスクリプトのダウンロード
wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh
インストールスクリプトへ実行権限付与
chmod +x ./dotnet-install.sh
dotnet SDK をインストール
./dotnet-install.sh
最新版をインストールする場合は
./dotnet-install.sh --version latest
パスを通す
$HOME/.bashrc
を開き、以下を追記
export DOTNET_ROOT=$HOME/.dotnet
export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools
WSL2 で SSH のトンネルを使用して、WSL2 上のサーバーを LAN に公開する方法
Step1. WSL 側に OpenSSH Server をインストール
WSL2 に OpenSSH Server をインストールします。 それと、sshd サービスを立ち上げます。
# WSL2 側
sudo apt install openssh-server
sudo service sshd start
Step2. Windows 側で公開鍵を登録
Windows に公開鍵を登録していない場合は、以下のコマンドを実行します。
# Windows 側
ssh-keygent -t ed25519
次に WSL2 に公開鍵を登録します。
# Windows 側
$pubkey = $(cat $HOME\.ssh\id_ed25519.pub)
wsl -- echo $pubkey `| tee -a `$HOME/.ssh/authorized_keys
Step3. SSH でトンネルを通す
Windows から WSL2 に対し、SSH 接続を行います。
# Windows 側
ssh (wsl -- hostname -I).trim() -g -L8081:localhost:8080
コマンドを区切って説明します。
(wsl -- hostname -I).trim()
は WSL2 の IP アドレスを取得します-g
はポートを LAN にフォワーディングします (外部の端末から 192.168.x.x のようなアドレスで参照可能になります)-L
はローカルフォワードのオプションです。サーバーのポートをローカルに転送します8081
とlocalhost:8080
は ローカルの8081
にアクセスすると、localhost:8080
に転送されるという意味です。 ここでいうlocalhost
はサーバー側から見たlocalhost
です
Step4. サーバーを立ち上げる
公開対象となるサーバーを WSL2 上で立ち上げます。
# WSL2 側
ruby -run -e httpd . # ディレクトリ一覧が公開される
Step5. サーバーにアクセスする
http://localhost:8081
または、http://<ipconfig で表示される IP アドレス>:8081
でサービスにアクセスできます。
トンネル接続によるデメリットとしては毎回トンネルを通すのが面倒なことです。
不安定ですが、netsh interface portproxy ~
による設定を行っても同じようにできます。
JavaScript と HTML と CSS で右クリックメニューを実装
JavaScript
id="contextmenu"
がメニュー本体で、id="main"
がメニューを表示する対象の部分。
const contextmenu = document.getElementById('contextmenu');
const main = document.getElementById("main");
main.addEventListener('contextmenu', (e) => {
e.preventDefault();
contextmenu.style.left = e.pageX + 'px';
contextmenu.style.top = e.pageY + 'px';
contextmenu.style.display = 'block';
});
main.addEventListener('click', () => {
contextmenu.style.display = 'none';
});
HTML
<div id="contextmenu">
<ul>
<li>削除</li>
</ul>
</div>
CSS
#contextmenu {
display: none;
position: fixed;
left: 0;
top: 0;
border-radius: 8px;
background-color: #F9F9F9;
border: solid 1px #E3E3E3;
padding: 4px;
width: 192px;
}
#contextmenu ul{
padding-left: 0;
margin: 0;
}
#contextmenu li {
cursor: pointer;
margin: 0;
padding: 4.75px 0 4.75px 16px;
border-radius: 4px;
list-style: none;
font-size: 14px;
}
※クリックしたときのイベントと機能は別途作成する必要がある。
rbenv (WSL2 / Ubuntu) へのインストール方法
依存パッケージのインストール
sudo apt update
sudo apt install autoconf patch build-essential rustc libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libgmp-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev libdb-dev uuid-dev -y
rbenv のインストール
# rbenv と ruby-build をインストール
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash
# 起動時に rbenv を読み込み
echo 'eval "$($HOME/.rbenv/bin/rbenv init - bash)"' | tee -a ~/.bashrc
参考
Ruby 3.3.0 のインストール
source ~/.bashrc # rbenv を初期化 (WSL 再ログインでも可)
rbenv install 3.3.0 # Ruby 3.3.0 のインストール
rbenv global 3.3.0 # Ruby 3.3.0 を規定に設定
参考
Windows Terminal と plink を使ってシリアルコンソールを使う
Arduino シリアル通信のプログラムを書く
Windows Terminal と plink を用いたシリアル通信を試すために、 Arduino にシリアル通信のプログラムを書き込みます。
void setup() {
Serial.begin(9600);
}
void loop() {
if(Serial.available() <= 0) return;
char data = Serial.read();
if(data == '\r'){
Serial.print("\n");
}else{
Serial.print(data);
}
}
plink で Arduino とシリアル通信
以下のコマンドで Windows Terminal から plink コマンドを実行してシリアル通信を行います。
plink -serial COM1 -sercfg 9600,8,1,N,N