Skip to content

Instantly share code, notes, and snippets.

@shiena
Last active July 18, 2019 10:24
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shiena/e0bfbd465fefae424e42b909f24e5434 to your computer and use it in GitHub Desktop.
Save shiena/e0bfbd465fefae424e42b909f24e5434 to your computer and use it in GitHub Desktop.
adb tcpipとadb connectするスクリプト
@echo off
rem Copyright (c) 2019 KOGA Mitsuhiro
rem
rem This software is released under the MIT License.
rem http://opensource.org/licenses/mit-license.php
set ADB=adb.exe
setlocal ENABLEDELAYEDEXPANSION
set PORT=5555
set usb=
set tcp=
set num=0
for /f "usebackq skip=1 tokens=1,2" %%a in (`%ADB% devices`) do (
set serialno=%%a
set status=%%b
echo !serialno! | find ":" > NUL
if not errorlevel 1 (
set tcp=!tcp! !serialno!
) else (
if "device" == "!status!" (
set usb=!usb! !serialno!
set /a num=num+1
)
)
)
for %%d in (%usb%) do (
set serialno=%%d
if !num! equ 1 (
set dev=wlan0
for /f "usebackq tokens=1,3 delims=[]" %%a in (`%ADB% -s !serialno! shell getprop`) do (
set k=%%a
set v=%%b
if "!k!" == "wifi.interface" (
set dev=!v!
)
)
for /f "usebackq tokens=7" %%i in (`%ADB% -s !serialno! shell ip route show dev !dev!`) do (
set ipaddr=%%i
set remote=!ipaddr!:%PORT%
for %%t in (%tcp%) do (
if "%%t" == "!remote!" (
%ADB% -s !remote! disconnect
%ADB% -s !remote! wait-for-disconnect
)
)
%ADB% -s !serialno! tcpip %PORT%
%ADB% -s !serialno! connect !remote!
%ADB% -s !serialno! wait-for-device
)
) else (
set manufacturer=
set model=
set release=
set sdk=
set dev=wlan0
for /f "usebackq tokens=1,3 delims=[]" %%a in (`%ADB% -s !serialno! shell getprop`) do (
set k=%%a
set v=%%b
if "!k!" == "ro.product.manufacturer" (
set manufacturer=!v!
)
if "!k!" == "ro.product.model" (
set model=!v!
)
if "!k!" == "ro.build.version.release" (
set release=!v!
)
if "!k!" == "ro.build.version.sdk" (
set sdk=!v!
)
if "!k!" == "wifi.interface" (
set dev=!v!
)
)
set detail=!manufacturer! !model! ^(version: !release!, sdk: !sdk!, id: !serialno!^)
for /f "usebackq tokens=7" %%i in (`%ADB% -s !serialno! shell ip route show dev !dev!`) do (
set ipaddr=%%i
set /p answer="Connect to !detail!? (y/N): "
if /i "!answer!" == "Y" (
set remote=!ipaddr!:%PORT%
for %%t in (%tcp%) do (
if "%%t" == "!remote!" (
%ADB% -s !remote! disconnect
%ADB% -s !remote! wait-for-disconnect
)
)
%ADB% -s !serialno! tcpip %PORT%
%ADB% -s !serialno! connect !remote!
%ADB% -s !serialno! wait-for-device
)
set answer=
)
)
)
%ADB% devices -l
endlocal
pause
#!/bin/sh
# Copyright (c) 2019 KOGA Mitsuhiro
#
# This software is released under the MIT License.
# http://opensource.org/licenses/mit-license.php
ADB=adb
PORT=5555
usb=''
tcp=''
num=0
while read serialno status; do
if [[ $serialno =~ .*:.* ]]; then
tcp="$tcp $serialno"
else
if [ "device" == "$status" ]; then
usb="$usb $serialno"
num=$((num+1))
fi
fi
done <<DEVICES
$("$ADB" devices)
DEVICES
for serialno in $usb; do
if [ $num -eq 1 ]; then
dev='wlan0'
while IFS='[]' read dummy k dummy v dummy; do
[[ "$k" == "wifi.interface" ]] && dev="$v"
done <<PROP
$("$ADB" -s $serialno shell getprop)
PROP
while read d d d d d d ipaddr; do
remote="${ipaddr}:${PORT}"
for t in $tcp; do
if [ "$t" == "$remote" ]; then
"$ADB" -s $remote disconnect
"$ADB" -s $remote wait-for-disconnect
fi
done
"$ADB" -s $serialno tcpip $PORT
"$ADB" -s $serialno connect $remote
"$ADB" -s $serialno wait-for-device
done <<ROUTE
$("$ADB" -s $serialno shell ip route show dev $dev)
ROUTE
else
manufacturer=''
model=''
release=''
sdk=''
dev='wlan0'
while IFS='[]' read dummy k dummy v dummy; do
[[ "$k" == "ro.product.manufacturer" ]] && manufacturer="$v"
[[ "$k" == "ro.product.model" ]] && model="$v"
[[ "$k" == "ro.build.version.release" ]] && release="$v"
[[ "$k" == "ro.build.version.sdk" ]] && sdk="$v"
[[ "$k" == "wifi.interface" ]] && dev="$v"
done <<PROP
$("$ADB" -s $serialno shell getprop)
PROP
detail="${manufacturer} ${model} (version: ${release}, sdk: ${sdk}, id: ${serialno})"
while read d d d d d d ipaddr <&3; do
read -p "Connect to ${detail}? (y/N): " answer
case "$answer" in
[yY]*)
remote="${ipaddr}:${PORT}"
for t in $tcp; do
if [ "$t" == "$remote" ]; then
"$ADB" -s $remote disconnect
"$ADB" -s $remote wait-for-disconnect
fi
done
"$ADB" -s $serialno tcpip $PORT
"$ADB" -s $serialno connect $remote
"$ADB" -s $serialno wait-for-device
;;
*)
;;
esac
done 3<<ROUTE
$("$ADB" -s $serialno shell ip route show dev $dev)
ROUTE
fi
done
"$ADB" devices -l
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment