VMWare: msysからnetwork interfaceをon/offする
`id00504.rst`_ でいろいろトラブルを書きましたが、 VMWareがinterfaceを2つも増やしてるので route情報が気になったりします。
仮想マシン立ち上げてないのに interfaceだけあるのも気になることもあるし。
いろいろ試しましたが、 下のようなファイルを作りました
※ヒアドキュメント使っているので、タブに注意
#!env bash
vm1='VMware Network Adapter VMnet1'
vm2='VMware Network Adapter VMnet8'
vm_enable() { # {{{1
if [ "x$(is_enabled)" = x ]; then
return
fi
vm_change enable
}
vm_disable() { # {{{1
if [ "x$(is_enabled)" != x ]; then
return
fi
vm_change disable
}
vm_change() { # {{{1
runas //noprofile //savecred //user:administrator \
"netsh interface set interface name=\"$vm1\" admin=$1"
runas //noprofile //savecred //user:administrator \
"netsh interface set interface name=\"$vm2\" admin=$1"
}
vm_ask() { # {{{1
a=$(if [ "x$(is_enabled)" = x ]; then echo enabled; else echo disabled; fi)
# echo -n $a 1>&2
py <<-EOF
import ctypes
import sys
MB_OK, MB_OKCXL, MB_YESNOCXL, MB_YESNO, MB_HELP = (
0, 1, 3, 4, 0x4000)
ICON_EXLAIM, ICON_INFO, ICON_STOP = (
0x30, 0x40, 0x10)
ret = ctypes.windll.user32.MessageBoxW(
0, "now $a", "VMware net-interface", MB_YESNO)
sys.stdout.write(ret == 6 and "enable" or "disable")
EOF
}
is_enabled() { # {{{1
netsh interface show interface name="$vm1"
f=$(netsh interface show interface name="$vm1" \
| grep -i -e 'Admin.*state.*Enabled')
if [ "x$f" = x ]; then
echo -n "Disabled"
else
echo -n "Enabled"
fi
}
# main {{{1
f=$(if [ x$1 == x ] || [ x$1 == xtoggle ]; then echo true; else echo fales; fi)
if [ x$1 == xenable ]; then
vm_enable
elif [ x$1 == xdisable ]; then
vm_disable
elif $f && [ "$(vm_ask)" = "disable" ]; then
vm_disable
elif $f; then
vm_enable
else
echo "syntax: $0 [enable | disable | toggle]"
fi
# end of file {{{1
# vi: ft=sh:et:ts=4:fdm=marker
コアの部分はここです。:
vm1='VMware Network Adapter VMnet1'
vm2='VMware Network Adapter VMnet8'
vm_change() { # {{{1
runas //noprofile //savecred //user:administrator \
"netsh interface set interface name=\"$vm1\" admin=$1"
runas //noprofile //savecred //user:administrator \
"netsh interface set interface name=\"$vm2\" admin=$1"
}
vm_change disable
runas使ってますが、なんか動きがよくわからないかな...
Windowsでbashがサポートってありましたが、 sudoとか周りのツールも多少はサポートされるんですかね。
ここまでできてるから、別にサポートされても大して変わらないのかも...
コメント
Comments powered by Disqus