| @echo off | |
| rem Licensed to the Apache Software Foundation (ASF) under one or more | |
| rem contributor license agreements. See the NOTICE file distributed with | |
| rem this work for additional information regarding copyright ownership. | |
| rem The ASF licenses this file to You under the Apache License, Version 2.0 | |
| rem (the "License"); you may not use this file except in compliance with | |
| rem the License. You may obtain a copy of the License at | |
| rem | |
| rem http://www.apache.org/licenses/LICENSE-2.0 | |
| rem | |
| rem Unless required by applicable law or agreed to in writing, software | |
| rem distributed under the License is distributed on an "AS IS" BASIS, | |
| rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| rem See the License for the specific language governing permissions and | |
| rem limitations under the License. | |
| rem DESCRIPTION: | |
| rem This script reconfigures the Cygwin sshd service. It regenerates the | |
| rem computer's SSH host keys. This is necessary when Sysprep is run and | |
| rem new SIDs are generated. This script MUST be run by the root account | |
| rem or else the sshd service will not start. | |
| set /A STATUS=0 | |
| rem Get the name of this batch file and the directory it is running from | |
| set SCRIPT_NAME=%~n0 | |
| set SCRIPT_FILENAME=%~nx0 | |
| set SCRIPT_DIR=%~dp0 | |
| rem Remove trailing slash from SCRIPT_DIR | |
| set SCRIPT_DIR=%SCRIPT_DIR:~0,-1% | |
| echo ====================================================================== | |
| echo %SCRIPT_FILENAME% beginning to run at: %DATE% %TIME% | |
| echo Directory %SCRIPT_FILENAME% is running from: %SCRIPT_DIR% | |
| echo. | |
| echo ---------------------------------------------------------------------- | |
| echo %TIME%: Killing any cyg* processes... | |
| "%SystemRoot%\System32\taskkill.exe" /F /FI "IMAGENAME eq cyg*" 2>NUL | |
| echo ERRORLEVEL: %ERRORLEVEL% | |
| echo. | |
| echo %TIME%: Killing any ssh* processes... | |
| "%SystemRoot%\System32\taskkill.exe" /F /FI "IMAGENAME eq ssh*" 2>NUL | |
| echo ERRORLEVEL: %ERRORLEVEL% | |
| echo. | |
| echo %TIME%: Killing any bash* processes... | |
| "%SystemRoot%\System32\taskkill.exe" /F /FI "IMAGENAME eq bash*" 2>NUL | |
| echo ERRORLEVEL: %ERRORLEVEL% | |
| echo. | |
| echo ---------------------------------------------------------------------- | |
| echo %TIME%: Deleting old /etc/group file... | |
| del /F /S /Q /A C:\Cygwin\etc\group | |
| echo ERRORLEVEL: %ERRORLEVEL% | |
| echo. | |
| echo %TIME%: Deleting old /etc/passwd file... | |
| del /F /S /Q /A C:\Cygwin\etc\passwd | |
| echo ERRORLEVEL: %ERRORLEVEL% | |
| echo. | |
| echo %TIME%: Creating new "group" file... | |
| C:\Cygwin\bin\mkgroup.exe -l > C:\Cygwin\etc\group | |
| echo ERRORLEVEL: %ERRORLEVEL% | |
| set /A STATUS+=%ERRORLEVEL% | |
| echo. | |
| echo %TIME%: Creating new "passwd" file | |
| C:\Cygwin\bin\mkpasswd.exe -l > C:\Cygwin\etc\passwd | |
| echo ERRORLEVEL: %ERRORLEVEL% | |
| set /A STATUS+=%ERRORLEVEL% | |
| echo. | |
| rem Remove leading computer name: VCLV98-249+root: --> root: | |
| C:\Cygwin\bin\sed.exe -i -e "s/^[^:]\++//" /etc/group | |
| C:\Cygwin\bin\sed.exe -i -e "s/^[^:]\++//" /etc/passwd | |
| rem Change root's primary group from 'None' to 'Administrators' | |
| C:\Cygwin\bin\sed.exe -i -e "s/\(^root:.*:\)\(513\|197121\)\(:.*\)/\1544\3/" /etc/passwd | |
| echo ---------------------------------------------------------------------- | |
| echo %TIME%: Restoring ownership of /etc/ssh* files... | |
| C:\Cygwin\bin\chown.exe -v root:None /etc/ssh* 2>&1 | |
| echo ERRORLEVEL: %ERRORLEVEL% | |
| set /A STATUS+=%ERRORLEVEL% | |
| echo. | |
| echo %TIME%: Restoring ownership of /home/root/.ssh... | |
| C:\Cygwin\bin\chown.exe -v -R root:None /home/root/.ssh 2>&1 | |
| echo ERRORLEVEL: %ERRORLEVEL% | |
| set /A STATUS+=%ERRORLEVEL% | |
| echo. | |
| echo %TIME%: Restoring ownership of /var/empty... | |
| C:\Cygwin\bin\chown.exe -v root:None /var/empty 2>&1 | |
| echo ERRORLEVEL: %ERRORLEVEL% | |
| set /A STATUS+=%ERRORLEVEL% | |
| echo. | |
| echo %TIME%: Restoring ownership of /var/log/sshd.log... | |
| C:\Cygwin\bin\chown.exe -v root:None /var/log/sshd.log 2>&1 | |
| echo ERRORLEVEL: %ERRORLEVEL% | |
| set /A STATUS+=%ERRORLEVEL% | |
| echo. | |
| echo %TIME%: Restoring ownership of /var/log/lastlog... | |
| C:\Cygwin\bin\chown.exe -v root:None /var/log/lastlog 2>&1 | |
| echo ERRORLEVEL: %ERRORLEVEL% | |
| set /A STATUS+=%ERRORLEVEL% | |
| echo. | |
| echo ---------------------------------------------------------------------- | |
| echo %TIME%: Deleting old SSH keys... | |
| del /F /S /Q /A "C:\Cygwin\etc\ssh_host_*" | |
| echo ERRORLEVEL: %ERRORLEVEL% | |
| echo. | |
| echo %TIME%: Regenerating /etc/ssh_host_key... | |
| C:\Cygwin\bin\bash.exe -c 'C:/Cygwin/bin/ssh-keygen.exe -f /etc/ssh_host_key -N ""' 2>&1 | |
| echo ERRORLEVEL: %ERRORLEVEL% | |
| set /A STATUS+=%ERRORLEVEL% | |
| echo. | |
| echo %TIME%: Regenerating /etc/ssh_host_rsa_key... | |
| C:\Cygwin\bin\bash.exe -c 'C:/Cygwin/bin/ssh-keygen.exe -t rsa -f /etc/ssh_host_rsa_key -N ""' 2>&1 | |
| echo ERRORLEVEL: %ERRORLEVEL% | |
| set /A STATUS+=%ERRORLEVEL% | |
| echo. | |
| echo %TIME%: Regenerating /etc/ssh_host_dsa_key... | |
| C:\Cygwin\bin\bash.exe -c 'C:/Cygwin/bin/ssh-keygen.exe -t dsa -f /etc/ssh_host_dsa_key -N ""' 2>&1 | |
| echo ERRORLEVEL: %ERRORLEVEL% | |
| set /A STATUS+=%ERRORLEVEL% | |
| echo. | |
| echo ---------------------------------------------------------------------- | |
| echo %TIME%: Killing any cyg* processes... | |
| "%SystemRoot%\System32\taskkill.exe" /F /FI "IMAGENAME eq cyg*" 2>NUL | |
| echo ERRORLEVEL: %ERRORLEVEL% | |
| echo. | |
| echo %TIME%: Killing any ssh* processes... | |
| "%SystemRoot%\System32\taskkill.exe" /F /FI "IMAGENAME eq ssh*" 2>NUL | |
| echo ERRORLEVEL: %ERRORLEVEL% | |
| echo. | |
| echo %TIME%: Killing any bash* processes... | |
| "%SystemRoot%\System32\taskkill.exe" /F /FI "IMAGENAME eq bash*" 2>NUL | |
| echo ERRORLEVEL: %ERRORLEVEL% | |
| echo. | |
| echo %TIME%: Killing any ash* processes... | |
| "%SystemRoot%\System32\taskkill.exe" /F /FI "IMAGENAME eq ash*" 2>NUL | |
| echo ERRORLEVEL: %ERRORLEVEL% | |
| echo. | |
| echo %TIME%: Tasks running before attempting to executing rebaseall: | |
| "%SystemRoot%\System32\tasklist.exe" /V | |
| echo %TIME%: Running /usr/bin/rebaseall in the ash.exe shell | |
| C:\cygwin\bin\ash.exe -c '/usr/bin/rebaseall' 2>&1 | |
| echo ERRORLEVEL: %ERRORLEVEL% | |
| set /A STATUS+=%ERRORLEVEL% | |
| echo. | |
| echo ---------------------------------------------------------------------- | |
| echo %TIME%: Setting sshd service startup mode to auto... | |
| "%SystemRoot%\System32\sc.exe" config sshd start= auto 2>&1 | |
| echo ERRORLEVEL: %ERRORLEVEL% | |
| set /A STATUS+=%ERRORLEVEL% | |
| echo. | |
| echo %TIME%: Starting the sshd service... | |
| "%SystemRoot%\System32\net.exe" start sshd 2>&1 | |
| echo ERRORLEVEL: %ERRORLEVEL% | |
| set /A STATUS+=%ERRORLEVEL% | |
| echo. | |
| echo ---------------------------------------------------------------------- | |
| echo %TIME%: Deleting 'VCL Update Cygwin' scheduled task... | |
| "%SystemRoot%\system32\schtasks.exe" /Delete /F /TN "VCL Update Cygwin" | |
| echo ERRORLEVEL: %ERRORLEVEL% | |
| set /A STATUS+=%ERRORLEVEL% | |
| echo. | |
| echo ---------------------------------------------------------------------- | |
| echo %SCRIPT_FILENAME% finished at: %DATE% %TIME% | |
| echo exiting with status: %STATUS% | |
| "%SystemRoot%\system32\eventcreate.exe" /T INFORMATION /L APPLICATION /SO %SCRIPT_FILENAME% /ID 555 /D "exit status: %STATUS%" 2>&1 | |
| exit /B %STATUS% |