Open1
Wi-Fi が使える Ubuntu22.04 PC を無線ルーター化してインターネット疎通できるようにするbashスクリプト
net_setting.sh
#!/bin/bash
RED=$'\e[31m'
YELLOW=$'\e[33m'
GREEN=$'\e[32m'
BLUE=$'\e[44m'
RESET=$'\e[0m'
########## 0. 環境確認
read -p "${GREEN}Ubuntuの設定画面でWi-Fiを有効にしましたか? [y/n]: ${RESET}" response
if [[ ! "$response" =~ ^[Yy]$ ]]; then
printf "${YELLOW}処理を中断します。${RESET}\n"
exit 1
fi
read -p "${GREEN}モバイルルーターあるいはインターネット疎通できる有線LANは接続しましたか? [y/n]: ${RESET}" response
if [[ ! "$response" =~ ^[Yy]$ ]]; then
printf "${YELLOW}処理を中断します。${RESET}\n"
exit 1
fi
printf "\n${GREEN}現在有効なネットワークインタフェース一覧:${RESET}\n"
ip -o link show | awk -F': ' '{print $2}' | awk '{print $1}'
available_interfaces=$(ip -o link show | awk -F': ' '{print $2}' | awk '{print $1}')
printf "\n"
read -p "${GREEN}上記の一覧の中からローカルネットワーク化するWi-FiのNWインタフェース名を選んで入力してください。: ${RESET}" WNWIF
# 入力されたインタフェース名が一覧に存在するか確認
if echo "$available_interfaces" | grep -q "^$WNWIF$"; then
:
else
printf "${RED}インタフェース '${WNWIF}' は存在しません。処理を終了します。${RESET}\n"
exit 1
fi
# SSIDとパスフレーズの入力
read -p "${GREEN}Wi-Fiで使用する任意のSSIDを指定してください。:${RESET} " SSID
while true; do
printf "${GREEN}任意のパスフレーズを指定してください。(8文字以上): ${RESET}"
PASSPHRASE=""
while IFS= read -r -s -n1 char; do
if [[ $char == "" ]]; then
echo
break
fi
if [[ $char == $'\x7f' ]]; then
if [ -n "$PASSPHRASE" ]; then
PASSPHRASE=${PASSPHRASE%?}
echo -ne "\b \b"
fi
else
PASSPHRASE+="$char"
echo -n "*"
fi
done
if [ ${#PASSPHRASE} -ge 8 ]; then
break
else
printf "${RED}パスフレーズは8文字以上である必要があります。再度入力してください。${RESET}\n"
fi
done
read -p "${GREEN}上記の一覧の中からインターネット通信用のインタフェース名を選んで入力してください。: ${RESET}" INIF
# 入力されたインタフェース名が一覧に存在するか確認
if echo "$available_interfaces" | grep -q "^$INIF$"; then
:
else
printf "${RED}インタフェース '${INIF}' は存在しません。処理を終了します。${RESET}\n"
exit 1
fi
########## 1. Wi-Fiソフトウェアルータの設定とインタネット向けフォワーディングの設定
file_name="lnxrouter"
if [ -f "$file_name" ]; then
:
else
# ファイルが存在しない場合はコマンドを実行
wget -O lnxrouter https://github.com/garywill/linux-router/raw/fbad56f05ca79e7450c8a62090dfe84f28f84d6a/lnxrouter
sudo chmod +x lnxrouter
fi
sudo apt-get update > /dev/null 2>&1
sudo apt-get install -y \
iw \
hostapd \
dnsmasq \
iproute2 \
iptables > /dev/null 2>&1
sudo systemctl stop hostapd dnsmasq
printf "\n"
printf "${GREEN}インターネット インタフェース:${RESET} ${INIF}\n"
printf "${GREEN}Wi-Fi インタフェース:${RESET} ${WNWIF}\n"
printf "${GREEN}Wi-Fi SSID:${RESET} ${SSID}\n"
printf "\n"
sudo ./lnxrouter -i ${INIF} --ap ${WNWIF} ${SSID} -p ${PASSPHRASE} --no-virt --daemon
printf "\n"
printf "${GREEN}Wi-Fiアクセスポイントとインターネット通信が有効になりました。\n"