Category Archives: Programming and Scripting

Advice, code, tricks and tips for programmers.

Using OpenSSH and SSH on Windows

Published by:

Secure Shell software allowing connections between clients and servers for remote administration.

Related Powershell Commands:
Check the installation status
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

Start the service
Start-Service sshd

Change the service startup behaviour
Set-Service -Name sshd -StartupType 'Automatic'

Add/Install the service
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Local Tunneling allows a port on your local client machine to act as a port on the remote server.
Jump to remote tunnel at 7m 43 secs
Useful Commands to show the logged in user account etc:

tasklist /s <pcname> /fi "imagename eq explorer.exe" /v

wmic /node: <pcname> computersystem get username

wmic /node: <pcname> computersystem get manufacturer, model, username

Or locally:
wmic computersystem get manufacturer, model, username

Change the Network Hostname (Requires Admin account)
Using CMD
wmic computersystem where name="%COMPUTERNAME%" rename "NewName"

Use Powershell and CMD to switch between sessions on either command line  

Using Powershell
Rename-Computer "NewName" -Restart

Windows cURL on the command line

Published by:

Command line and scripting tool for transferring data with URLs see the website Curl.se

curl -L -A "Mozilla" http://website.com

This follows re-directs and uses a dummy header to anticipate 406 Not Acceptable errors then returns the page content, you can use a full header string to represent other browsers

This YouTube video is presented by the cURL creator

Windows Robocopy command common usage issues problems & gotchas

Published by:

Enclosing the source or destination in double quotes allows the use of paths with spaces in the folder names but DO NOT end with a trailing backslash ‘\’ as this will be interpreted as an escape character.

When using the task scheduler to run a robocopy command script be aware that using the account credentials of the logged-in user may be necessary for access to network drives referred to by the command. An administrator account may not have the necessary permissions.

Syntax
      ROBOCOPY Source_folder Destination_folder [files_to_copy] [options]

      ROBOCOPY "M:\" "X:Destination Folder\" DON'T USE EITHER OF THESE

      ROBOCOPY M:\ "X:Destination Folder" THIS WORKS

Windows Batch File – Copy Folder from an Existing Template with User Input

Published by:

Paste the following code into a .bat text file to create a runnable script that copies an example template folder with contents to a new folder with a name entered by the user. There are an additional couple of lines that then rename and delete files in the new folder as an example of further customisation that could be automated.

@echo off
pushd %~dp0
REM request a Directory Name
set /p UserInput= "Create Directory: "
REM create directory using a source folder template
if not exist "%UserInput%" (
mkdir "%UserInput%"
xcopy /e SourceTemplateFolder "%UserInput%"
REM customise contents
rename "%UserInput%\Content.txt" NewContent.txt
del "%UserInput%\FileToDelete.txt"
)
popd

Windows Batch File – Back Up DropBox to Removable USB drive

Published by:

Paste the following code into a .bat text file to create a runnable script that copies your DropBox folder contents to a specified folder on any removable drives (D: thru H:) present. This excludes the dropbox cache and other hidden and system files. Double-click the batch file or run from the command line. You can change the destination folder name (after ‘Destination=’) or the source dropbox folder location if different (“%USERPROFILE%\Dropbox”). You could also edit the example file (‘Excludefile.123’) to exclude other files or file types (like ‘*.zip’) or directories (add to ‘.dropbox.cache’) – use spaces to separate multiple entries – see Robocopy for more information. A log file is created in the root of the destination drive recording what was done.


@ECHO OFF
TITLE Backup
REM
SET Destination=FolderOnUSB
SET Counter=0
ECHO.
ECHO  DropBox BackUp Job to folder '%Destination%' on removable USB drives
ECHO  *** Excluding hidden '.dropbox.cache' folder, system files ***
ECHO.
ECHO  *** WARNING files-in-use may be skipped ***
CALL :SleepSeconds 5
REM loop thru drive letters
FOR %%x in (D E F G H) DO (CALL :CopyToDrive %%x)
REM
ECHO  Finished - Drives updated = %Counter%
ECHO.
TIMEOUT 10

EXIT /B %ERRORLEVEL%
REM
REM  **************Functions*****************
:CopyToDrive 
SET DriveLetter=%~1
REM ECHO  Searching for %DriveLetter%:\%Destination%
IF EXIST "%DriveLetter%:\%Destination%\" (
ECHO  %DriveLetter%: Data Drive updating
CALL :SleepSeconds 5
ROBOCOPY "%USERPROFILE%\Dropbox" "%DriveLetter%:\%Destination%" /MIR /FFT /Z /NP /TEE /XA:H /XD .dropbox.cache /W:5 /XJ /XF ExcludeFile.123 /NFL /log:"%DriveLetter%:\%Destination%-CopyLog.txt"
set /a Counter=%Counter%+1)
REM
ECHO.  
EXIT /B 0

REM ========================================
:SleepSeconds 
SET DelaySec=%~1
TIMEOUT /T  %DelaySec% /NOBREAK > nul
EXIT /B 0

Windows Batch File – to create an empty folder structure in the same folder

Published by:

Paste the following code into a .bat text file to create a runnable script that makes a new empty folder structure within the same directory by double-clicking the file or running from the command line. You can change the CALL lines to reflect the folder names you require.

@ECHO OFF
TITLE Make Folders
REM use path of script %~dp0 as working directory 
REM this ensures that working directory is set expicitly
REM if run from CMD prompt the script path might be otherwise ignored
pushd %~dp0
ECHO Making Empty Folder Structure 
CALL :MakeFolder My-Config
REM create a folder with a space in the name use quotes "My Config"
CALL :MakeFolder My-Desktop\Sub-folder
REM create a sub folder
CALL :MakeFolder My-Documents
CALL :MakeFolder My-Downloads
CALL :MakeFolder My-Music
CALL :MakeFolder My-Pictures
CALL :MakeFolder My-Videos
popd
TIMEOUT 5
EXIT /B %ERRORLEVEL%
REM
REM create folder function
:MakeFolder 
SET fldr=%~1
if not exist %fldr% MD %fldr%
EXIT /B 0