📖 Scenario: You are managing multiple remote servers and want to automate running a simple command on them using SSH. This will save you time and avoid typing the same commands repeatedly.
🎯 Goal: Create a bash script that stores a list of server IPs, sets a username variable, loops over the servers to run a command via SSH, and prints the output for each server.
📋 What You'll Learn
Create a bash array called servers with three IP addresses
Create a variable called user with the SSH username
Use a for loop with variable server to iterate over servers
Run ssh command to execute hostname on each server
Print the server IP and its hostname output
💡 Why This Matters
🌍 Real World
System administrators often need to run commands on many servers. Automating SSH commands saves time and reduces errors.
💼 Career
Knowing how to automate SSH tasks with bash scripting is a valuable skill for roles in IT support, DevOps, and system administration.
Progress0 / 4 steps
1
Create the list of servers
Create a bash array called servers with these exact IP addresses: 192.168.1.10, 192.168.1.20, and 192.168.1.30.
Bash Scripting
Hint
Use parentheses () to create a bash array and double quotes "" around each IP.
2
Set the SSH username
Create a variable called user and set it to the exact string admin.
Bash Scripting
Hint
Assign the string admin to the variable user using = and quotes.
3
Loop over servers and run SSH command
Use a for loop with variable server to iterate over servers. Inside the loop, run the SSH command ssh $user@$server hostname and store the output in a variable called host_name.
Bash Scripting
Hint
Use for server in "${servers[@]}" to loop. Use $(ssh "$user@$server" hostname) to capture output.
4
Print the server and hostname output
Inside the for loop, add a echo statement to print: Server: $server, Hostname: $host_name.
Bash Scripting
Hint
Use echo "Server: $server, Hostname: $host_name" inside the loop to print the output.
Practice
(1/5)
1. What is the main benefit of using SSH keys for automation instead of passwords?
easy
A. It allows passwordless login for automated scripts.
B. It makes the connection slower but more secure.
C. It requires manual password entry every time.
D. It disables encryption for faster transfers.
Solution
Step 1: Understand SSH key usage
SSH keys allow scripts to connect without typing passwords manually.
Step 2: Compare with password login
Password login needs manual input, which breaks automation.
Final Answer:
It allows passwordless login for automated scripts. -> Option A
Quick Check:
SSH keys enable passwordless login = B [OK]
Hint: SSH keys = no password prompts for scripts [OK]
Common Mistakes:
Thinking SSH keys slow down connection
Assuming passwords work without manual input
Believing SSH keys disable encryption
2. Which of the following is the correct syntax to copy a local file file.txt to a remote server using SSH automation?
easy
A. ssh file.txt user@remote:/path/
B. scp file.txt user@remote:/path/
C. ssh-copy file.txt user@remote:/path/
D. copy file.txt user@remote:/path/
Solution
Step 1: Identify the command for secure copy
scp is used to copy files over SSH securely.
Step 2: Check other options
ssh runs commands, ssh-copy is not a valid command, and copy is not for SSH.
Final Answer:
scp file.txt user@remote:/path/ -> Option B
Quick Check:
Use scp to copy files over SSH = A [OK]
Hint: Use scp to copy files remotely [OK]
Common Mistakes:
Using ssh instead of scp for file copy
Typing ssh-copy which is invalid
Using copy command which is local only
3. What will be the output of this command if the remote server is reachable and the user has SSH key access? ssh user@remote 'echo Hello from remote'
medium
A. Connection timed out.
B. Permission denied (publickey).
C. Hello from remote
D. ssh: Could not resolve hostname remote: Name or service not known
Solution
Step 1: Understand the command
The command runs echo Hello from remote on the remote server via SSH.
Step 2: Check conditions
If the server is reachable and SSH keys are set, the command outputs the echoed text.
Final Answer:
Hello from remote -> Option C
Quick Check:
SSH runs remote echo command = Hello from remote [OK]
Hint: SSH runs remote commands and shows output [OK]
Common Mistakes:
Assuming permission denied without checking keys
Confusing hostname errors with command output
Thinking SSH command outputs nothing
4. You wrote this script to automate a remote command:
ssh user@remote 'uptime'
But it fails with "Permission denied (publickey)". What is the most likely fix?
medium
A. Generate SSH keys and add the public key to remote's authorized_keys.
B. Change the command to ssh user@remote uptime without quotes.
C. Use scp instead of ssh to run commands.
D. Restart the remote server to reset SSH.
Solution
Step 1: Understand the error
"Permission denied (publickey)" means SSH keys are missing or not accepted.
Step 2: Fix SSH key setup
Generate SSH keys locally and add the public key to ~/.ssh/authorized_keys on remote.
Final Answer:
Generate SSH keys and add the public key to remote's authorized_keys. -> Option A
Quick Check:
Permission denied means missing keys = A [OK]
Hint: Add your public key to remote authorized_keys [OK]
Common Mistakes:
Removing quotes does not fix permission errors
Using scp instead of ssh for commands
Restarting server won't fix key issues
5. You want to automate running multiple commands on a remote server via SSH in one script. Which is the best way to do this?
hard
A. Use a single SSH command with multiple commands separated by semicolons inside quotes.
B. Run separate SSH commands for each remote command in the script.
C. Use scp to send commands instead of SSH.
D. Copy a script file to remote and run it with one SSH command.
Solution
Step 1: Consider multiple commands execution
Running many commands inline can be complex and error-prone.
Step 2: Use script file for clarity and reuse
Copying a script file to remote and running it via SSH is cleaner and easier to maintain.
Final Answer:
Copy a script file to remote and run it with one SSH command. -> Option D
Quick Check:
Script file on remote is best for multiple commands = C [OK]
Hint: Send script file and run remotely for many commands [OK]
Common Mistakes:
Running many commands inline can cause quoting errors
Running separate SSH commands is slower and complex
Using scp to send commands is incorrect
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.