Author: brad Date: 2006-06-13 03:09:56 +0000 (Tue, 13 Jun 2006) New Revision: 16180
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=16180 Log: Updated windows host configuration readme file to reflect the new changes in win_setup.wsf. win_setup.wsf is a vbscript that: * Creates a local workstation administrator account. * If /hostname:<hostname> is passed in at the command line, change the system hostname. * If /workgroup:<workgroup> is passed in, change the system workgroup. * Enable and start the telnet service. win_setup.wsf requires that common.vbs be in the same directory. Added: branches/SOC/bnh/vbscript/win_setup.wsf Removed: branches/SOC/bnh/vbscript/windows_setup.zip branches/SOC/bnh/vbscript/windows_setup/ Modified: branches/SOC/bnh/vbscript/WINDOWS_SETUP_README Changeset: Modified: branches/SOC/bnh/vbscript/WINDOWS_SETUP_README =================================================================== --- branches/SOC/bnh/vbscript/WINDOWS_SETUP_README 2006-06-13 02:55:02 UTC (rev 16179) +++ branches/SOC/bnh/vbscript/WINDOWS_SETUP_README 2006-06-13 03:09:56 UTC (rev 16180) @@ -1,17 +1,15 @@ -To setup a windows host for testing, i've created a script to create a base -working directory, install the COP SSH server (http://itefix.no/copssh), -create an adminstrative user account, and give that user access to the SSH -server. +To setup a windows host for testing, i've created a script to create an +adminstrative user account, and enable and start the telnet service. +Optionally, the hostname and workgroup name can also be set. -Copy windows_setup.zip into a directory (C:\smbtmp in this example), and follow -these steps: +Copy win_setup.wsf and common.vbs into a directory (Z:\smbtest in this example), + and follow these steps: -C:\smbtmp>unzip windows_setup.zip -C:\smbtmp>cd windows_setup -C:\smbtmp\windows_setup>cscript win_setup.wsf /username:<username> /password:<password> -(<username> will be created, assigned the password <password>, and added to -the Domain Admins group. By passing optional /basedir:<basedir> parameter, -<basedir> will be created, otherwise C:\smbtorture_root will be created.) +Z:\smbtest>cscript win_setup.wsf /username:<username> /password:<password> +(<username> will be created, assigned the password <password>, and added to +the local Administrators group. By passing the optional /hostname:<hostname> +or /workgroup:<workgroup> parameters, the script will set the system hostname +or workgroup, respectively.) -Once this script finishes, <username> should be able to SSH into the windows +Once this script finishes, <username> should be able to telnet into the windows host. Added: branches/SOC/bnh/vbscript/win_setup.wsf =================================================================== --- branches/SOC/bnh/vbscript/win_setup.wsf 2006-06-13 02:55:02 UTC (rev 16179) +++ branches/SOC/bnh/vbscript/win_setup.wsf 2006-06-13 03:09:56 UTC (rev 16180) @@ -0,0 +1,239 @@ +<package> +<job id=win_setup> +<script language="VBScript" src="common.vbs"> + +const USAGE_STATEMENT = "Usage: cscript win_setup.wsf /username:<username> /password:<password> /hostname:<hostname> /workgroup:<workgroup>" +const DEFAULT_BASEDIR = "C:\smbtorture_root" + +' Use WMI to set the local system's hostname. +function setup_hostname(adminuser, adminpass, hostname) + + on error resume next + + dim network, old_hostname, wmi_service, local_machine + + ' Get current hostname. + set network = createObject("wscript.network") + old_hostname = network.computerName + + ' Get the WMI object for this host. + set local_machine = getObject("winmgmts:{impersonationLevel=" _ + & "impersonate}\\" & old_hostname _ + & "\root\cimv2:Win32_ComputerSystem.Name='" _ + & old_hostname & "'") + if err.number <> 0 then + stdout.writeline "Error setting up local_machine in " _ + & "function setup_hostname: " & err.description + setup_hostname = err.number + exit function + end if + + ' Rename the host. + error_code = local_machine.rename(hostname, adminpass, adminuser) + if error_code <> 0 then + setup_hostname = error_code + stdout.writeline "Error renaming host to " & hostname _ + & ". Returned " & error_code & "." + exit function + end if + + stdout.writeline "Local machine renamed to " & hostname & "." + setup_hostname = RTN_OK + +end function + +' Use WMI to set the local system's workgroup. +function setup_workgroup(adminuser, adminpass, workgroup) + + on error resume next + + dim network, hostname, wmi_service, local_machine + + ' Get hostname. + set network = createObject("wscript.network") + hostname = network.computerName + + set local_machine = getObject("winmgmts:{impersonationLevel=" _ + & "impersonate}!\\" & hostname _ + & "\root\cimv2:Win32_ComputerSystem.Name='" _ + & hostname & "'") + if err.number <> 0 then + stdout.writeline "Error setting up local_machine in " _ + & "function setup_workgroup: " & err.description + setup_workgroup = err.number + exit function + end if + + ' Set the workgroup name. + error_code = local_machine.joinDomainOrWorkgroup(workgroup, adminpass, adminuser) + if error_code <> 0 then + setup_workgroup = error_code + stdout.writeline "Error joining workgroup " & workgroup _ + & ". Returned " & error_code & "." + exit_function + end if + + stdout.writeline "Workgroup set to " & workgroup & "." + setup_workgroup = RTN_OK + +end function + +' Use WMI to start the disabled telnet service. +function start_telnet_service + + on error resume next + + dim network, hostname, wmi_service, telnet_service + + ' Get hostname. + set network = createObject("wscript.network") + hostname = network.computerName + + set telnet_service = getObject("winmgmts:{impersonationLevel=" _ + & "impersonate}\\" & hostname _ + & "\root\cimv2:Win32_Service='TlntSvr'") + if err.number <> 0 then + stdout.writeline "Error setting up telnet_service in " _ + & "function start_telnet_service: " & err.description + start_telnet_service = err.number + exit function + end if + + ' Set the telnet service start mode to Manual. + set method = telnet_service.methods_("ChangeStartMode") + set inParam = method.inParameters.spawnInstance_() + inParam.startMode = "Manual" + + set error_obj = telnet_service.execMethod_("ChangeStartMode", inParam) + if error_obj.returnValue <> 0 then + stdout.writeline "Error changing the telnet service " _ + & "start mode: " & error_obj.returnValue + start_telnet_service = error_obj.returnValue + exit function + end if + stdout.writeline "Telnet service enabled - Manual start mode." + + ' net start telnet + set shell = wscript.createObject("wscript.shell") + netstart_cmd = "net start telnet" + + error_code = shell.run(netstart_cmd, NEW_WINDOW_MINIMIZED, _ + True) + if error_code <> 0 then + if error_code = 2 then + stdout.writeline "Telnet service was already started." + else + stdout.writeline "Error calling " & netstart_cmd _ + & ". Returned " & error_code & "." + start_telnet_service = error_code + exit function + end if + else + stdout.writeline "Telnet service started." + end if + start_telnet_service = RTN_OK + +end function + +' If username exists, remove it. +' Create user. Add to local Administrators group. +function setup_user(username, password) + + on error resume next + + set shell = wscript.createObject("wscript.shell") + netuser_cmd = "net user " & username + error_code = shell.run(netuser_cmd, NEW_WINDOW_MINIMIZED, True) + + if error_code = 0 then + ' Try to delete the user before adding. + stdout.writeline "User " & username & " exists." + netuserdel_cmd = "net user " & username & " /DELETE" + error_code = shell.run(netuserdel_cmd, NEW_WINDOW_MINIMIZED, _ + True) + if error_code <> 0 then + stdout.writeline "Error calling " & netuserdel_cmd _ + & ". Returned " & error_code & "." + setup_user = error_code + exit function + end if + stdout.writeline "User " & username & " removed." + end if + + netuseradd_cmd = "net user " & username & " " & password & " /ADD" + error_code = shell.run(netuseradd_cmd, NEW_WINDOW_MINIMIZED, True) + if error_code <> 0 then + stdout.writeline "Error calling " & netuseradd_cmd _ + & ". Returned " & error_code & "." + setup_user = error_code + exit function + end if + + stdout.writeline "User " & username & " added." + + ' Add user to local Administrators group. + netgroup_cmd = "net localgroup ""Administrators"" " & username & " /ADD" + error_code = shell.run(netgroup_cmd, NEW_WINDOW_MINIMIZED, True) + if error_code <> 0 then + stdout.writeline "Error calling " & netgroup_cmd _ + & ". Returned " & error_code & "." + setup_user = error_code + exit function + end if + + stdout.writeline "User " & username & " added to group" _ + & " ""Administrators""." + setup_user = RTN_OK + +end function + +function check_error(error_code, function_name) + if error_code <> RTN_OK then + stdout.writeline "Fatal error. Function " & function_name _ + & " returned " & error_code & "." + wscript.quit(error_code) + end if + +end function + +dim required_options, provided_options + +required_options = array("username", "password") +set provided_options = wscript.arguments.named + +set setup_options = new setup_object +setup_options.check_options provided_options, required_options + +if setup_options.error_code = RTN_ERR then + setup_options.list_missing_options + stdout.writeline USAGE_STATEMENT + wscript.quit(setup_options.error_code) +end if + +username = provided_options.item("username") +password = provided_options.item("password") + +' Create local admin user with a known password. +error_code = setup_user(username, password) +check_error error_code, "setup_user" + +if provided_options.exists("hostname") then + hostname = provided_options.item("hostname") + error_code = setup_hostname(username, password, hostname) + check_error error_code, "setup_hostname" +end if + +if provided_options.exists("workgroup") then + workgroup = provided_options.item("workgroup") + error_code = setup_workgroup(username, password, workgroup) + check_error error_code, "setup_workgroup" +end if + + +' Enable and start the telnet service. +error_code = start_telnet_service +check_error error_code, "start_telnet_service" + +</script> +</job> +</package> Deleted: branches/SOC/bnh/vbscript/windows_setup.zip =================================================================== (Binary files differ)