Merge "Dynamic interface names for Windows batch scripts"
This commit is contained in:
commit
3ad39ca47e
|
@ -171,6 +171,7 @@ function wbatch_mkdirs {
|
|||
function wbatch_create_hostnet {
|
||||
wbatch_new_file "create_hostnet.bat"
|
||||
wbatch_file_header "host-only networks"
|
||||
cat "$WBATCH_TEMPLATE_DIR/template-begin_hostnet_bat" | wbatch_write_stdin
|
||||
# Creating networks requires elevated privileges
|
||||
wbatch_elevate_privileges
|
||||
wbatch_find_vbm
|
||||
|
@ -183,7 +184,7 @@ function wbatch_create_hostnet {
|
|||
# The host-side interface is the default gateway of the network
|
||||
if_ip=${NET_GW[index]}
|
||||
# Translate if_name to Windows-type interface name
|
||||
win_adapter=$(vboxnet_to_win_adapter_num "$if_name")
|
||||
win_adapter=$if_name
|
||||
sed -e "
|
||||
s,%IFNAME%,${win_adapter},g;
|
||||
s,%IFIP%,${if_ip},g;
|
||||
|
@ -237,7 +238,7 @@ function wbatch_log_vbm {
|
|||
case "${ARGS[i]}" in
|
||||
--hostonlyadapter*)
|
||||
# The next arg is the host-only interface name -> change it
|
||||
ARGS[i+1]=\"$(vboxnet_to_win_adapter_num "${ARGS[i+1]}")\"
|
||||
ARGS[i+1]=\"%${ARGS[i+1]}%\"
|
||||
;;
|
||||
--hostpath)
|
||||
# The next arg is the shared dir -> change it
|
||||
|
@ -271,20 +272,6 @@ function wbatch_log_vbm {
|
|||
# Windows path name helpers
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
# Translate Unix-style vboxnetX to Windows-type interface name
|
||||
function vboxnet_to_win_adapter_num {
|
||||
local vboxname=$1
|
||||
local win_if="VirtualBox Host-Only Ethernet Adapter"
|
||||
|
||||
# Remove leading "vboxnet" to get interface number
|
||||
local ifnum=${vboxname#vboxnet}
|
||||
|
||||
if [ "$ifnum" -ne 0 ]; then
|
||||
win_if+=" #$((ifnum + 1))"
|
||||
fi
|
||||
echo "$win_if"
|
||||
}
|
||||
|
||||
# On Windows, all paths are relative to TOP_DIR
|
||||
function wbatch_path_to_windows {
|
||||
local full_path=$1
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
ECHO %time% Deleting old iface_config.bat
|
||||
IF EXIST "%~dp0\iface_config.bat" DEL "%~dp0\iface_config.bat"
|
||||
ECHO.
|
||||
|
||||
REM vim: set ai ts=4 sw=4 et ft=dosbatch:
|
||||
|
|
@ -1,3 +1,6 @@
|
|||
ECHO %time% Loading network interface names
|
||||
CALL "%~dp0\iface_config.bat"
|
||||
|
||||
ECHO %time% Cleaning up autostart and log directories
|
||||
DEL /S /Q %AUTODIR%
|
||||
DEL /S /Q %LOGDIR%
|
||||
|
|
|
@ -1,9 +1,12 @@
|
|||
ECHO VBoxManage hostonlyif create
|
||||
"%VBM%" hostonlyif create
|
||||
REM Using "'" as a delimiter, the second token is the name of the VirtualBox
|
||||
REM Ethernet interface
|
||||
FOR /F "tokens=2 delims='" %%A IN ('"%VBM%" hostonlyif create') DO SET IFACE=%%A
|
||||
IF %errorlevel% NEQ 0 GOTO :vbm_error
|
||||
ECHO SET %IFNAME%=%IFACE%
|
||||
SET %IFNAME%=%IFACE%
|
||||
ECHO SET %IFNAME%=%IFACE%>> "%~dp0\iface_config.bat"
|
||||
|
||||
ECHO VBoxManage hostonlyif ipconfig "%IFNAME%" --ip %IFIP% --netmask 255.255.255.0
|
||||
"%VBM%" hostonlyif ipconfig "%IFNAME%" --ip %IFIP% --netmask 255.255.255.0
|
||||
IF %errorlevel% NEQ 0 GOTO :vbm_error
|
||||
ECHO VBoxManage hostonlyif ipconfig "%%IFNAME%%" --ip %IFIP% --netmask 255.255.255.0
|
||||
"%VBM%" hostonlyif ipconfig "%%IFNAME%%" --ip %IFIP% --netmask 255.255.255.0
|
||||
|
||||
REM vim: set ai ts=4 sw=4 et ft=dosbatch:
|
||||
|
|
|
@ -190,13 +190,13 @@ def wbatch_mkdirs():
|
|||
def wbatch_begin_hostnet():
|
||||
wbatch_new_file("create_hostnet.bat")
|
||||
wbatch_file_header("host-only networks")
|
||||
wbatch_write_template("template-begin_hostnet_bat")
|
||||
# Creating networks requires elevated privileges
|
||||
wbatch_elevate_privileges()
|
||||
wbatch_find_vbm()
|
||||
|
||||
|
||||
def wbatch_create_hostnet(if_ip, adapter):
|
||||
adapter = vboxnet_to_win_adapter_num(adapter)
|
||||
replace = {"IFNAME": adapter,
|
||||
"IFIP": if_ip}
|
||||
wbatch_write_template("template-create_hostnet_bat", replace)
|
||||
|
@ -237,9 +237,11 @@ def wbatch_log_vbm(*args):
|
|||
argl = list(*args)
|
||||
for index, arg in enumerate(argl):
|
||||
if re.match("--hostonlyadapter", arg):
|
||||
# The next arg is the host-only interface name -> change it
|
||||
argl[index+1] = '"' + vboxnet_to_win_adapter_num(argl[index+1]) + \
|
||||
'"'
|
||||
# The next arg is the host-only interface name -> change it.
|
||||
# We use the vboxnet interface name as a variable name for the
|
||||
# Windows batch scripts. This is a reference to the variable,
|
||||
# therefore the string must be somethin like "%vboxnet0%".
|
||||
argl[index+1] = '"' + "%{}%".format(argl[index+1]) + '"'
|
||||
elif re.match("--hostpath", arg):
|
||||
# The next arg is the shared dir -> change it
|
||||
argl[index+1] = r'%SHAREDIR%'
|
||||
|
@ -264,20 +266,6 @@ def wbatch_log_vbm(*args):
|
|||
# -----------------------------------------------------------------------------
|
||||
|
||||
|
||||
def vboxnet_to_win_adapter_num(vboxname):
|
||||
win_if = "VirtualBox Host-Only Ethernet Adapter"
|
||||
|
||||
# Remove leading "vboxnet" to get interface number
|
||||
if_num = int(vboxname.replace("vboxnet", ""))
|
||||
|
||||
if if_num > 0:
|
||||
# The first numbered "VirtualBox Host-Only Ethernet Adapter" is #2
|
||||
win_if += " #{}".format(str(if_num + 1))
|
||||
logger.debug("vboxnet_to_win_adapter_num returns: %s", win_if)
|
||||
|
||||
return win_if
|
||||
|
||||
|
||||
def wbatch_path_to_windows(full_path):
|
||||
rel_path = hf.strip_top_dir(conf.top_dir, full_path)
|
||||
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
ECHO %time% Deleting old iface_config.bat
|
||||
IF EXIST "%~dp0\iface_config.bat" DEL "%~dp0\iface_config.bat"
|
||||
ECHO.
|
||||
|
||||
REM vim: set ai ts=4 sw=4 et ft=dosbatch:
|
||||
|
|
@ -1,3 +1,6 @@
|
|||
ECHO %time% Loading network interface names
|
||||
CALL "%~dp0\iface_config.bat"
|
||||
|
||||
ECHO %time% Cleaning up autostart and log directories
|
||||
DEL /S /Q %AUTODIR%
|
||||
DEL /S /Q %LOGDIR%
|
||||
|
|
|
@ -1,9 +1,12 @@
|
|||
ECHO VBoxManage hostonlyif create
|
||||
"%VBM%" hostonlyif create
|
||||
REM Using "'" as a delimiter, the second token is the name of the VirtualBox
|
||||
REM Ethernet interface
|
||||
FOR /F "tokens=2 delims='" %%A IN ('"%VBM%" hostonlyif create') DO SET IFACE=%%A
|
||||
IF %errorlevel% NEQ 0 GOTO :vbm_error
|
||||
ECHO SET #IFNAME=%IFACE%
|
||||
SET #IFNAME=%IFACE%
|
||||
ECHO SET #IFNAME=%IFACE%>> "%~dp0\iface_config.bat"
|
||||
|
||||
ECHO VBoxManage hostonlyif ipconfig "#IFNAME" --ip #IFIP --netmask 255.255.255.0
|
||||
"%VBM%" hostonlyif ipconfig "#IFNAME" --ip #IFIP --netmask 255.255.255.0
|
||||
IF %errorlevel% NEQ 0 GOTO :vbm_error
|
||||
ECHO VBoxManage hostonlyif ipconfig "%#IFNAME%" --ip #IFIP --netmask 255.255.255.0
|
||||
"%VBM%" hostonlyif ipconfig "%#IFNAME%" --ip #IFIP --netmask 255.255.255.0
|
||||
|
||||
REM vim: set ai ts=4 sw=4 et ft=dosbatch:
|
||||
|
|
Loading…
Reference in New Issue