Personal tools
Sections
You are here: Home > IT Support insights > Packaging SSH Clients: PuttyTray redux and FileZilla
@CSC Blogs

The bloggers are experts working at CSC - IT Center for Science Ltd. The opinions published on the blogs are their own.

Readers can comment on published blog posts. CSC or its employees are not liable for the content produced by readers.

CSC has the right to remove reader comments if they are considered to be against good morals or against the law or offensive in any other way.

 
Document Actions

Packaging SSH Clients: PuttyTray redux and FileZilla

Submitted by Joni Nevalainen posted on 2011-08-25 17:02 last modified 2011-08-26 11:03
Secure SHell (SSH) is a popular low-bandwidth protocol to use remote devices via terminal sessions, tunnel connections and more. This post details one way to package open source windows clients for SSH and SFTP/FTP/FTPS (with UTF-8 support) to be distributed in a managed environment.

SSH has many implementations mainly due to it being an Internet Engineering Task Force (IETF) standardized protocol. One motivating force for this packaging effort was the need to interact with UTF-8 charset enabled systems, recognizable typically from their latin-1 alphabet interpretations where åäö become åäö.

Putty

From various comparisons, Putty fared quite well as a free and functional SSH client. Being an open source program, it has gotten some forks which implement support for URL-clicking from the terminal. Nutty and PuTTY Tray have ceased development, but PuTTY Tray Redux has recently published a version with the same functionality.

Putty is in itself a pretty simple program. Just one executable file, no installer, settings are stored in the HKEY_CURRENT_USER registry and the program doesn't need administrative priviledges to install or run. There are also portable putty versions that store the settings in files.

Here's a modifiable install.bat file we used:

REM 2011-08-15 JoniN/CSC

REM This will install PuttyTray Redux, which has URL-click support added to Putty.
REM The script needs to be run with admin-level rights to modify the %ProgramFiles% folder
REM Version downloaded from http://www.simmonsconsulting.com/2011/07/30/puttytray-redux/

REM Map server share
echo ohi | net use * \\server\share /user:put\ty redux /PERSISTENT:NO

REM Remove possible older versions
IF EXIST "%ProgramFiles%\Putty" RMDIR "%ProgramFiles%\Putty" /S /Q

REM Install PuttyTray Redux 0.61
MKDIR "%ProgramFiles%\Putty"
COPY /Y \\server\share\folder\Putty\puttyTray.exe "%ProgramFiles%\Putty"

REM Making of the shortcut and copying it to the start menu
MKDIR C:\Temp
CACLS C:\Temp /E /G USERS:F
DEL /F /Q C:\Temp\PuttyTray.LNK
CSCRIPT \\server\share\folder\Putty\puttyIcon.vbs
COPY C:\Temp\PuttyTray.LNK "%AllUsersProfile%\Desktop\PuttyTray.LNK"
MKDIR "%AllUsersProfile%\Start Menu\Programs\SSH"
COPY C:\Temp\PuttyTray.LNK "%AllUsersProfile%\Start Menu\Programs\SSH"
DEL /F /Q C:\Temp\PuttyTray.LNK

To assist the creation of icons, this puttyIcon.vbs script was included in the installation folder:

Set oWS = WScript.CreateObject("WScript.Shell")
sLinkFile = "C:\temp\PuttyTray.LNK"
Set oLink = oWS.CreateShortcut(sLinkFile)
   
oLink.TargetPath = "%ProgramFiles%\Putty\PuttyTray.EXE"
'	oLink.Arguments = ""
	oLink.Description = "SSH Client"
'	oLink.HotKey = "ALT+CTRL+F"
'	oLink.IconLocation = "C:\Program Files\MyApp\MyProgram.EXE, 2"
'	oLink.WindowStyle = "1"
'	oLink.WorkingDirectory = "C:\Program Files\MyApp"
oLink.Save

The slinkfile parameter didn't support environmental variables, so a fixed path was used to generate the initial icon into. By using the same %ProgramFiles% variable in both the copying part and the icon part, it will work in all windows systems, XP and windows 7 included.

Since the default charset in Putty is ISO-8859-1 (Latin-1), we needed to change the default. This was done by adding this piece of script to a script that is run everytime a user logs on to a domain:

REM ************ Putty settings start  *************
REM Setting default charset to UTF-8 once / user account
REM This means that the user can also change the default if (s)he so wishes
REM The log file is %SystemRoot%\OwnLogs\PuttyDef.txt
REM 2011-08-18 JoniN/CSC

:logsCreated
rem Is the log directory created by admin-level scripts already?
if not exist "%SystemRoot%\OwnLogs" goto end
set LOGFOLD=%SystemRoot%\OwnLogs

rem Checking if the software has been installed already, using local resources
rem Check is also user-specific
type %LOGFOLD%\PuttyDef.txt | %SystemRoot%\system32\qgrep -z -y %username%
if ERRORLEVEL==1 goto install
rem ERRORLEVEL will match 1 or greater if the file is not found or username is not found
goto end

:install
IF NOT EXIST "%ProgramFiles%\Putty\PuttyTray.exe" goto end

%SystemRoot%\regedit /s \\ad.domain.here\SYSVOL\ad.domain.here\settings\Putty\Putty-default-UTF8.reg
IF NOT EXIST "%LOGFOLD%\PuttyDef.txt" echo Putty default charset has been set to UTF-8 for these users: > "%LOGFOLD%\PuttyDef.txt"
echo "%username% %date%" >> "%LOGFOLD%\PuttyDef.txt"

:end 

REM ************ Putty settings end *************

The script uses qgrep which can be obtained from the Windows server 2003 resource kit. The associated Putty-default-UTF8.reg file is here:

Windows Registry Editor Version 5.00

[HKCU\Software\SimonTatham\PuTTY\Sessions\Default%20Settings]
"LineCodePage"="UTF-8"

 If Putty needs to be removed, I also made this uninstall.bat script to revert changes:

REM 2011-08-17 JoniN/CSC

REM This will remove PuttyTray Redux CSC-packaged version
REM The script needs to be run with admin-level rights in order to modify the %ProgramFiles% folder

REM Remove possible old version
IF EXIST "%ProgramFiles%\Putty" RMDIR "%ProgramFiles%\Putty" /S /Q

DEL /F /Q C:\Temp\PuttyTray.LNK
DEL /F /Q "%AllUsersProfile%\Desktop\PuttyTray.LNK"
DEL /F /Q "%AllUsersProfile%\Start Menu\Programs\SSH\PuttyTray.LNK"
RMDIR "%AllUsersProfile%\Start Menu\Programs\SSH"

FileZilla

To get a graphical client for transferring files, we could have used the Firefox FireFTP plugin. We opted for FileZilla because it has slightly wider protocol support and the transfers are processor-efficient, achieving high throughput. Also the fact that it's available on three major platforms (Win, Linux, Mac) makes the user experience worthy of learning for continued use.

The installation process is pretty simple. Download the installer and use the /S switch to do a silent install with default settings.

Since FileZilla updates quite often, we don't want to burden our users with frequent updates. Disabling the update checks was done by copying this fzdefaults.xml file to the installation directory:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<FileZilla3>
    <Settings>
        <Setting name="Disable update check">1</Setting>
    </Settings>
</FileZilla3>

And here's the related install.bat:

REM 2011-08-16 JoniN/CSC

REM FileZilla is an FTP,SFTP ja FTPS client, that is quite easy to use and efficient in transfers.
REM http://www.appdeploy.com/packages/detail.asp?id=1399

REM Map server share
echo ohi | net use * \\server\share /user:fil\ezi lla /PERSISTENT:NO

REM Install of FileZilla
\\server\share\FileZilla\FileZilla_3.5.0_win32-setup.exe /S 

REM Remove automatic updates
IF DEFINED ProgramFiles(x86) GOTO W7
COPY /Y \\server\share\FileZilla\fzdefaults.xml "%ProgramFiles%\FileZilla FTP Client"
GOTO END

:W7
COPY /Y \\server\share\FileZilla\fzdefaults.xml "%ProgramFiles(x86)%\FileZilla FTP Client"

:END

REM The installer engine is Nullsoft installer 2.0:
REM http://unattended.sourceforge.net/installers.php

Here we assume that all Windows 7 installations are 64bit versions, making FileZilla install into the %ProgramFiles(x86)% directory.

PS: FileZilla and other tools can also be installed and updated with the simple Ninite tool.

LvvWOKysMaDw

Posted by fRdRWZYZGXFuEdvzFf at 2011-10-01 07:16
Very valid, pithy, scucicnt, and on point. WD.
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
Please tell us your name.
(Required)
(Required)
(Required)
This field is used to prevent inappropriate use of this form by automated spam agents. Please input the string seen in the picture to enable processing of this form.
Captcha