1. Home
  2. Knowledge Base
  3. Administration | Knowledge Base
  4. Configure Workstation for HTTP or TFTP Services

Performing firmware and OS updates for a Clustered ONTAP environment is different from performing the same tasks in a 7-Mode environment. In 7-Mode, the easiest way of uploading the necessary files to the controllers was a simple file copy via CIFS or NFS. In cDOT, you don’t have this option for the cluster. Additionally, if you have a 4-node or larger cluster, you also have the cluster interconnect switches to contend with.

The options for uploading the necessary files to the cluster are via HTTP, TFTP or SCP. Likewise, the options for uploading the necessary files to the cluster interconnect switches are via TFTP or SCP.

If you do not already have a dedicated utility system set up for HTTP/TFTP services, the following are quick methods for setting up HTTP or TFTP on your local workstation.

Windows

Microsoft users have a few options on how to set up web services. However, there are two easy, quick, simple, and more importantly, free utilities that are recommended:

  • Mongoose Simple Web Server – is an utility that all you have to do is place it and the files that you want to distribute in the same directory and double-click. It will immediately open up a browser page of http://<your IP address>:8080 (8080 is the default port) and all of the files are there for retrieval. When you have finished uploaded the files needed to the cluster(s) you exit the program by clicking on the icon in the system tray and selecting exit.
  • Solarwinds TFTP Server – is another utility that many network administrators have been using for years to transfer files to¬†and from¬†network devices.

OS X

OS X has builtin utilities for both web services and TFTP services. Here are the procedures for setting up both:

Python Simple HTTP Server

Launch the Terminal application in OS X and, from the Bash shell, change directory to your home directory, if not already there.

Last login: Sat Jan 28 16:13:32 on ttys001
:username$ cd ~
:username$ cd pwd
/Users/username

Create a directory called Sites.

:username$ mkdir Sites
:username$ ls -l
total 8

drwx——@3usernamestaff102Dec919:51Applications
drwx——@5usernamestaff170Jan2703:47Desktop
[email protected]34usernamestaff1156Jan2309:01Documents
drwxr-xr-x+64usernamestaff2176Jan2815:25Downloads
drwx——@27usernamestaff918Jan2703:47Dropbox
drwx——@66usernamestaff2244Jan1807:30Library
drwxr-xr-x+6usernamestaff204Jan1116:34Movies
drwxr-xr-x+21usernamestaff714Jan1116:34Music
drwxr-xr-x+43usernamestaff1462Jan1411:10Pictures
drwxr-xr-x+5usernamestaff170Dec919:15Public
[email protected]25usernamestaff850Jan1407:50Sites

You can now download the files you need and save to the Sites folder.

Back in the Bash shell, change directory to Sites and list the directory contents.

:username$ cd Sites/
:Sites username$ ls -l
total 11620120

[email protected]1usernamestaff219076426Dec2809:21814P10_e_image.tgz
[email protected]1usernamestaff226076878Dec2809:23814P10_e_image.zip
[email protected]1usernamestaff207801301Dec2809:23814P10_e_netboot.tgz
[email protected]1usernamestaff249159750Dec2809:21814P10_q_image.tgz
[email protected]1usernamestaff270307184Dec2809:21814P10_q_image.zip
[email protected]1usernamestaff223503754Dec2809:21814P10_q_netboot.tgz
[email protected]1usernamestaff500410817Dec2809:21824P5_q_image.tgz
[email protected]1usernamestaff475173704Dec2809:21824P5_q_netboot.tgz
[email protected]1usernamestaff172596872Dec817:18832P8_q_image.tgz
[email protected]1usernamestaff17718728Dec817:10832P8_q_netboot.tgz
-rw-r–r–@1usernamestaff575952059Jan1219:54832P9_q_image.tgz
-rw-r–r–@1usernamestaff554286788Jan1220:46832P9_q_netboot.tgz
[email protected]1usernamestaff623443411Dec2809:1890P2_q_image.tgz
[email protected]1usernamestaff606997652Dec2809:1890P2_q_netboot.tgz
-rw-r–r–@1usernamestaff814632434Jan1219:4591_q_image.tgz
[email protected]1usernamestaff2266Oct806:03CN1610_CS_RCF_v1.2.txt
[email protected]1usernamestaff12854508Oct806:03NetApp_CN1610_1.2.0.7.stk
[email protected]1usernamestaff162149289Dec2809:33all.zip
[email protected]1usernamestaff37283453Dec2809:33all_shelf_fw.zip
-rwxrwxrwx1usernamestaff414May302015id_rsa.pub
-rwxrwxrwx1usernamestaff2642Jul82011index.html
[email protected]1usernamestaff32099Dec2809:33qual_devices.zip

NOTE: You may need to change the permissions on the files within.

:Sites username$ chmod 777 *
:Sites username$ ls -l
total 11620120

[email protected]1usernamestaff219076426Dec2809:21814P10_e_image.tgz
[email protected]1usernamestaff226076878Dec2809:23814P10_e_image.zip
[email protected]1usernamestaff207801301Dec2809:23814P10_e_netboot.tgz
[email protected]1usernamestaff249159750Dec2809:21814P10_q_image.tgz
[email protected]1usernamestaff270307184Dec2809:21814P10_q_image.zip
[email protected]1usernamestaff223503754Dec2809:21814P10_q_netboot.tgz
[email protected]1usernamestaff500410817Dec2809:21824P5_q_image.tgz
[email protected]1usernamestaff475173704Dec2809:21824P5_q_netboot.tgz
[email protected]1usernamestaff172596872Dec817:18832P8_q_image.tgz
[email protected]1usernamestaff17718728Dec817:10832P8_q_netboot.tgz
[email protected]1usernamestaff575952059Jan1219:54832P9_q_image.tgz
[email protected]1usernamestaff554286788Jan1220:46832P9_q_netboot.tgz
[email protected]1usernamestaff623443411Dec2809:1890P2_q_image.tgz
-rwxrwxrw[email protected]1usernamestaff606997652Dec2809:1890P2_q_netboot.tgz
[email protected]1usernamestaff814632434Jan1219:4591_q_image.tgz
[email protected]1usernamestaff2266Oct806:03CN1610_CS_RCF_v1.2.txt
[email protected]1usernamestaff12854508Oct806:03NetApp_CN1610_1.2.0.7.stk
[email protected]1usernamestaff162149289Dec2809:33all.zip
[email protected]1usernamestaff37283453Dec2809:33all_shelf_fw.zip
-rwxrwxrwx1usernamestaff414May302015id_rsa.pub
-rwxrwxrwx1usernamestaff2642Jul82011index.html
[email protected]1usernamestaff32099Dec2809:33qual_devices.zip

From within that directory, launch the Python HTTP server.

:Sites username$ python -m SimpleHTTPServer 8080

The files that you have in your Sites directory are now available to be uploaded to the cDOT cluster(s) via http://<your IP address>:8080/<filename>.

Once you have completed uploading the files to the cluster(s), from the Bash shell, hit Control-C and this will stop the HTTP server.

TFTP Server

OS X has a built-in TFTP server that can be managed either via a GUI, TFTP Server v3.5.1, or CLI. However, depending on the version of OS X you are running, the GUI front end may not work. As such, here is the process of launching it from the Terminal app and linking it to the same Sites directory that is mentioned above for the simple HTTP server.

The full procedure for setting up the TFTP server can be found here at Run a TFTP Server for Network Device Setups…on Mac OS X, however the following is an abridged version:

Launch the Terminal application and from the Bash shell, start the TFTP daemon.

:~ username$ sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist

This launches the TFTP daemon with the default tftpboot path of /private/tftpboot.

You can confirm it is running via the netstat command.

:~ username$ netstat -na |grep \*.69

udp400*.69*.*
udp600*.69*.*

:~ username$

When you have finished transferring all of the files needed, unload the TFTP daemon and verify that it is not running.

:~ username$ sudo launchctl unload -F /System/Library/LaunchDaemons/tftp.plist
:~ username$ netstat -na |grep \*.69
:~ username

The default tftpboot path (/private/tftpboot), in earlier versions of OS X, allowed changes. However, enhanced security in OS X El Capitan, and later, makes changing the tftpboot path more difficult. By doing the following, you can create a symlink to a directory where you have full control over the files (i.e. Sites).

:~ username$ cd /private/
:private username$ sudo rm -rf tftpboot
:private username$ sudo ln -s /Users/username/Sites tftpboot
:private username$ sudo launchctl unload -F /System/Library/LaunchDaemons/tftp.plist # execute only if tftpd is currently running
:private username$ sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist

Was this article helpful?