linux_wiki:use_shell_scripting_to_automate_system_maintenance_tasks

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
linux_wiki:use_shell_scripting_to_automate_system_maintenance_tasks [2016/09/21 22:58]
billdozor created
linux_wiki:use_shell_scripting_to_automate_system_maintenance_tasks [2019/05/25 23:50] (current)
Line 4: Line 4:
  
 Review of common shell scripting syntax.  Review of common shell scripting syntax. 
 +
 +----
 +
 +====== Lab Setup ======
 +
 +The following virtual machines will be used:
 +  * server1.example.com (192.168.1.150) -> Create and test some scripts
 +
 +----
 +
 +====== Help ======
 +
 +Finding help in this section.
 +  * Not many references. Be comfortable with basic bash scripting
 +    * Variables
 +    * Arguments
 +    * Input
 +    * Output
 +    * Decisions (if statements, case)
 +    * Loops
  
 ---- ----
Line 84: Line 104:
 [ -f $1 ] || echo "This is not a file" [ -f $1 ] || echo "This is not a file"
 </code> </code>
 +
 +----
 +
 +====== Loops ======
 +
 +Iterating through data.
 +
 +===== For Loops =====
 +
 +Useful for processing ranges of information.
 +
 +Specific amount of iterations
 +<code bash>
 +for (( count=1; count <= 100; count++ )); do
 +  echo "The count is: $count"
 +done
 +
 +exit 0
 +</code>
 +
 +\\
 +Unknown iterations through a range of data
 +<code bash>
 +for node in $(cat system_list.txt); do
 +  ssh $node "uptime"
 +done
 +</code>
 +
 +\\
 +Range of numbers
 +<code bash>
 +for number in {100..200}; do
 +  ping -c 1 192.168.1.$number > /dev/null && echo "192.168.1.$number is up"
 +done
 +</code>
 +
 +===== While Loops =====
 +
 +While loops are useful for monitoring something or to repeat something forever and break under certain conditions.
 +
 +\\
 +Loop infinitely
 +<code bash>
 +# Keep checking to see if a specific host is up (the first argument to the script)
 +while true; do
 +  ping -c 1 $1
 +  
 +  # if the last command (ping) returns successful (0 exit code)
 +  if [[ $? -eq 0 ]]; then
 +    echo "$1 is up"
 +    exit 0
 +  else
 +    sleep 5
 +  fi
 +
 +done
 +</code>
 +
 +\\
 +Monitor a process
 +<code bash>
 +# While output results are true, go back to sleep
 +while ps aux | grep $1 | grep -v grep; do
 +  sleep 5
 +done
 +
 +# Mail when no results from ps (process stopped)
 +echo "The process($1) is no longer running." | mail -s "Process $1 stopped" root
 +</code>
 +
 +===== Case Evaluation =====
 +
 +Evaluate data and provide matches for expected values.
 +
 +<code bash>
 +case $1 in
 +  start)
 +    start_program
 +  ;;
 +  stop)
 +    stop_program
 +  ;;
 +  status)
 +    status_of_program
 +  ;;
 +  *)
 +    echo "Usage: $0 (start|stop|status)"
 +  ;;
 +esac
 +</code>
 +
 +----
 +
 +====== Debugging ======
 +
 +To debug a script, execute it with a special argument:
 +<code bash>
 +bash -x myscript.sh
 +</code>
 +  * -x -> Shows line by line what the script is doing, which allows easier debugging when it breaks
  
 ---- ----
  
  • linux_wiki/use_shell_scripting_to_automate_system_maintenance_tasks.1474513122.txt.gz
  • Last modified: 2019/05/25 23:50
  • (external edit)