====== bash loops ====== ===== while counter ===== #!/bin/bash # SLEEPTIME=5 MAXCOUNT=5 URL="https://www.example.com/xys" # COUNTER=0 while [ $COUNTER -lt $MAXCOUNT ]; do let COUNTER=COUNTER+1 echo "Iteration: $COUNTER " curl -k $URL echo " Status: $? " # Don't execute for last iteration if [ $COUNTER -lt $MAXCOUNT ]; then sleep $SLEEPTIME fi done Repeat a process until successful #!/bin/bash SLEEPTIME=10 RETCODE=1 COUNTER=0 cd /opt/discourse while [ $RETCODE -gt 0 ]; do let COUNTER=COUNTER+1 ./launcher bootstrap app RETCODE=$? echo "( $COUNTER ) -----------------------------------------------------------------" sleep $SLEEPTIME done echo "Installed"|mailx -s Discourse system@example.org ===== while file input ===== #!/bin/bash # HOSTFILE="hostdetails.txt" # tail to remove header cat $HOSTFILE | tail -n +2 | while read ServerName site os platform pvlan vlan ip subnet mask gateway nat do echo "=========== $ServerName - $ip ===========" ping -c 1 $ip if [ $? -gt 0 ]; then echo "---------------------------------------------------------->> Error" fi done ===== for loop ===== Check all the fail2ban apache configurations for all the apache log files #!/bin/bash # for configfile in $(ls /etc/fail2ban/filter.d/apache-*); do for logfile in $(find /var/log/apache2 -name "*.log"); do echo "Log: $logfile --- Config: $configfile" /usr/bin/fail2ban-regex $logfile $configfile | grep matched done done