Phase 1: Linux Bash and Networking fundamentals
Author: GPS
How does this phase apply to Cloud?
The cloud is a bunch of Linux Servers networked together. Learning the fundamentals of how networking works, and how to interact with these servers via commands, and automating those commands via a script, is what this phase is about. If you're already a Linux admin or network engineer, you can apply your skills to the cloud.
How to break down this phase
I would suggest spending time on these three topics and this timeline:
Order | Topic |
---|---|
1 | Introduction to Bash Commands |
2 | Introduction to Bash Scripting |
3 | Introduction to Networking |
Of course feel free to spend as much time as you'd like, people have asked for a timeline and breakdown so I've added it.
Resources
Topic | Title | Notes | Tips |
---|---|---|---|
Bash | Linux Basics for Hackers | This book made learning Linux FUN! It's pretty easy to follow and take a chapter day by day. | You don't need to read the whole thing, the first 9 chapters cover most of what you need to know. |
Bash for Beginners | YouTube Video Series | An introduction to Bash! | A 20 part YouTube series covering the fundamentals of Bash. |
Networking | Fundamentals of computer networking | You'll learn the fundamental principles of computer networking to prepare you for the Azure admin and developer learning paths. | Read this after the previous video. |
Capstone Project: CloudUploader CLI
A bash-based CLI tool that allows users to quickly upload files to a specified cloud storage solution, providing a simple and seamless upload experience similar to popular storage services.
Your tool should be able to upload a file:
clouduploader /path/to/file.txt
Steps:
Setup & Authentication:
- Choose a cloud provider (e.g., AWS S3, Google Cloud Storage, Azure Blob Storage).
- Setup authentication. For instance, with Azure, you'd use
az login
to set up your credentials.
CLI Argument Parsing:
- Use bash's built-in
$1
,$2
, etc., to parse command-line arguments. $1
could be the filename or path.- Optionally, allow additional arguments like target cloud directory, storage class, or any other cloud-specific attributes.
- Use bash's built-in
File Check:
- Before uploading, check if the file exists using
[ -f $FILENAME ]
. - Provide feedback if the file is not found
- Before uploading, check if the file exists using
File Upload:
- Use cloud provider CLI to upload the file.
Upload Feedback:
- On successful upload, provide a success message.
- If there's an error, capture the error message and display it to the user.
Advanced Features (Optional):
- Allow multiple file uploads at once.
- Add a progress bar or percentage upload completion using tools like
pv
. - Provide an option to generate and display a shareable link post-upload.
- Enable file synchronization -- if the file already exists in the cloud, prompt the user to overwrite, skip, or rename.
- Integrate encryption for added security before the upload.
Documentation:
- Write a README.md file that explains how to set up, use, and troubleshoot the tool. Include a brief overview, prerequisites, usage examples, and common issues.
Distribution:
- Package the script for easy distribution and installation. You can even provide a simple installation script or instructions to add it to the user's
$PATH
.
- Package the script for easy distribution and installation. You can even provide a simple installation script or instructions to add it to the user's
Things you should be able familiar with at the end of this phase
Commands
- Navigate with the
cd
command. - How to list the contents of a directory and using the
ls
command. - Create, copy, move, rename, directories and files with
mkdir
,cp
,rm
, andtouch
commands. - Find things with
locate
,whereis
,which
, andfind
commands. - Understand how to learn more about commands with the
which
,man
, and--help
commands. - Familiar with finding logs details in
/var/log
- How to display the contents of a file with
cat
,less
,more
,tail
,head
. - Filtering with
grep
andsed
. - Redirection of standard input, output and error with
>
operator andtee
command. - How to use pipelines with the
|
operator. - Manipulate files with
nano
orvim
. - Install and uninstall packages. Depends on distro, debian based use
apt
. - Control permissions with
chown
,chgrp
,chmod
commands. - Creating users and the
sudo
command. - Process management with
ps
,top
,nice
,kill
- Manage environment aud user defined variables with
env
,set
,export
commands. - Add directories to your
PATH
. - Compression and archiving with
tar
,gzip
,gunzip
. - How to access a Linux server with
ssh
.
Networking
Concepts you should be familiar with.
- OSI Model
- IP Addresses
- MAC Addresses
- Routing and Switching
- TCP/IP
- TCP and UDP
- DNS
- VPN tunneling
- TLS and SSL
Bash Scripting
- What is a shell?
- What is Bash?
- Why does a script have to start with #!?
- What is a variable and how to use them
- How to accept user input
- How to execute a script
Certifications you might want to look into
There are several Linux certifications and you can chose to study for any of them, but a lot of them cover WAY more than what you need to know for a solid foundation and are more focused on Linux administration.
There are also TONS of networking certifications out there, and similar to the Linux ones, they are more focused on giving you a lot of knowledge so you can become a networking engineer/specialist, again at an introductory level, it's a little overkill. If you did want to get one, take a look at the Cisco certifications which are pretty much industry standard and/or Comptia Network+
At the end of the day, if you want to take them, go for it :)