Open main menu

CDOT Wiki β

Changes

Tutorial6: File Transfer / Sending Email Messages

17,289 bytes added, 20:35, 4 September 2023
no edit summary
{{Admon/caution|DO NOT USE THIS VERSION OF THE LAB. This page will no longer be updated.|'''New version here:''' https://seneca-ictoer.github.io/ULI101/A-Tutorials/tutorial6<br />'''Andrew's students please go here:''' http://wiki.littlesvr.ca/wiki/OPS145_Lab_6}}
=TRANSFERRING FILES BETWEEN COMPUTERS=
<br>
:* Securely '''transfer''' copies of files between Unix/Linux servers using the '''sftp''' command
:* Use the '''mailssh''' command to send email messages to your Seneca email accountrun and view commands on a '''remote computer''' from a '''local computer'''.
:* Use the '''mail''' command to send email with '''file attachments''' to your Seneca email account
|- valign="top" style="padding-left:15px;"
|colspan="2" |Course Notes'''Slides:'''<ul><li>Week 6 Lecture 1 Notes:<br>[https://ictwiki.cdot.senecacollege.ca/~murray.saululi101/uli101slides/ULI101-Week66.1.pdf PDF] | [https://ictwiki.cdot.senecacollege.ca/~murray.saululi101/uli101slides/ULI101-Week66.1.pptx PPTX]</li></ul>
| style="padding-left:15px;" |'''Definitions:'''
* [https://en.wikipedia.org/wiki/Secure_copy Secure Copy]
* [https://en.wikipedia.org/wiki/SSH_File_Transfer_Protocol Secure File Transfer Protocol]
* [https://en.wikipedia.org/wiki/Mail_(Unix) Email]<br><br>
| style="padding-left:15px;"|'''File Transfer Commands:'''
* [http://man7.org/linux/man-pages/man1/scp.1.html scp]
* [http://man7.org/linux/man-pages/man1/sftp.1.html sftp]
* [https://man.openbsd.org/mail mail]
|colspan="1" style="padding-left:15px;" width="30%"|'''Instructional Videos:'''<ul><li>[https://www.youtube.com/watch?v=EBvxbuhDKBw Using scp Command]</li><li>[https://www.youtube.com/watch?v=QcKYFEgfV-I Using sftp Command]</li><li>[https://www.youtube.com/watch?v=Iuf_mLrvh2o Using the mail Command]</li></ul>
|}
= KEY CONCEPTS =
The '''ssh''' Linux command is a '''suite of tools''' to allow the user to issue Linux commandssecurely between <br>securely between Unix / Linux servers, as well as securely '''copy''' and '''transfer''' files among Unix/Linux servers.
In this tutorial, you will learn several different methods to securely transfer files from your Matrix Linux account<br>to other computers using Linux commands including '''scp''', '''sftp''' and '''mail'''.
===Secure Copy (scp)===
===Issuing Commands on Remote Unix/Linux Servers===[[Image:scpssh-diagramremote.png|thumb|right|450px350px|The '''scpssh''' Unix/Linux command is can be used to securely copy files between Unix<u>run</u> and <u>view</Linux serversu> commands on '''remote computer''' from a '''local computer'''.]]You can use the '''Secure copy protocol (ssh''' command to issue Unix/Linux commands on a '''scpremote''') is a means of securely transferring server<br>from your <u>local</u> computer files between a local host and without logging into a remote host or between two remote hosts. It is based on the Secure Shell server (SSHsuch as Matrix) protocol.   ''Command Usage:'' <span style="SCPfont-family:courier" commonly refers to both the Secure Copy Protocol and the program itself>'''ssh username@matrix.senecacollege.ca ls -l'''</span> You will be prompted for your Matrix account password, then the contents of your home directory in your remote Matrix account will be displayed on your <u>local</u> computer's terminal.<br><br>
Reference: https://en.wikipedia.org/wiki/Secure_copy===Secure Copy (scp)===
[[Image:scp-diagram.png|thumb|right|350px|The '''scp''' Unix/Linux command is used to securely copy files between Unix/Linux servers.]]
The '''scp''' command is used to <u>securely</u> copy files between your '''local''' computer and '''remote''' Unix/Linux server. The usage for the ''scp'' command is similar to the '''cp''' command with the addition of '''user name''' and '''host name'''.
The usage for the '''scp''' command is similar to the '''cp''' command with the addition of host names, for example:
''Command Usage:''
<span style="font-family:courier">'''scp local.file username@host:destination-pathname'''<br>'''scp local.file username@host:'''<br>'''scp local.file user@host:file-pathname local-pathname'''<br><br></span>
The most common '''mistake''' that students make is forgetting to add<br>the '''colon''' character ":" <u>after</u> the remote hostname.
The user name in the command can be '''omitted''' if it's the same as on the <u>local </u> host. <br>Multiple file and recursive directory copy (i.e. option '''-Rr''') is supported.
<br><br>
[[Image:sftp-diagram.png|thumb|right|350px|The '''sftp''' Unix/Linux command is used to securely transfer (copy) files between Unix/Linux servers.]]
''<span style="font-weight:bold">sftp</span> is a file transfer program, similar to ftp, which performs all operations over an encrypted ssh transport. It may also use many features of ssh, such as '''public key authentication''' and '''compression'''.''
Reference: http://man7'''FTP''' stands for '''File Transfer Protocol''' which provides a set of '''rules''' on how to convert data that is transferred between computers (both identical and different operating systems).org/linux/man-pages/man1The '''sftp''' command performs file transfers <u>securely</sftp.1u> using encryption.html
'''FTP''' is an acronym for '''File Transfer Protocol''' which provides a set of '''rules''' on how to convert data that is transferred between computer servers (both identical and different operating systems).
The usage for the '''sftp'Command Usage:'' command is displayed below:
'''<span style="font-family:courier">sftp username@hostname</span>'''
When you login via the sftp command, the '''sftp prompt''' appears. The ftp prompt is like a Bash shell prompt, but with a limited number of commands.
When issuing sftp commands, it is important to understand that the local server relates to the server where you first issued the sftp command.
Below is a table that provide When you login via the ''sftp'' command, the '''basic sftp commandsprompt''' to perform file transfer and management appears. The sftp prompt is like a Bash shell prompt, but with a limited number of commands. Some of those When issuing sftp commands loosely resemble Unix, the local server relates to the server where you first issued the sftp command. Refer to the diagram on the right for <u>local</Linux u> and <u>remote</u> ''sftp'' commands.[[Image:graphical-sftp-application.png|thumb|right|250px|'''Graphical''' SFTP application.]]  '''<big>Graphical SFTP Applications</big>'''
Although it is important to know how to use the '''sftp''' command for ''quizzes'', ''midterm'' and ''final exam'',<br>there are '''graphical sftp applications''' that provide an alternative to issuing commands.
<table border="1" cellspacing="0" cellpadding="5"><tr style="text-alignIf you installed the graphical '''Secure Shell Client''' application in your Windows computer from performing [https:center;"><th>Operation</th><td>/wiki.cdot.senecacollege.ca/wiki/Tutorial_1:_Using_Your_Matrix_Server_Account#CONNECTING_TO_YOUR_MATRIX_ACCOUNT_FROM_A_GRAPHICAL_WINDOWS_APPLICATION TUTORIAL 1 INVESTIGATION 1], you can use this application to transfer files between your computer and your Matrix account by graphically '''navigating''', '''sftp Commandselecting'''<br>(Local Server)</td><td>and '''sftp Commanddragging'''<br>(Remote Server)</td></tr><tr><td>Display current working directory</td><th>!pwd</th><th>pwd</th></tr><tr><td>Display directory contents</td><th>!ls</th><th>ls</th></tr><tr><td>Create Directory</td><th>!mkdir</th><th>mkdir</th></tr><tr><td>Change directory location</td><th>lcd</th><th>cd</th></tr><tr><td>Upload file to remote server</td><th>put</th><th>-</th></tr><tr><td>Download file to local server</td><th>get</th><th>-</th></tr></table>files between computers.<br><br>
===Sending Emails with File Attachment (mail)===
[[Image:mail-diagram.png|thumb|right|350px|The '''mail''' command allows users to send and receive email messages. (Image licensed under [https://creativecommons.org/licenses/by-sa/3.0/ cc])]]
''<span style="font-weight:bold;">mail</span> is a command-line email client for Unix and Unix-like operating systems.''
Reference: https://enYou can use the '''mail''' command in Matrix to send email messages<br>to other email accounts via the Internet.wikipedia.org/wiki/Mail_(Unix)
[[Image:mail-diagram.png|thumb|right|400px|Using the '''mail''' command with '''redirection''' to send email<br>with file attachment.]]
'''Sending a Simple Email Message:'''
:#Type: '''<span style="font-family:courier;">mail username@hostname''' and press '''ENTER''' </span><br>
:#Enter '''subject line''' and press '''ENTER'''<br>
:#Type the '''body of the message''' and then when finished, <br>press <span style="font-family:courier">'''ctrl+d'''</span> to send message<br><br>
'''Sending an Email Message with a File Attachment:'''
[[Image:mail-diagram-2.png|thumb|right|275px|Viewing email with file attachment in<br>'''Seneca email account'''.]]
:#Type: '''<span style="font-family:courier;">mail username@hostname -a filepathname</span>''' and press '''ENTER''' <br>
:#Enter '''subject line''' and press '''ENTER'''<br>
'''Alternative Method of Sending an Email Message with a File Attachment:'''
:#Type: '''<span style="font-family:courier;">mail -s "your subject line" username@hostname < filenamepathnamefilepathname</span>'''
:#Press '''ENTER''' to send<br><br>'''NOTE:''' You would have to use this method since you have used '''stdin''' redirection<br>to attach the file’s so you can’t input the subject line from the terminal!<br><br>
=INVESTIGATION 1: USING FILE TRANSFER (SECURE COPY)<span style="color:red;">'''ATTENTION''': This online tutorial will be required to be completed by '''Friday in week 8 by midnight''' to obtain a grade of '''2%''' towards this course</span><br><br> [[Image:cmd.png|thumb|right|350px|Make certain to '''open a command-line terminal''' and<br><u>'''NOT'''</u> a graphic SSH application for this tutorial!.]]The '''SSH''' package on your ''home computer'' and on the ''Matrix Linux server''<br>contain a '''suite''' (i.e. collection) of secure utilities including '''ssh''' and '''scp'''.
<br>In this sectioninvestigation, you will learn how to use the '''scp''' command to '''securely<br>copy files ''' between your computer and your Matrix Linux server. This methods is useful because it can be performed in the ''MS-Windows'', ''MacOSx'', and ''Unix/Linux'' operating systems.<br><br>You will also learn how to issue the '''ssh''' command to run commands on your<br><u>'''remote'''</u> Matrix server while remaining on your <u>'''local'''</u> computer.
'''Perform the Following Steps:'''
:<span style="color:blue;">'''NOTE:''' You are <u>REQUIRED</u> to open a terminal in yours OS (i.e. <u>NOT</u> a graphical SSH application) for this tutorial.<br><br>
# Determine which operating system that your computer is using.<br><br>
# Try connecting Connect to your Matrix account using the instructions in the table below based on <u>your</u> '''current operating system'''.<br><br>
<table style="margin-left:50px;">
<tr valign="top" style="text-align:center;">
</td>
</tr>
</table><br><br><ol><li value="3">When you have issue the above ssh '''NOTE:''' Make certain to open a '''command, enter your password to login.<br-line terminal''' and <u>NOT</u> a <u>graphical</u> SSH application for this tutorial.<br><br></li><li>Issue After logging into your Matrix account, issue to the following '''pwd''' command to confirm you are in your home directory.<br><br></li><li>Issue the following Linux commands command to create the following directory:<br><span style="color:blue;font-weight:bold;font-family:courier;">mkdir ~/remote</span><br><br></li><li>Change to the <b>~/remote</b> directory and confirm that you have changed to that directory.<br><br></li><li>Use a text editor to create a text file called <b>myfile.txt</b><br><br></li><li>Enter the following two lines displayed below in your editing session:<br><span style="font-family:courier;font-weight:bold;">This is my file<br>It is a small file</span><br><br></li><li><b>Save</b> editing changes to your ''myfile.txt'' file and exit your text editor.<br><br></li><li>Change back to your Let's run a <b>homeshell script</b> directory and confirm to check that you are located in your created the <ib>homeremote</ib> directory.<br>and that you created the <brb>myfile.txt</lib>file (with correct file contents) in that directory.<libr>Let's run a <bbr>shell script</bli> to check that you created the correct directories<br</li>and that you created Enter the following command: <b>myfile.txt</b> file (with correct file contents) in the <bspan style="color:blue;font-weight:bold;font-family:courier;">~uli101/fromweek6-check-1</bspan> directory<br>before using the ''scp'' Linux command.<br><<br></li></li>Issue If you encounter errors, make corrections and then re-run the following: checking script until you receive<span style="color:blue;font-weight:bold;font-family:courier;"br>bash /home/murraya congratulations message, and proceed to the next step.saul/scripts/week6-check-1</spanbr><br><brb>NOTE:</lib> We will now learn to transfer files between your <b><liu>local</u> home computer</b>If you encounter errors, make corrections and then re-run the checking script until you receiveyour <brb><u>remote</u> Matrix Linux server</b>a congratulations message, and proceed to the next step.<br><br><b/li>NOTE:</bol> We will now learn [[Image:cmd.png|thumb|right|350px|You are required to transfer files between your <bu>(local) home computer'''remain'''</bu> and in your '''local''' computer's command terminal for the remainder of this ''INVESTIGATION'' and ''INVESTIGATION 2'']]<b>(remote) Matrix Linux server</bol>.<br><br></li><lili value="12">'''Exit your Matrix ssh session, ''' but remain in the OS terminal on your '''<u>homeremain</u> computer.''' in the ''command terminal''<br>on your '''local''' computer..<br></libr><lispan style="color:blue;">The '''ATTENTION:''' You are required to <bu>mkdir'''remain'''</bu> in your '''local''' computer's command works with terminal for the remainder of this ''INVESTIGATION'' and ''INVESTIGATION 2''.<i/span>MS Windows/UNIX/Linux/MacOSx computers</ibr>.<br>Issue the following command to create a directory called </li><li>The <b>localmkdir</b> in your current directory: command works with <span style="color:blue;font-family:courier;font-weight:bold;">mkdir locali>MS Windows/UNIX/Linux/MacOSx computers</spani>.<br><brIssue the following command on your <u>local</liu>computer to<libr>The create a directory called <b>cdlocal</b> command works with : <i>MS Windows/UNIX/Linux/MacOSx computers</i>.<br>Issue the following command to change to the local directory: <span style="colorspan style="color:blue;font-family:courier;font-weight:bold;">cd mkdir local</span><br><br></li><li>If you are in MS Windows, open the The <span style="color:blue;font-family:courier;font-weight:bold;"b>NotePadcd</spanb> application to create a text file.command works with <bri>MS Windows/UNIX/Linux/MacOSx computers<br/i>.<bbr>NOTE:Issue the following command on your <u>local</bu> computer to<br> if you are using a Graphical Linux or MacOSx OS, then use a text editor like change to the <b>vilocal</b>directory: <brspan style="color:blue;font-family:courier;font-weight:bold;">.cd local</lispan><libr>Enter a few lines of text, and then click on the <b<br>File</b> menu and select <bli>save as</bli><br>(save as the filename <b>other.txt</b> in If you are using MS Windows on your <b>localcomputer, issue the </b> directory) and then <bspan style="color:blue;font-weight:bold;font-family:courier;">exitdir</bspan> the command to confirm you are<ibr>Notepadin the ''local'' directory; otherwise, use the </i> text editor.<br><br></li><li>If your OS is MS Windows issue the <span style="color:bluespan style="color:blue;font-familyweight:courierbold;font-weightfamily:boldcourier;">dirpwd</span> Windows command to view the contents of your current directory.<br>(otherwise, issue the <bbr>ls</bli> command for other operating systems).<brli><br>The <b>SSH package</b> on your <i>home computer</i> and on If you are in MS Windows, open the '''GRAPHICAL''' <ispan style="color:blue;font-family:courier;font-weight:bold;">Matrix Linux serverNotePad</ispan> contain application to create a text file<bbr>suite<(Otherwise, use the <b>nano</b> (i.e. or <b>collectionvi</b>text editor) of secure utilities .<br>including <bbr>ssh</bli>, <b>scp</bli> Enter a few lines of text, and if using '''Notepad''', then click on the <b>sftpFile</b>.menu and select <br><brb>save as</lib><libr>Issue the following Linux command to copy (save as the filename <bspan style="color:blue;font-weight:bold;font-family:courier;">other.txt</bspan> file from in your <span style="color:blue;font-weight:bold;font-family:courier;">local machine to your remote Matrix server<br/span>(replace yoursenecaid is directory) and then <ub>YOURexit</ub> Seneca ID and ADD A COLON : TO THE END OF THE COMMAND):the <bri>Notepad<span style="color:blue;font-weight:bold;font-family:courier;"/i>scp othertext editor.txt yoursenecaid@matrix.senecacollege.ca:</spanbr><br>'''NOTE:''' if using another text editor, save your editing session and exit the text editor.<br><br></li><li>When prompted, enter If your Matrix '''password'''.OS is MS Windows issue the <br><br><b>TIPspan style="color:</bblue;font-family:courier;font-weight:bold;">dir</span> You can issue Windows command to view the ssh command, followed by a command that will be run on contents of your remote computer,current directory<br>but displayed on your local computer (otherwise, issue the <b><u>withoutspan style="color:blue;font-family:courier;font-weight:bold;">ls</uspan>command for other operating systems).</bbr> having <br>We will use the '''scp''' command to establish a continuous connection to your remote Matrix server.copy the <br><bru>local</liu>file called '''other.txt''' to your home directory on your <liu>Issue the following command (using your matrix username): remote<span style="color:blue;font-weight:bold;font-family:courier;"/u>ssh yoursenecaid@matrixMatrix Linux server.senecacollege.ca ls -l</span><brbr><br></li><li>When prompted, enter your password and press ENTER.Issue the following Linux command to copy the <brb>other.txt<br/b>Do you see detailed information regarding the file called file from your local machine to your remote Matrix server<bbr>output.txt(replace yoursenecaid is </bu>?YOUR<br/u>That command was run remotely on your Matrix server as confirmation that you securely copied that file<br>to the home directory of the Matrix server.Seneca ID and '''ADD A COLON : TO THE END OF THE COMMAND'''):<br><br></li><li>Issue the following command to copy that same file to the ~/remote directory in Matrix:<br><span style="color:blue;font-weightspan style="color:blue;font-weight:bold;font-family:courier;">scp other.txt yoursenecaid@matrix.senecacollege.ca:remote</span><br><br></li><li>Issue the following command to confirm that it was remotely copied to When prompted, enter your ~/remote directory in Matrix:'''password'''.<br><span style="color:blue;font[[Image:scp-diagram-weight:bold;font-family:courier;">2.png|thumb|right|350px|You can issue the ssh yoursenecaid@matrix.senecacollege.ca ls -l /home/yoursenecaid/command, followed by a '''command''' that will be run on your '''remote''' computer,</spanbr>but <u>display<br/u>command output on your '''local''' computer.]]<br>Do you see the output for the detailed file listing of <b>output.txtTIP:</b>?<br>What does this indicate?<br><br><li>Issue You can issue the following ssh command, followed by a command to copy that same file to the ~/will be run on your remote directory in Matrix as a different filename:computer, but display on your local computer <brb><span style="color:blue;font-weight:bold;font-family:courier;"u>without</u></b>scp other.txt yoursenecaid@matrix.senecacollege.ca:having to establish a continuous connection to your remote/differentMatrix server.txt</span><br><br></li><li>Issue the following command to confirm that the file was remotely copied to (using your ~/remote directory in Matrix with a different filenamematrix username):<br><span style="color:blue;font-weight:bold;font-family:courier;">ssh yoursenecaid@matrix.senecacollege.ca ls -l /home/yoursenecaid/remote/differentother.txt</span><br><br>What does this indicate?<br/li><brli>LetWhen prompted, 's issue a checking script remotely to see that you properly copied that file from ''enter yourpassword''' and press '''ENTER'''.<br>local computer to your remote Linux server to both your <bbr>homeDo you see detailed information </b> directory and other.txt</b>~/remotefile? (look at bottom)</bbr> That command was run remotely on your Matrix server as confirmation that you securely copied that file to the home directoryof the Matrix server.<br><br>Let's copy the file called '''myfile.txt''' in the '''~/remote''' directory that you created earlier in your Matrix account to your </li><lib>local</b> directory on your home computer.<br><br></li><li>Issue the following:Linux command (replace yoursenecaid is <bru>YOUR<span style="color:blue;font-weight:bold;font-family:courier;/u> Seneca ID).<br> The period ">bash /home/murray.saul/scripts/week6-check-2" as '''second argument''' represents your <u>current</spanu>directory<br>on your <bru>If you encounter errors, relocal</u> computer):<br><span style="color:blue;font-run the scp commands to correct and reweight:bold;font-run family:courier;">scp yoursenecaid@matrix.senecacollege.ca:remote/myfile.txt .</span><br><br></li><li>Issue the above command until you receive a congratulations message<span style="color:blue;font-weight:bold;font-family:courier;">dir</span> or <span style="color:blue;font-weight:bold;font-family:courier;">ls</span> command (depending on the OS of your <u>local</u> computer) to confirmed your properly copied that file from Matrix.<br><br></li><li>Use the '''Notepad''' application (or vi for other OS types) to create a text file called <span style="color:blue;font-weight:bold;font-family:courier;">mytextfile.txt</span>,<br>type some text and then save in the <span style="color:blue;font-weight:bold;font-family:courier;">local</span> directory of your computer.<br><br><li>Issue the <b>dir</b> or <b>ls</b> command (depending on your OS) to confirm that your newly-created file exists in your <b>local</b> directory.<br><br></li><li>We are going to intentionally make a '''<u>mistake</u>''' with the '''scp''' command.<br>Issue the following Linux command to copy the <b>mytextfile.txt</b> file from your local machine to your remote Matrix server<br>(replace yoursenecaid is <u>YOUR</u> Seneca ID and DO <u>NOT</u> INCLUDE THE : at the end of the command so see what happens):<br><span style="color:blue;font-weight:bold;font-family:courier;">scp mytextfile.txt yoursenecaid@matrix.senecacollege.ca</span><br><br>Did you notice anything different (i.e. no password)?<br><br></li><li>Issue the following command (using your matrix username):<br><span style="color:blue;font-weight:bold;font-family:courier;">ssh yoursenecaid@matrix.senecacollege.ca ls -l mytextfile.txt</span><br><br></li><li>When prompted, enter your password and press ENTER.<br><br><b>The file mytextfile.txt does NOT appear in your home directory on your Matrix server!<br>Note that the COLON was NOT added to the end of the command! Therefore, you MUST<br>remember to include the COLON : at the end of the hostname, or it will NOT remotely copy the file!</b><br><br></li><li>Issue the following command to properly copy that same file to your Matrix server:<br><span style="color:blue;font-weight:bold;font-family:courier;">scp mytextfile.txt yoursenecaid@matrix.senecacollege.ca:</span><br><br></li><li>Issue the following command to confirm that it was remotely copied to your <b>home</b> directory in Matrix:<br><span style="color:blue;font-weight:bold;font-family:courier;">ssh yoursenecaid@matrix.senecacollege.ca ls -l /home/yoursenecaid/mytextfile.txt</span><br><br>Do you see the output for the detailed file listing of <b>mytextfile.txt</b>?<br>What does this indicate?<br><br><li>Issue the following command to copy the '''other.txt''' file on your local computer to the '''~/remote''' directory in Matrix renaming it as '''different.txt''':<br><span style="color:blue;font-weight:bold;font-family:courier;">scp other.txt yoursenecaid@matrix.senecacollege.ca:remote/different.txt</span><br><br></li><li>Issue the following command to confirm that the file was remotely copied to your '''~/remote''' directory in Matrix with a different filename:<br><span style="color:blue;font-weight:bold;font-family:courier;">ssh yoursenecaid@matrix.senecacollege.ca ls -l /home/yoursenecaid/remote/different.txt</span><br><br>Were you able to properly copy this file?<br><br>Let's issue a checking script remotely to see that you properly copied that file from your<br>local computer to your remote Linux server to both your <b>home</b> directory and <b>~/remote</b> directory.<br><br></li><li>Issue the following:<br><span style="color:blue;font-weight:bold;font-family:courier;">ssh yoursenecaid@matrix.senecacollege.ca ~uli101/week6-check-2</span><br><br>If you encounter errors, re-run the scp commands to correct and re-run the above command until you receive a congratulations message.<br><br></li><li>Remain in the terminal on your <u>local</u> computer and proceed to ''INVESTIGATION 2''.<br><br></li></ol> :'''NOTE:''' It would be possible to use the '''scp''' command to copy files from the Matrix server to your Windows computer,<br>but this would require obtaining your computer's IP address and your Windows username, so we will not demonstrate this in our tutorial.
 :In the next investigation, you will use the '''sftp''' Linux command to transfer (i.e. copy) files between serversyour local computer and the Matrix server.<br><br>
<!-- RESIDUAL FROM LESS EFFECTIVE METHOD OF COPYING FILES BETWEEN SERVERS
# '''Save''' editing changes to this startup file and exit your text editor.<br><br> -->
=INVESTIGATION 2: USING FILE TRANSFER (SECURE FTP ) =
In this section, you will learn how to use the The '''SSH'''package on your ''sftphome computer''and on the ' command to transfer files between Unix/'Matrix Linux servers andserver''<br>perform some basic directory navigation/management operationscontain a '''suite''' (i.e. collection)of secure utilities including '''ssh''' and '''sftp'''.
In this investigation, you will learn how to use the '''sftp''' command to '''transfer''' files between<br>Unix/Linux servers. This methods is useful because it can be performed in the<br>''MS-Windows'', ''MacOSx'', and ''Unix/Linux'' operating systems.<br><br>You will also learn how to issue the '''ssh''' command to run commands on your<br><u>'''remote'''</u> Matrix server while remaining on your <u>'''local'''</u> computer.
'''Perform the Following Steps:''' # Make certain that you are in your terminal that you opened on your local computer === Command Line Terminal (i.e. NOT in your Matrix accountCLI).<br><br># Make certain that you are located in the '''local''' directory in your home computer.<br><br># If you are in MS Windows, open the <span style="color:blue;font-family:courier;font-weight:bold;">NotePad</span> application to create a text file.<br><br><b>NOTE:</b> if you are using a Graphical Linux or MacOSx OS, then use a text editor like <b>vi</b><br>.# Enter a few lines of text, and then click on the <b>File</b> menu and select <b>save as</b><br>(save as the filename <b>thefile.txt</b> in your <b>local</b> directory) and then <b>exit</b> the <i>Notepad</i> text editor.<br><br># If your OS is MS Windows issue the <span style="color:blue;font-family:courier;font-weight:bold;">dir</span> Windows command to view the contents of your current directory<br>(otherwise, issue the <b>ls</b> command for other operating systems).<br><br># Issue the following Linux command to start an sftp session (note: yoursenecaid is YOUR Seneca ID):<br><span style="color:blue;font-weight:bold;font-family:courier;">sftp yoursenecaid@matrix.senecacollege.ca</span><br><br>'''NOTE:''' You may be required to enter '''yes''' to have the public key shared.<br><br>You are now in the '''sftp command prompt''' where you are expected to issue '''sftp commands'''.<br><br>Please refer to the table of ''sftp commands'' on the right-side.<br><br>   
Let's look at using the '''sftp''' command on your '''local''' machine.
'''Perform the Following Steps:'''
[[Image:cmd.png|thumb|right|275px|Make certain to <u>remain</u> in the<br>command-line terminal in your '''local''' computer.]]
# Make certain that you are in a command terminal on your <u>local</u> computer<br>(i.e. do '''NOT''' log into your Matrix account).<br><br>
# Issue a command (depending on your OS) to confirm that you are located in the '''local''' directory in your home computer.<br><br>
# If you are in MS Windows, open the <span style="color:blue;font-family:courier;font-weight:bold;">NotePad</span> application to create a text file<br>(otherwise: use another text editor like <b>vi</b> or <b>nano)</b><br>.
# Enter a few lines of text, and then click on the <b>File</b> menu and select <b>save as</b><br>(save as the filename <span style="color:blue;font-weight:bold;font-family:courier;">thefile.txt</span> in your <span style="color:blue;font-weight:bold;font-family:courier;">local</span> directory) and then <b>exit</b> the <i>Notepad</i> text editor.<br><br>If you using another OS, then save-as using the same filename and directory location for the text editor you are using.<br><br>
# If your OS is MS Windows issue the <span style="color:blue;font-family:courier;font-weight:bold;">dir</span> Windows command to view the contents of your current directory<br>(otherwise, issue the <b>ls</b> command for other operating systems).<br><br>'''Note:''' the <u>relative</u> pathname symbols "'''.'''" and "'''..'''" work for the ''Windows''/''MacOSx''/''Unix''/''Linux'' operating systems.<br><br>
# Issue the following command to move to the '''parent''' directory: <span style="color:blue;font-family:courier;font-weight:bold;">cd ..</span><br><br>
# If your OS is MS Windows issue the <span style="color:blue;font-family:courier;font-weight:bold;">dir</span> Windows command to view the contents of that parent directory that you changed to<br>(otherwise, issue the <b>ls</b> command for other operating systems).<br><br>
# Issue the following command to start an '''sftp''' session (note: yoursenecaid is YOUR Seneca ID):<br><span style="color:blue;font-weight:bold;font-family:courier;">sftp yoursenecaid@matrix.senecacollege.ca</span><br><br>'''NOTE:''' You may be required to enter '''yes''' to have the public key shared.<br><br>[[Image:sftp-commands.png|thumb|right|350px|Common '''sftp''' commands to manage the transfer<br>of files between computers.]]
# You should be in the '''sftp command prompt''' where you are expected to issue '''sftp commands'''. Please take a moment to view common<br><u>local</u> and <u>remote</u> ''sftp commands'' on the right-side table.<br><br>
# Issue the following ''sftp command'': <span style="color:blue;font-weight:bold;font-family:courier;">pwd</span><br><br>What is the pathname? Which server does this represent: local or remote?<br><br>
# Issue the following ''sftp command'': <span style="color:blue;font-weight:bold;font-family:courier;">lpwd</span><br><br>What is the pathname? Which server does this represent: local or remote?<br><br>
# Issue the following ''sftp command'' to create a directory on your remote server: <span style="color:blue;font-weight:bold;font-family:courier;">mkdir remote2</span><br><br>
# Issue the following ''sftp command'' to confirm that the '''remote2''' directory has been created<br>in your remote server's home directory:<br><span style="color:blue;font-weight:bold;font-family:courier;">ls</span><br><br>
# Issue the following ''sftp command'' to change to the '''remote2''' directory on your ''remote'' server:<br><span style="color:blue;font-weight:bold;font-family:courier;">cd remote2</span><br><br>
# Issue the '''pwd''' ''sftp command'' to confirm that you have changed to the ''remote2'' directory on your remote server.<br><br>
# Issue the following sftp command to change to the '''local''' directory on your local computer:<br><span style="color:blue;font-weight:bold;font-family:courier;">lcd local</span><br><br>
# Issue the '''lpwd''' ''sftp command'' to confirm that you have changed to the ''local'' directory on your local computer.<br><br>
# Issue the following ''sftp command'' to transfer the file called '''thefile.txt''' to the '''~/remote2''' directory on your remote server:<br><span style="color:blue;font-weight:bold;font-family:courier;">put thefile.txt</span><br><br>
# Issue the '''ls''' sftp command to confirmed that you transferred the file called: '''thefile.txt'''<br><br>Let's create another directory on your local computer called '''local2''' so we can learn to <u>download</u> a file from your remote directory.<br><br>
# Issue the following ''sftp command'' to change to the '''parent''' directory on your local computer:<br><span style="color:blue;font-weight:bold;font-family:courier;">lcd ..</span><br><br>
# Issue the '''lpwd''' ''sftp command'' to confirm that your current working directory on your local computer is your home directory.<br><Br>
# Issue the following ''sftp command'' to create the following directory on your local computer:<br><span style="color:blue;font-weight:bold;font-family:courier;">lmkdir local2</span><br><br>
# Issue the following ''sftp command'' to change to the '''local2''' directory on your local computer:<br><span style="color:blue;font-weight:bold;font-family:courier;">lcd local2</span><br><br>
# Issue the '''lpwd''' ''sftp command'' to confirm you have changed to the '''local2''' directory on your local computer.<br><br>Let's learn to <u>download</u> a file from your remote server to your local computer.<br><br>
# Issue the following '''sftp command''' to transfer your '''thefile.txt''' file from the '''remote2''' directory<br>on your remote server to your local computer:<br><span style="color:blue;font-weight:bold;font-family:courier;">get thefile.txt</span><br><br>
# Issue the <span style="font-weight:bold;font-family:courier;">lls</span> ''sftp command'' to confirm that you transferred the file '''thefile.txt''' to your local computer.<br><br>
# Issue the following ''sftp command'' to exit the sftp utlilty: <span style="color:blue;font-weight:bold;font-family:courier;">exit</span><br><br>
# Issue the following Linux command to remotely run a checking script to ensure you created the correct directories<br>and properly transferred those created files: <br><span style="color:blue;font-weight:bold;font-family:courier;">ssh yoursenecaid@matrix.senecacollege.ca ~uli101/week6-check-3</span><br><br>
# If you encounter errors, make corrections and then re-run the checking script until you receive a congratulations message.<br><br>'''FYI:''' To run a checking program to check if you created the '''local''' and '''local2''' directories in MS Windows would require<br>running a local-based script (like '''PowerShell'''). Since this is a Unix/Linux based course, we don't have a PowerShell script,<br>so we will ignore checking for files transferred to your local computer.
<!-- OLDER CONTENT
# '''Save''' editing changes to the text file and exit your text editor.<br><br>
# Change back to your '''home''' directory and confirm that you are located in your ''home'' directory.<br><br>Let's run a '''shell script''' to check to make certain that you created the correct directories<br>and that you created the '''myfile.txt''' file (with correct file contents) in the '''~/local''' directory<br>before learning to use the ''sftp'' Linux command.<br><br>
# Issue the following Linux command to run a checking script:<br><span style="color:blue;font-weight:bold;font-family:courier;">bash /home/murray.saul/scripts~uli101/week6-check-3</span><br><br>
# Issue the following Linux command to start an sftp session (note: yoursenecaid is YOUR Seneca ID):<br><span style="color:blue;font-weight:bold;font-family:courier;">sftp yoursenecaid@matrix.senecacollege.ca</span><br><br>'''NOTE:''' You may be required to enter '''yes''' to have the public key shared.<br><br>You are now in the '''sftp command prompt''' where you are expected to issue '''sftp commands'''.<br>Please refer to the table of ''sftp commands'' in the '''KEY CONCEPTS''' section for reference.<br><br>
# Issue the following ''sftp command'': <span style="color:blue;font-weight:bold;font-family:courier;">pwd</span><br><br>What is the pathname? Which server does this represent: local or remote?<br><br>
# Issue the following ''sftp command'': <span style="color:blue;font-weight:bold;font-family:courier;">!pwdlpwd</span><br><br>What is the pathname? Which server does this represent: local or remote?<br><br>
# Issue the following ''sftp command'' to create a directory on your remote server: <span style="color:blue;font-weight:bold;font-family:courier;">mkdir remote</span><br><br>
# Issue the following ''sftp command'' to confirm that the '''remote''' directory has been created in your remote server's home directory:<br><span style="color:blue;font-weight:bold;font-family:courier;">ls</span><br><br>
# Issue the following ''sftp command'' to change to the '''remote''' directory on your ''remote'' server:<br><span style="color:blue;font-weight:bold;font-family:courier;">cd remote</span><br><br>
# Issue the '''pwd''' ''sftp command'' to confirm that you have changed to the ''remote2'' directory on your remote server.<br><br>
# Issue the following sftp command to change to the '''local''' directory on your local servercomputer:<br><span style="color:blue;font-weight:bold;font-family:courier;">lcd local</span><br><br># Issue the '''pwd''' ''sftp command'' to confirm that you have changed to the ''local'' directory on your local servercomputer.<br><br>
# Issue the following ''sftp command'' to transfer your '''~/local/thefile.txt''' file to the '''~/remote''' directory on your remote server:<br><span style="color:blue;font-weight:bold;font-family:courier;">put thefile.txt</span><br><br>
# Issue the '''ls''' sftp command to confirmed that you transferred/copied the file: '''thefile.txt'''<br><br>Let's create another directory on your local server computer called '''local2''' so we can learn to <u>download</u> a file from your remote directory.<br><br>
# Issue the following ''sftp command'' (without an argument) to change to your '''home''' directory:<br><span style="color:blue;font-weight:bold;font-family:courier;">lcd ~</span><br><br>
# Issue the '''!pwdlpwd''' ''sftp command'' to confirm that your current working directory on your local server computer is your home directory.<br><Br># Issue the following ''sftp command'' to create the following directory on your local servercomputer:<br><span style="color:blue;font-weight:bold;font-family:courier;">!mkdir lmkdir local2</span><br><br># Issue the following ''sftp command'' to change to the '''local2''' directory on your local servercomputer:<br><span style="color:blue;font-weight:bold;font-family:courier;">lcd local2</span><br><br># Issue the '''!pwdlpwd''' ''sftp command'' to confirm you have changed to the ''local2'' directory on your local servercomputer.<br><br>Let's learn to <u>download</u> a file from your remote server to your local servercomputer.<br><br># Issue the following '''sftp command''' to transfer your '''thefile.txt''' file from your remote directory on your local servercomputer:<br><span style="color:blue;font-weight:bold;font-family:courier;">get thefile.txt</span><br><br># Issue the '''!lslls''' '''sftp command''' to confirm that you transferred/copied the file: thefile.txt on your local servercomputer.<br><br>
# Issue the following ''sftp command'' to exit the sftp utlilty: <span style="color:blue;font-weight:bold;font-family:courier;">exit</span><br><br>
# Issue the '''ssh''' command to login to your Matrix server account.<br><br># Issue the following Linux command to confirm run a checking script to ensure you created the CORRECT directories, created and copied the correct files: <br><span style="color:blue;font-weight:bold;font-family:courier;">ssh yoursenecaid@matrix.senecacollege.ca ~uli101/week6-check-3</span><br><br># If you encounter errors, make corrections and then re-run the checking script until you receive a congratulations message.<br><br>   :Although it is important to learn how to use '''command-line sftp''' which is considered coverage for quizzes, midterm and final exam, there are '''graphical sftp applications''' available that are considered "user-friendly". The next investigation will show you how to transfer files between your local computer and your Matrix server graphically (assuming your local computer is running MS Windows).<br> === Graphical Application (Secure Shell) ===[[Image:graphical-sftp-application.png|thumb|right|200px|'''SSH Secure Shell Client''' has a graphical application to transfer files between computers.]]If you are back installed the graphical Secure Shell application in [https://wiki.cdot.senecacollege.ca/wiki/Tutorial_1:_Using_Your_Matrix_Server_Account#CONNECTING_TO_YOUR_MATRIX_ACCOUNT_FROM_A_GRAPHICAL_WINDOWS_APPLICATION TUTORIAL 1 INVESTIGATION 1], <br>you can run a '''graphical''' application from your computer desktop to transfer files between<br>your computer and your Matrix account.  Let's run the '''Secure Shell SFTP application''' to transfer files between computers.<br>This investigation assumes that your computer is a '''Windows''' machine. If you local computer<br>is '''NOT''' a ''Windows'' machine, you can <u>skip</u> this investigation.  '''Perform the Following Steps:''' # On your original serverlocal computer, open the <span style="color:blue;font-family:courier;font-weight:bold;">NotePad</span> application to create a text file.<br><br># Enter a few lines of text, and then click on the <b>File</b> menu and select <b>save as</b><br>(save as the filename <span style="color:blue;font-weight:bold;font-family: courier;">yourfile.txt</span> in your <span style="color:blue;font-weight:bold;font-family:courier;">hostnamelocal</span>directory)<br>and then <b>exit</b> the <i>Notepad</i> text editor.<br>Let<br><table align="right"><tr valign="top"><td>[[Image:graphical-sftp-icon.png|thumb|right|110px|Double Click on SFTP to launch graphical application.]]</td><td>[[Image:sftp-connect.png|thumb|right|200px|Using Quick Connect to login to your Matrix Linux server.]]</td></table># In your local computer's run a shell script command terminal, make certain that you are in the '''local''' directory, and if not, change to that directory.<br><br># Issue the <span style="color:blue;font-weight:bold;font-family:courier;">dir</span> command for the '''local''' directory to confirm that you created the file called '''yourfile.txt'''<br><br># On your Windows desktop, point and '''double-click''' on the<br>'''SSH Secure file Transfer''' application icon.<br><br># The main Secure Shell SFTP application window should appear.<br><br>'''FYI:''' This application shows files on your home computer (on the left-side) and files on your remote Matrix computer on the right-side. You will NOT see if files<br>for your Matrix server since you have NOT logged into the Matrix server.<br><br># Click the '''Quick Connect''' button located in the Secure SFTP application window.<br><br>'''NOTE:''' The Connect dialog box allows the user to specify the '''server name'''<br>and your '''account name''' to allow you to connect to the server.<br><br># Click on the textbox labelled '''Hostname''' and type the text: <span style="color:blue;font-weight:bold">matrix.senecacollege.ca</span><br><br># Click on the textbox labelled '''User Name''' and type your Seneca username<br>(i.e. same as your Seneca userid).<br><br> # After entering the ''hostname'' and ''username'', click the '''Connect''' button.<br><br># Enter your Seneca password when prompted.<br><br># When you correctly connect to your Matrix account, you should see '''folders'''<br>in your remote server (i.e. Matrix server).<br><br>[[Image:graphical-sftp-application.png|thumb|right|250px|'''Click''' and '''drag''' file(s) to transfer between computers.]]# There are two sub-windows to represent your local computer on the <u>left</u><br>and the remote (Matrix) server on the <u>right</u>.<br><br># In the <u>left</u> (local computer) window, point and '''double-click''' on your Windows<br>profile name (i.e. ''username'') and then locate and '''double-click''' on the '''local''' directory.<br><br># In the <u>right</u> (remote Matrix server) window, navigate to the '''remote2''' directory<br>and '''double-click''' to move to that directory.<br><br># In the left window, click and drag the '''yourfile.txt''' file to the <u>right</u> window.<br><br># Check to see that the '''yourfile.txt''' file appears in the <u>right</u> window to confirm<br>that the file has been transferred/copied to your Matrix server.<br><br>'''NOTE:''' You can select multiple files by using ''SHIFT-CLICK'' or ''CTRL-CLICK'' methods<br>and then click and drag file selections between your computers.<br><br># Take a few moments to noter other buttons for both local and remote serverswindows to<br>'''refresh the view''', '''delete file(s)''', '''navigate up to parent directory''', etc.<br><br># Click the '''File''' menu, and select '''Disconnect''' and then click '''OK''' to disconnect your sftp connection.<br><br># Make certain Now that you have disconnected, '''close''' the sftp application window.<br><br># Return to your current directory is command terminal on your home directory<u>local</u> computer (do '''NOT''' connect to Matrix!).<br><br># Issue the following Linux command to run a checking script to ensure confirm that you created transferred<br>the CORRECT directories, most recently-created and copied textfile to the correct files'''remote2''' directory in Matrix: <br><span style="color:blue;font-weight:bold;font-family:courier;">bash /home/murrayssh yoursenecaid@matrix.senecacollege.saul/scriptsca ~uli101/week6-check-4</span><br><br># When prompted, enter your password.<br><br>
# If you encounter errors, make corrections and then re-run the checking script until you receive a congratulations message.<br><br>
-->
:In the next investigation, you will learn an alternative way to transfer a file to another computer server <br>by sending an '''e-mail message with an attached file'''.
=INVESTIGATION 3: USING THE MAIL COMMAND TO SEND FILE ATTACHMENTS TRANSFER (EMAIL) =
Your The '''Matrix''' server is also an '''email server''' that can allow you to '''send''' and '''receive''' text-based emails messages to other email messagesaccounts.
 In this sectioninvestigation, you will learn how to '''transfer ''' a file from your Matrix server to another computer system by sending <br>an '''email message ''' with a '''file attachment'''.
'''Perform the Following Steps:'''
# Make certain that you are logged into connect and login to your '''Matrix''' account server and confirm that you are located in your '''home''' directory.<br><br># Issue the following Linux command(using your Seneca-ID):<br><span style="color:blue;font-weight:bold;font-family:courier;">mail yoursenecaid@myseneca.ca</span><br><br>
# When prompted, enter the '''subject line''': <span style="color:blue;font-weight:bold;font-family:courier;">Test Message</span><br>and press <span style="color:blue;font-weight:bold;font-family:courier;">ENTER</SPAN><br><br>
# In the email message '''BODY''' section, type the following text displayed below(and press '''ENTER'''):<br><span style="font-weight:bold;font-family:courier;">This is a test email message</span><br><br># Press <span style="color:blue;font-weight:bold;font-family:courier;">ctrl-d</span> to send your email message.<br><br>Did any output display after you sent this email message? If so, what What you do think it '''EOT''' stands for?<br><br># Launch a '''web-browser''', login into your '''Seneca email ''' account and check for new email messages.<br>Did you receive the email message that you sent from your Matrix server?<br><br>If you did NOT receive an e-mail message, check the '''JUNK''' or '''CLUTTER''' folders.<br>If you still did not receive an email message, return to your terminal and re-issue the '''mail''' command<br>making certain that you pressed <span style="color:blue;font-weight:bold;font-family:courier;">ctrl-d</span> instead of pressing '''ctrl-c'''<br><br># Return to your terminal (i.e. Linux Bash shell ) and issue the following Linux command:<br><span style="color:blue;font-weight:bold;font-family:courier;">mail -a ~/localremote/thefilemyfile.txt yoursenecaid@myseneca.ca</span><br><br>
# When prompted, enter the subject line: <span style="color:blue;font-weight:bold;font-family:courier;">Test Message with Attachment</span><br> and press <span style="color:blue;font-weight:bold;font-family:courier;">ENTER</span><br><br>
# In the email message '''BODY''' section, type the following text displayed below(and press '''ENTER'''):<br><span style="font-weight:bold;font-family:courier;">This is a test email message with a file attachment</span><br><br>
# Press <span style="color:blue;font-weight:bold;font-family:courier;">ctrl-d</span> to send your message.<br><br>
# Switch to your Seneca email and check your Seneca for new email for messages. Did you receive that email message?<br><br># Check your email to see if Did you received your receive that email message. If you did, what do you notice? Does the email contain a file attachment?<br><br># Return to your Linux Bash shell and issue the following Linux command:<br><span style="color:blue;font-weight:bold;font-family:courier;">mail yoursenecaid@myseneca.ca &lt; ~/localremote/thefilemyfile.txt</span><br><br>What happened? Were you prompted for subject and could you enter text in email body?<br>Did you see a file attachment as a separate file, or just text?<br><br># Check your email to see if you received your email message. If you did, what do you noticeregarding the subject line?<br><br>You should have noticed that there was '''NO''' customized '''subject line''', <br>since you redirected '''standard input''' (''stdin '') from the file,so there was no way<br>thus there was no ability for the user to send a subject line.<br><br>You can use the '''-s''' option, followed by text (in quotes) to specify a '''subject line'''.<br><br># Return to your Linux Bash shell and issue the following Linux command:<br><span style="color:blue;font-weight:bold;font-family:courier;">mail -s "email with attachment" yoursenecaid@myseneca.ca &lt; ~/localremote/thefilemyfile.txt</span><br><br>
# Check your email to see if you received your email message. If you did, what do you notice this time?<br><br>
# After completing this INVESTIGATION, perform the LINUX PRACTICE QUESTIONS at the end of the tutorial.<br><br>
simulate a quiz:
https://ictwiki.cdot.senecacollege.ca/~murray.saululi101/uli101files/uli101_week6_practice.docx
Your instructor may take-up these questions during class. It is up to the student to attend classes in order to obtain the answers to the following questions. Your instructor will NOT provide these answers in any other form (eg. e-mail, etc).
# Write a Linux command to send the attached file '''message.txt''' to the email address '''murray.saul@senecacollege.ca''' with the subject line: '''Important Message'''
# Create a '''table''' listing each Linux command, useful options and command purpose for the following Linux commands: '''scp''' , '''sftp''' , '''mail'''.
# Create a '''table''' listing each '''sftp command'''and it's purpose.  _________________________________________________________________________________ Author: Murray Saul License: LGPL version 3Link: https://www.gnu.org/licenses/lgpl.html _________________________________________________________________________________ 
[[Category:ULI101]]