====== 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