LoginSignup
0
0

OpenWrt ボタン(スイッチ)

Last updated at Posted at 2023-08-12

はじめに

初心者対応構成

  • スクリプトでの自動設定
  • UCIとLuCi及びWinSCPにて比較しながら作業がおススメ

PowerShellSSHアクセス

ssh root@192.168.1.1
ssh root@192.168.1.1のショートカット作成(デスクトップ)
powershell
$DESKTOP = ([Environment]::GetFolderPath("Desktop") + "\192.168.1.1.lnk")
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$DESKTOP")
$Shortcut.TargetPath = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
$Shortcut.Arguments = '-windowstyle hidden -ExecutionPolicy RemoteSigned "Start-Process ssh root@192.168.1.1"'
$Shortcut.IconLocation = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe,0"
$Shortcut.WorkingDirectory = "."
$Shortcut.Save()

  • 強制的に貼り付け
  • yes

SSHログイン出来ない場合:exclamation:

known_hostsクリア

  • C:\Users\yourusername\.ssh\known_hosts ※Windows隠しファイル
powershell
Clear-Content .ssh\known_hosts -Force


OpenSSHのインストール
※Windows 10 Fall Creators Update(1709)以降標準搭載

  • 機能の確認
powershell
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

  • 機能のインストール
powershell
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0


ボタン(スイッチ)

ボタン(スイッチ)

インストール

# install
opkg update
opkg install kmod-button-hotplug
mkdir -p /etc/hotplug.d/button
# log調査用
cat << "EOF" > /etc/hotplug.d/button/buttons
logger "the button was ${BUTTON} and the action was ${ACTION}"
EOF
# 00-button
cat << "EOF" > /etc/hotplug.d/button/00-button
source /lib/functions.sh
 
do_button () {
    local button
    local action
    local handler
    local min
    local max
 
    config_get button "${1}" button
    config_get action "${1}" action
    config_get handler "${1}" handler
    config_get min "${1}" min
    config_get max "${1}" max
 
    [ "${ACTION}" = "${action}" -a "${BUTTON}" = "${button}" -a -n "${handler}" ] && {
        [ -z "${min}" -o -z "${max}" ] && eval ${handler}
        [ -n "${min}" -a -n "${max}" ] && {
            [ "${min}" -le "${SEEN}" -a "${max}" -ge "${SEEN}" ] && eval ${handler}
        }
    }
}
 
config_load system
config_foreach do_button button
EOF

reboot

該当ボタン確認

ls /etc/rc.button/

find /sys/firmware/devicetree/base/keys -mindepth 1 -type d | while read -r f; do printf '%s: %s\n' $(basename $f) $(hexdump -s2 -e '2/1 "%02x""\n"' $f/linux,code); done

該当ボタンをプッシュ&リリースしてから以下を実行

logread | tail -n 1  | grep button | awk '{ print $11 }'

WiFI ON OFF & リブート

設定ボタン及びスイッチ:AOSSボタン=wps
設定デバイス:BUFFALO WSR-6000AX8

# WiFi ON ワンプッシュボタンリリース
BUTTON='wps' # AOSS BUTTON
uci add system button
uci set system.@button[-1].button=${BUTTON}
uci set system.@button[-1].action="released"
uci set system.@button[-1].handler="uci set wireless.radio0.disabled=0; uci set wireless.radio1.disabled=0; uci commit; wifi"
uci set system.@button[-1].min="0"
uci set system.@button[-1].max="2"
# WiFi OFF 5秒ボタンリリース
uci add system button
uci set system.@button[-1].button=${BUTTON}
uci set system.@button[-1].action="released"
uci set system.@button[-1].handler="uci set wireless.radio0.disabled=1; uci set wireless.radio1.disabled=1; uci commit; wifi"
uci set system.@button[-1].min="3"
uci set system.@button[-1].max="7"
# restart 10秒ボタンリリース
uci add system button
uci set system.@button[-1].button=${BUTTON}
uci set system.@button[-1].action="released"
uci set system.@button[-1].handler="sleep 70 && touch /etc/banner && reboot"
uci set system.@button[-1].min="8"
uci set system.@button[-1].max="15"
# set
uci commit system
/etc/init.d/system reload

遠隔地リモート設定

対話型だから無理じゃんねw

設定ボタン及びスイッチ:AOSSボタン=wps
設定デバイス:BUFFALO WSR-6000AX8
環境設定:セレクター型インターネット全自動接続設定 / デバイス初期設定
設定方法:デバイス初期設定をする

# internet-config
wget --no-check-certificate -O /usr/sbin/internet-config.sh https://raw.githubusercontent.com/site-u2023/config-softwire/main/internet-config.sh
# 遠隔地WAN設定 5秒ボタンリリース 
BUTTON='wps' # AOSS BUTTON
uci add system button
uci set system.@button[-1].button=${BUTTON}
uci set system.@button[-1].action="released"
uci set system.@button[-1].handler="sh /usr/sbin/internet-config.sh"
uci set system.@button[-1].min="3"
uci set system.@button[-1].max="8"
# set
uci commit system
/etc/init.d/system reload

ルーターモードとブリッジモード

検証中~

設定ボタン及びスイッチ:背面スイッチ=BTN_2
設定デバイス:BUFFALO WSR-6000AX8
環境設定:OCNバーチャルコネクト / Dumb アクセスポイント ブリッジ
設定方法:一度OCNバーチャルコネクトを設定し、次にDumb アクセスポイント ブリッジで設定しnetwork.bakを出力させる(自動)
※要DHCPサーバー接続:Dumb アクセスポイント ブリッジ設定

# スイッチ切替5秒後設定変更及び再起動
# OCNバーチャルコネクト設定
BUTTON='router' # SWITCH AUTO
uci add system button
uci set system.@button[-1].button=${BUTTON}
uci set system.@button[-1].action="released"
uci set system.@button[-1].handler="cp /etc/config/network.dump.bak /etc/config/network; uci commit; sleep 70 && touch /etc/banner && reboot"
uci set system.@button[-1].min="5"
uci set system.@button[-1].max="10"
# Dumb アクセスポイント ブリッジ設定
BUTTON='router' # SWITCH MANUAL
uci add system button
uci set system.@button[-1].button=${BUTTON}
uci set system.@button[-1].action="pressed"
uci set system.@button[-1].handler="cp /etc/config/network /etc/config/network.dump.bak; uci commit; sleep 70 && touch /etc/banner && reboot"
uci set system.@button[-1].min="5"
uci set system.@button[-1].max="10"
# set
uci commit system
/etc/init.d/system reload

あとがき

参考資料(感謝:relaxed:

0
0
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
0
0