本文を読み飛ばす

VMWare: msysからnetwork interfaceをon/offする

id00504 でいろいろトラブルを書きましたが、 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
宣伝: