Difference between revisions of "Tutorial6: File Transfer / Sending Email Messages"

From CDOT Wiki
Jump to: navigation, search
(INVESTIGATION 1: USING SECURE COPY)
(INVESTIGATION 2: USING SECURE FILE TRANSMISSION CONTROL PROTOCOL)
Line 154: Line 154:
 
:In the next investigation, you will use the '''sftp''' Linux command to transfer (i.e. copy) files between servers.<br><br>
 
:In the next investigation, you will use the '''sftp''' Linux command to transfer (i.e. copy) files between servers.<br><br>
  
=INVESTIGATION 2: USING SECURE FILE TRANSMISSION CONTROL PROTOCOL =
+
=INVESTIGATION 2: USING SECURE FTP =
  
 
In this section, you will learn how to use the '''sftp''' command to transfer files between Unix/Linux servers and perform some basic directory navigation/management operations.
 
In this section, you will learn how to use the '''sftp''' command to transfer files between Unix/Linux servers and perform some basic directory navigation/management operations.
  
  
<span style="color:blue;">'''NOTE:''' Since the only server account you have is your '''Matrix''' server, we will simulate using the sftp command to transfer/copy from your '''Matrix''' server to '''<u>another instance</u> of your Matrix server'''. You are NOT required to edit your ''.bashrc'' file to make this work since you already performed that operation in the previous investigation.</span>
+
<span style="color:blue;">'''NOTE:''' Since the only server account you have is your '''Matrix''' server, we will simulate using the '''sftp''' command to transfer/copy from your '''Matrix''' server to '''<u>another instance</u> of your Matrix server'''. You are NOT required to edit your ''.bashrc'' file to make this work since you already performed that operation in the previous investigation.</span>
  
  
Line 169: Line 169:
 
# Use a text editor to create a text file called '''thefile.txt'''<br><br>
 
# Use a text editor to create a text file called '''thefile.txt'''<br><br>
 
# Enter the following two lines displayed below for this text file:<br><span style="font-family:courier;font-weight:bold;">This is my file called thefile.txt<br>It is also a small file</span><br><br>
 
# Enter the following two lines displayed below for this text file:<br><span style="font-family:courier;font-weight:bold;">This is my file called thefile.txt<br>It is also a small file</span><br><br>
# '''Save''' editing changes to the text files and exit your text editor.<br><br>
+
# '''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>
 
# 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/week6-check-3</span><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/week6-check-3</span><br><br>
Line 177: Line 177:
 
# 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 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 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 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 '''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 server:<br><span style="color:blue;font-weight:bold;font-family:courier;">lcd local</span><br><br>
 
# Issue the following sftp command to change to the '''local''' directory on your local server:<br><span style="color:blue;font-weight:bold;font-family:courier;">lcd local</span><br><br>
Line 187: Line 187:
 
# Issue the following ''sftp command'' to create the following directory on your local server:<br><span style="color:blue;font-weight:bold;font-family:courier;">!mkdir local2</span><br><br>
 
# Issue the following ''sftp command'' to create the following directory on your local server:<br><span style="color:blue;font-weight:bold;font-family:courier;">!mkdir local2</span><br><br>
 
# Issue the following ''sftp command'' to change to the '''local2''' directory on your local server:<br><span style="color:blue;font-weight:bold;font-family:courier;">lcd local2</span><br><br>
 
# Issue the following ''sftp command'' to change to the '''local2''' directory on your local server:<br><span style="color:blue;font-weight:bold;font-family:courier;">lcd local2</span><br><br>
# Issue the '''!pwd''' ''sftp command'' to confirm you have changed to the ''local2'' directory on your local server.<br><br>Let's learn to download a file from your remote server to your local server.<br><br>
+
# Issue the '''!pwd''' ''sftp command'' to confirm you have changed to the ''local2'' directory on your local server.<br><br>Let's learn to <u>download</u> a file from your remote server to your local server.<br><br>
 
# Issue the following '''sftp command''' to transfer your '''thefile.txt''' file from your remote directory on your local server:<br><span style="color:blue;font-weight:bold;font-family:courier;">get thefile.txt</span><br><br>
 
# Issue the following '''sftp command''' to transfer your '''thefile.txt''' file from your remote directory on your local server:<br><span style="color:blue;font-weight:bold;font-family:courier;">get thefile.txt</span><br><br>
 
# Issue the '''!ls''' '''sftp command''' to confirm that you transferred/copied the file: thefile.txt on your local server.<br><br>
 
# Issue the '''!ls''' '''sftp command''' to confirm that you transferred/copied the file: thefile.txt on your local server.<br><br>

Revision as of 09:51, 1 September 2020

TRANSFERRING FILES / USING THE MAIL COMMAND


Main Objectives of this Practice Tutorial

  • List common utilities combined with the ssh application framework
  • Securely copy files between Unix/Linux servers using the scp command
  • Securely transfer copies of files between Unix/Linux servers using the sftp command
  • Use the mail command to send email messages to your Seneca email account
  • Use the mail command to send email with file attachments to your Seneca email account


Tutorial Reference Material

Course Notes
Definitions / Commands
YouTube Videos
Course Notes: Definitions: File Transfer Commands: Instructional Videos:

KEY CONCEPTS

The ssh Linux command is a suite of tools to allow the user to issue commands
securely between Unix / Linux servers, as well as 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
to other computers using Linux commands including scp, sftp and mail.

Secure Copy (scp)

The scp Unix/Linux command is used to securely copy files between Unix/Linux servers.

Secure copy protocol (scp) is a means of securely transferring computer files between a local host and a remote host or between two remote hosts. It is based on the Secure Shell (SSH) protocol. "SCP" commonly refers to both the Secure Copy Protocol and the program itself.

Reference: https://en.wikipedia.org/wiki/Secure_copy


The usage for the scp command is similar to the cp command with the addition of host names, for example:

scp local.file username@host:destination-pathname

scp local.file username@host:

scp local.file host:


The most common mistake that students make is forgetting to add
the colon character ":" after the remote hostname.

The user name in the command can be omitted if it's the same as on the local host.

Multiple file and recursive directory copy (i.e. option -R) is supported.

Secure File Transmission Control Protocol (sftp)

The sftp Unix/Linux command is used to securely transfer (copy) files between Unix/Linux servers.

sftp 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.org/linux/man-pages/man1/sftp.1.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 is displayed below:

sftp username@hostname

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 basic sftp commands to perform file transfer and management commands. Some of those commands loosely resemble Unix/Linux commands.


Operationsftp Command
(Local Server)
sftp Command
(Remote Server)
Display current working directory!pwdpwd
Display directory contents!lsls
Create Directory!mkdirmkdir
Change directory locationlcdcd
Upload file to remote serverput-
Download file to local serverget-



Sending Emails with File Attachment (mail)

The mail command allows users to send and receive email messages. (Image licensed under cc)

mail is a command-line email client for Unix and Unix-like operating systems.

Reference: https://en.wikipedia.org/wiki/Mail_(Unix)


Sending a Simple Email Message:

  1. Type: mail username@hostname and press ENTER
  2. Enter subject line and press ENTER
  3. Type the body of the message and then when finished, press ctrl+d to send message

Sending an Email Message with Attachment:

  1. Type: mail username@hostname -a filepathname and press ENTER
  2. Enter subject line and press ENTER
  3. Type the body of the message and then when finished, press ctrl+d to send message

Alternative Method of Sending an Email Message with Attachment:

  1. Type: mail -s "your subject line" username@hostname < filenamepathname
  2. Press ENTER to send

    NOTE: The advantage of using this method is that you can send an email message
    without being prompted for the subject line or body of text message.

INVESTIGATION 1: USING SECURE COPY


In this section, you will learn how to use the scp command.

ATTENTION: Since the only server account you have is your Matrix server,
we will simulate using the scp command to copy from your Matrix server to
another instance of your Matrix server.

To make this work, we will need to edit a "start-up" file to place a special series of commands.
You will learn more about start-up files later in this course.


Perform the Following Steps:

  1. Login to your matrix account and issue a command to confirm you are located in your home directory.

  2. Issue the following Linux commands to create the following directories:
    mkdir ~/from
    mkdir ~/destination


  3. Change to the ~/from directory.

  4. Use a text editor to create a text file called myfile.txt

  5. Enter the following two lines displayed below in your editing session:
    This is my file
    It is a small file


  6. Save editing changes to your myfile.txt file and exit your text editor.

  7. Change back to your home directory and confirm that you are located in your home directory.

    Let's run a shell script to check that you created the correct directories
    and that you created the myfile.txt file (with correct file contents) in the ~/from directory
    before using the scp Linux command.

  8. Issue the following Linux command to run that checking script:
    bash /home/murray.saul/scripts/week6-check-1

  9. If you encounter errors, make corrections and then re-run the checking script until you receive
    a congratulations message, and proceed to the next step.

    NOTE: As previously mentioned, we will simulate using the scp command on another instance of our Matrix server.
    To make this work, we will need to edit a start-up file to place a special series of commands

  10. Use a text editor to edit the following start-up file: ~/.bashrc

  11. Copy and paste the following text (shown below) at the TOP of your startup file:
    [[ $- == *i* ]] || return

  12. Save editing changes to this startup file and exit your text editor.

  13. Issue the following Linux command to confirm that the ~/destination directory is empty:
    ls ~/destination

  14. Issue the following Linux command to copy the myfile.txt from your local server to your remote server (i.e. yoursenecaid is YOUR Seneca ID):
    scp myfile.txt yoursenecaid@matrix.senecacollege.ca:destination

    NOTE: You may be required to enter yes to have the public key shared.

  15. When prompted, enter your Matrix password.

  16. Issue the same Linux command that you issued in step #13.

    What do you notice?

  17. Issue the following Linux command:
    scp myfile.txt yoursenecaid@matrix.senecacollege.ca:

    Where do you think this file was copied to on your remote server?

  18. Issue the ls command for the home directory.

    What do you see?
    What does this tell you about how the previously-issued command works with just a colon?

  19. Issue the following Linux command (leaving-out the colon character at the end):
    scp myfile.txt yoursenecaid@matrix.senecacollege.ca

    What happened? (hint: look for a file named: yoursenecaid@matrix.senecacollege.ca).

  20. Make certain that your current directory is your home directory.

  21. Issue the following Linux command to run a checking script to ensure you created the CORRECT directories, created and copied the correct files:
    bash /home/murray.saul/scripts/week6-check-2

  22. If you encounter errors, make corrections and then re-run the checking script until you receive a congratulations message.

In the next investigation, you will use the sftp Linux command to transfer (i.e. copy) files between servers.

INVESTIGATION 2: USING SECURE FTP

In this section, you will learn how to use the sftp command to transfer files between Unix/Linux servers and perform some basic directory navigation/management operations.


NOTE: Since the only server account you have is your Matrix server, we will simulate using the sftp command to transfer/copy from your Matrix server to another instance of your Matrix server. You are NOT required to edit your .bashrc file to make this work since you already performed that operation in the previous investigation.


Perform the Following Steps:

  1. Make certain that you are logged into your Matrix account and are located in your home directory.

  2. Issue the following Linux commands to create the following directories:
    mkdir ~/local

  3. Change to the ~/local directory.

  4. Use a text editor to create a text file called thefile.txt

  5. Enter the following two lines displayed below for this text file:
    This is my file called thefile.txt
    It is also a small file


  6. Save editing changes to the text file and exit your text editor.

  7. Change back to your home directory and confirm that you are located in your home directory.

    Let's run a shell script to check to make certain that you created the correct directories
    and that you created the myfile.txt file (with correct file contents) in the ~/local directory
    before learning to use the sftp Linux command.

  8. Issue the following Linux command to run a checking script:
    bash /home/murray.saul/scripts/week6-check-3

  9. Issue the following Linux command to start an sftp session (note: yoursenecaid is YOUR Seneca ID):
    sftp yoursenecaid@matrix.senecacollege.ca

    NOTE: You may be required to enter yes to have the public key shared.

    You are now in the sftp command prompt where you are expected to issue sftp commands.
    Please refer to the table of sftp commands in the KEY CONCEPTS section for reference.

  10. Issue the following sftp command: pwd

    What is the pathname? Which server does this represent: local or remote?

  11. Issue the following sftp command: !pwd

    What is the pathname? Which server does this represent: local or remote?

  12. Issue the following sftp command to create a directory on your remote server: mkdir remote

  13. Issue the following sftp command to confirm that the remote directory has been created in your remote server's home directory:
    ls

  14. Issue the following sftp command to change to the remote directory on your remote server:
    cd remote

  15. Issue the pwd sftp command to confirm that you have changed to the remote2 directory on your remote server.

  16. Issue the following sftp command to change to the local directory on your local server:
    lcd local

  17. Issue the pwd sftp command to confirm that you have changed to the local directory on your local server.

  18. Issue the following sftp command to transfer your ~/local/thefile.txt file to the ~/remote directory on your remote server:
    put thefile.txt

  19. Issue the ls sftp command to confirmed that you transferred/copied the file: thefile.txt

    Let's create another directory on your local server called local2 so we can learn to download a file from your remote directory.

  20. Issue the following sftp command (without an argument) to change to your home directory:
    lcd ~

  21. Issue the !pwd sftp command to confirm that your current working directory on your local server is your home directory.

  22. Issue the following sftp command to create the following directory on your local server:
    !mkdir local2

  23. Issue the following sftp command to change to the local2 directory on your local server:
    lcd local2

  24. Issue the !pwd sftp command to confirm you have changed to the local2 directory on your local server.

    Let's learn to download a file from your remote server to your local server.

  25. Issue the following sftp command to transfer your thefile.txt file from your remote directory on your local server:
    get thefile.txt

  26. Issue the !ls sftp command to confirm that you transferred/copied the file: thefile.txt on your local server.

  27. Issue the following sftp command to exit the sftp utlilty: exit

  28. Issue the following Linux command to confirm that you are back in your original server: hostname

    Let's run a shell script to see if you correctly transferred/copied files between your local and remote servers.

  29. Make certain that your current directory is your home directory.

  30. Issue the following Linux command to run a checking script to ensure you created the CORRECT directories, created and copied the correct files:
    bash /home/murray.saul/scripts/week6-check-4

  31. If you encounter errors, make corrections and then re-run the checking script until you receive a congratulations message.

In the next investigation, you will learn an alternative way to transfer a file to another computer server by sending an e-mail message with an attached file.

INVESTIGATION 3: USING THE MAIL COMMAND TO SEND FILE ATTACHMENTS

Your Matrix server is also an email server that can allow you to send and receive text-based email messages.


In this section, you will learn how to transfer a file from your Matrix server to another computer system by sending an email message with a file attachment.


Perform the Following Steps:

  1. Make certain that you are logged into your Matrix account and are located in your home directory.

  2. Issue the following Linux command:
    mail yoursenecaid@myseneca.ca

  3. When prompted, enter the subject line: Test Message
    and press ENTER

  4. In the email message BODY section, type the following text displayed below:
    This is a test email message

  5. Press ctrl-d to send your email message.

    Did any output display after you sent this email message? If so, what you do think it stands for?

  6. Launch a web-browser, login into your Seneca email and check for new email messages.
    Did you receive the email message that you sent from your Matrix server?

    If you did NOT receive an e-mail message, check the JUNK or CLUTTER folders.

  7. Return to your shell and issue the following Linux command:
    mail -a ~/local/thefile.txt yoursenecaid@myseneca.ca

  8. When prompted, enter the subject line: Test Message with Attachment
    and press ENTER

  9. In the email message BODY section, type the following text displayed below:
    This is a test email message with a file attachment

  10. Press ctrl-d to send your message.

  11. Switch to your email and check your Seneca email for messages. Did you receive that email message?

  12. Check your email to see if you received your email message. If you did, what do you notice?

  13. Return to your shell and issue the following Linux command:
    mail -s "email with attachment" yoursenecaid@myseneca.ca < ~/local/thefile.txt

    What happened?

  14. Check your email to see if you received your email message. If you did, what do you notice?

  15. After completing this INVESTIGATION, perform the LINUX PRACTICE QUESTIONS at the end of the tutorial.

LINUX PRACTICE QUESTIONS

The purpose of this section is to obtain extra practice to help with quizzes, your midterm, and your final exam.

Here is a link to the MS Word Document of ALL of the questions displayed below but with extra room to answer on the document to simulate a quiz:

https://ict.senecacollege.ca/~murray.saul/uli101/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).


Review Questions:

  1. Write a Linux command to copy a file in the current directory called mytext.txt from your Matrix account to your account called user1 on the Linux server domain name called tech.myserver.com to that user’s home directory.
  2. Write a Linux command similar to the previous question, but rename the file on the remote Linux server to yourtext.txt
  3. Write a Linux command to copy a file called ~/project/linux.txt to the remote server called linux.techie.org
    (your username for this remote server is the same username for your local server).
  4. Write a Linux command to connect to the username saulm for the server domain name tux.senecac.on.ca to transfer files between Linux servers.
  5. Assuming that you are connected to that server in question #4. What is the sftp command to display your current working directory on your local server?
  6. Assuming that you are connected to that server in question #4. What is the sftp command to view files in your local server?
    What is the sftp command to view files in your remote server?
  7. Assuming that you are connected to that server in question #4. What is the sftp command to download the file answers.txt from the current directory of your remote server?
  8. Assuming that you are connected to that server in question #4. What is the sftp command to upload the file questions.txt from your local server to the ~/documents/tests directory on your remote server?
  9. Assuming that you are connected to that server in question #4. What is the sftp command to quit your current session?
  10. 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
  11. Create a table listing each Linux command, useful options and command purpose for the following Linux commands: scp , sftp , mail.
  12. Create a table listing each sftp commandand it's purpose.