Master shell scripting fundamentals and understand how ticketing systems manage IT service delivery.
Introduction to shell interpreters, shebang lines (`#!/bin/bash`), script permissions (`chmod +x`), and basic execution models.
Working with user-defined variables, positional parameters (`$1`, `$2`, `$#`, `$@`), and environment variables in scripts.
Implementing conditional branching using `if/elif/else` statements and `case` selectors for robust input validation.
Automating batch operations across lists and servers using `for`, `while`, and `until` loops paired with system checks.
Extracting, transforming, and summarizing log data with `grep`, stream editing with `sed`, and columnar parsing with `awk`.
Automating recurring administrative tasks, backups, and health checks using crontab syntax and systemd timers.
Understanding IT Service Management (ITSM), incident life cycles, service desks, and ITIL v4 guiding principles.
Comparing leading ITSM platforms (Jira Service Management, Freshservice, Zendesk) and exploring core ticketing workflows.
Defining Service Level Agreements, differentiating response vs. resolution targets, and designing escalation matrices.
Bash (Bourne Again SHell) is the standard command interpreter on most Linux distributions and macOS environments. As an IT support professional or systems engineer, writing shell scripts allows you to automate repetitive tasks, standardize environment configurations, and troubleshoot issues rapidly.
Every executable shell script begins with a shebang line: #!/bin/bash. This tells the operating system which interpreter binary should be invoked to execute the commands contained within the file.
To create and run a basic script, follow these standard terminal steps:
Variables store data values that can be referenced throughout your script. Bash is dynamically typed and treats variables as strings by default.
When running scripts from the terminal, you can pass arguments that become available inside the script as positional parameters:
| Parameter | Description |
|---|---|
$0 |
The filename of the current script. |
$1 - $9 |
The first through ninth positional arguments passed to the script. |
$# |
The total number of positional arguments passed. |
$@ |
All positional arguments as separate strings. |
$? |
The exit status of the last executed command (0 for success, non-zero for failure). |
Control structures allow your scripts to make decisions based on test conditions, file statuses, or numerical comparisons.
When handling multiple discrete options (such as service management menus), `case` statements provide cleaner syntax than chained `if/elif` blocks.
Loops automate repetitive execution blocks. In IT administration, loops are frequently used to iterate through lists of IP addresses, server names, or log files.
Text processing utilities form the backbone of log parsing and data extraction in Linux environments.
grep: Searches input files for lines matching a regular expression pattern.grep -i "error" /var/log/syslog
sed: Stream editor used for filtering and transforming text in pipelines.sed 's/old_ip/new_ip/g' config.conf
awk: Pattern scanning and processing language designed for columnar data.awk '{print $1, $9}' access.log
sort & uniq: Ordering data and filtering or counting duplicate occurrences.sort error.log | uniq -c | sort -nr
Cron is a time-based job scheduler in Unix-like operating systems. Automated administrative scripts are routinely triggered via crontab entries.
| Field | Allowed Values | Description |
|---|---|---|
| Minute | 0 - 59 | Minute of the hour when the job runs |
| Hour | 0 - 23 | Hour of the day in 24-hour format |
| Day of Month | 1 - 31 | Calendar day of the month |
| Month | 1 - 12 or JAN-DEC | Calendar month |
| Day of Week | 0 - 6 or SUN-SAT | Day of the week (0 = Sunday) |
Information Technology Infrastructure Library (ITIL) is the most widely accepted framework for IT Service Management (ITSM). It provides structured guidance on aligning IT services with business needs.
New → Assigned → In Progress → Pending (Optional) → Resolved → Closed
Every support ticket moves through a defined lifecycle. Accurate status tracking ensures accountability, metrics reporting, and timely closure.
| Priority | Impact | Urgency | Target Response | Target Resolution |
|---|---|---|---|---|
| P1 - Critical | Organization-wide | Immediate | 15 Minutes | 4 Hours |
| P2 - High | Department / Multiple Users | High | 1 Hour | 8 Hours |
| P3 - Medium | Single User | Medium | 4 Hours | 24 Hours |
| P4 - Low | Inconvenience / Request | Low | 8 Hours | 72 Hours |
Enterprise ITSM platforms centralize user requests, incident management, asset tracking, and knowledge bases.
| Platform | Key Strengths | Best Suited For |
|---|---|---|
| Jira Service Management | Deep developer integration, agile workflows, automation rules, asset management. | Tech-heavy organizations & software engineering teams. |
| Freshservice | Intuitive UI, robust IT asset discovery, strong SLA management, gamification. | Mid-market enterprises seeking fast deployment. |
| Zendesk | Omnichannel support (chat, email, voice), extensive marketplace apps, customer portal. | Customer-facing support and large helpdesks. |
Service Level Agreements (SLAs) are formal commitments between an IT service provider and the business defining expected service standards.
The time window within which a support technician must acknowledge receipt of the ticket, assign an owner, and make initial contact with the user.
The total elapsed time from ticket creation until the underlying issue is fully mitigated or resolved to the user's satisfaction.
Write a Bash script that checks root partition usage, logs a timestamped warning to /var/log/disk_monitor.log if usage exceeds 80%, and outputs status.
Configure a crontab entry that executes your disk monitoring script every hour on the minute zero.
Show SolutionUse awk and grep to parse a system log file and output a count of all unique error messages.
| Command / Operator | Category | Description |
|---|---|---|
[ -f file ] |
Conditional Test | Returns true if file exists and is a regular file. |
[ -d dir ] |
Conditional Test | Returns true if directory exists. |
-eq, -ne, -gt, -lt |
Numerical Comparison | Equal, not equal, greater than, less than. |
=, != |
String Comparison | String equality and inequality tests. |
>> |
Redirection | Append stdout to a file without overwriting. |
2>&1 |
Redirection | Redirect standard error to standard output. |
Proceed to Phase 6 — Career Prep to finalize your IT support portfolio, resume preparation, and interview readiness.