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