Search User in System Configuration

LinuxLinuxIntermediate
Practice Now

Introduction

In this challenge, we will write a script to search for a user present in the system. We will fetch the usernames from the /etc/passwd file and search for the given name in the list. This challenge will help us understand how to work with configuration files and how to search for a specific string in a file using shell scripting.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL shell(("`Shell`")) -.-> shell/ControlFlowGroup(["`Control Flow`"]) linux(("`Linux`")) -.-> linux/BasicFileOperationsGroup(["`Basic File Operations`"]) linux(("`Linux`")) -.-> linux/BasicSystemCommandsGroup(["`Basic System Commands`"]) linux(("`Linux`")) -.-> linux/InputandOutputRedirectionGroup(["`Input and Output Redirection`"]) linux(("`Linux`")) -.-> linux/UserandGroupManagementGroup(["`User and Group Management`"]) linux(("`Linux`")) -.-> linux/SystemInformationandMonitoringGroup(["`System Information and Monitoring`"]) shell(("`Shell`")) -.-> shell/BasicSyntaxandStructureGroup(["`Basic Syntax and Structure`"]) shell(("`Shell`")) -.-> shell/VariableHandlingGroup(["`Variable Handling`"]) shell(("`Shell`")) -.-> shell/FunctionsandScopeGroup(["`Functions and Scope`"]) shell(("`Shell`")) -.-> shell/AdvancedScriptingConceptsGroup(["`Advanced Scripting Concepts`"]) shell(("`Shell`")) -.-> shell/SystemInteractionandConfigurationGroup(["`System Interaction and Configuration`"]) shell/ControlFlowGroup -.-> shell/if_else("`If-Else Statements`") linux/BasicFileOperationsGroup -.-> linux/cat("`File Concatenating`") linux/BasicFileOperationsGroup -.-> linux/cut("`Text Cutting`") linux/BasicSystemCommandsGroup -.-> linux/exit("`Shell Exiting`") linux/BasicSystemCommandsGroup -.-> linux/echo("`Text Display`") linux/InputandOutputRedirectionGroup -.-> linux/pipeline("`Data Piping`") linux/InputandOutputRedirectionGroup -.-> linux/redirect("`I/O Redirecting`") linux/BasicSystemCommandsGroup -.-> linux/read("`Input Reading`") linux/UserandGroupManagementGroup -.-> linux/passwd("`Password Changing`") linux/SystemInformationandMonitoringGroup -.-> linux/df("`Disk Space Reporting`") shell/BasicSyntaxandStructureGroup -.-> shell/shebang("`Shebang`") shell/BasicSyntaxandStructureGroup -.-> shell/comments("`Comments`") shell/BasicSyntaxandStructureGroup -.-> shell/quoting("`Quoting Mechanisms`") shell/VariableHandlingGroup -.-> shell/variables_decl("`Variable Declaration`") shell/VariableHandlingGroup -.-> shell/variables_usage("`Variable Usage`") shell/VariableHandlingGroup -.-> shell/str_manipulation("`String Manipulation`") shell/VariableHandlingGroup -.-> shell/arrays("`Arrays`") shell/VariableHandlingGroup -.-> shell/param_expansion("`Parameter Expansion`") shell/ControlFlowGroup -.-> shell/for_loops("`For Loops`") shell/ControlFlowGroup -.-> shell/cond_expr("`Conditional Expressions`") shell/ControlFlowGroup -.-> shell/exit_status("`Exit and Return Status`") shell/FunctionsandScopeGroup -.-> shell/func_def("`Function Definition`") shell/AdvancedScriptingConceptsGroup -.-> shell/arith_expansion("`Arithmetic Expansion`") shell/AdvancedScriptingConceptsGroup -.-> shell/read_input("`Reading Input`") shell/AdvancedScriptingConceptsGroup -.-> shell/cmd_substitution("`Command Substitution`") shell/AdvancedScriptingConceptsGroup -.-> shell/subshells("`Subshells and Command Groups`") shell/SystemInteractionandConfigurationGroup -.-> shell/globbing_expansion("`Globbing and Pathname Expansion`") subgraph Lab Skills shell/if_else -.-> lab-18277{{"`Search User in System Configuration`"}} linux/cat -.-> lab-18277{{"`Search User in System Configuration`"}} linux/cut -.-> lab-18277{{"`Search User in System Configuration`"}} linux/exit -.-> lab-18277{{"`Search User in System Configuration`"}} linux/echo -.-> lab-18277{{"`Search User in System Configuration`"}} linux/pipeline -.-> lab-18277{{"`Search User in System Configuration`"}} linux/redirect -.-> lab-18277{{"`Search User in System Configuration`"}} linux/read -.-> lab-18277{{"`Search User in System Configuration`"}} linux/passwd -.-> lab-18277{{"`Search User in System Configuration`"}} linux/df -.-> lab-18277{{"`Search User in System Configuration`"}} shell/shebang -.-> lab-18277{{"`Search User in System Configuration`"}} shell/comments -.-> lab-18277{{"`Search User in System Configuration`"}} shell/quoting -.-> lab-18277{{"`Search User in System Configuration`"}} shell/variables_decl -.-> lab-18277{{"`Search User in System Configuration`"}} shell/variables_usage -.-> lab-18277{{"`Search User in System Configuration`"}} shell/str_manipulation -.-> lab-18277{{"`Search User in System Configuration`"}} shell/arrays -.-> lab-18277{{"`Search User in System Configuration`"}} shell/param_expansion -.-> lab-18277{{"`Search User in System Configuration`"}} shell/for_loops -.-> lab-18277{{"`Search User in System Configuration`"}} shell/cond_expr -.-> lab-18277{{"`Search User in System Configuration`"}} shell/exit_status -.-> lab-18277{{"`Search User in System Configuration`"}} shell/func_def -.-> lab-18277{{"`Search User in System Configuration`"}} shell/arith_expansion -.-> lab-18277{{"`Search User in System Configuration`"}} shell/read_input -.-> lab-18277{{"`Search User in System Configuration`"}} shell/cmd_substitution -.-> lab-18277{{"`Search User in System Configuration`"}} shell/subshells -.-> lab-18277{{"`Search User in System Configuration`"}} shell/globbing_expansion -.-> lab-18277{{"`Search User in System Configuration`"}} end

In this challenge, you are tasked with writing a script to search for a user present in the system. You will need to fetch usernames from the first field in the /etc/passwd file and search for a given name in the list.

Tasks

You need to complete the following task:

  • Write a script to fetch usernames from the /etc/passwd file and search for a given name in the list.

Requirements

You must meet the following requirements:

  • Script name: userSearch.sh
  • Working directory: ~/project
  • Familiarity with df, cut & tr commands
  • Basic understanding of loops and arrays

Example

labex:project/ $ bash userSearch.sh

[INPUT] Enter the username [INPUT]
labex

[OUTPUT] USER labex IS PRESENT [OUTPUT]
labex:project/ $ bash userSearch.sh

[INPUT] Enter the username [INPUT]
123

[OUTPUT] USER 123 IS NOT PRESENT [OUTPUT]

Summary

After completing this challenge, we have learned how to fetch data from configuration files using shell scripting. We have also learned how to search for a specific string in a file using shell scripting. This challenge has helped us to improve our skills in loops and arrays. We can now use these skills to automate various tasks in our system.

Other Linux Tutorials you may like