Shell Programming Examples: Difference between revisions

From RoggeWiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 14: Line 14:


===sshhost===
===sshhost===
  #!/bin/bash
  #!/bin/bash
  #
  #
Line 33: Line 34:
   
   
===copypublic.sh===
===copypublic.sh===
  #!/usr/bin/ksh
  #!/usr/bin/ksh
  #
  #
Line 45: Line 47:


===postman===
===postman===
How to proces a mail
How to proces a mail


Line 60: Line 63:
  $
  $


===mksysb===
===mksysb===


  #/usr/bin/ksh
  #/usr/bin/ksh

Revision as of 12:33, 29 September 2015

Ping all hosts in a subnet

subnet=”141.93.169
i=1
while [ $i -lt 255 ]       
do
   ping ${subnet}.${i} 2 1>/dev/null 2>&1
   if   [ $? -ne 0 ] ; then
        echo "${subnet}.${i},down"
   else echo "${subnet}.${i},up"
   fi
   i=$(expr $i + 1 )
done

sshhost

#!/bin/bash
#
# ssh-keygen -t dsa -b 8192
#
Host=`echo $0|cut -d / -f5`
echo "Logon  " `date "+%m/%d/%y %H:%M:%S"` $Host >> $HOME/logs/sshhost.log
# Use escape sequence to modify SecureCrt window title: ESC]; text CTRL-G
printf "\033];$Host\007"
Hmcs="hmc100.hmc200"
Vios="uio200.uio299.uio300.uio399"
User=""
[ ! -z $(echo "$Hmcs" | grep "$Host") ] && User="hscroot@"
[ ! -z $(echo "$Vios" | grep "$Host") ] && User="padmin@"
[ ! -z $(echo "$Host" | grep "vio")   ] && User="padmin@"
ssh $User$Host
printf "\033];`uname -n`\007"
echo "Logof  " `date "+%m/%d/%y %H:%M:%S"` $Host >> $HOME/logs/sshhost.log

copypublic.sh

#!/usr/bin/ksh
#
# Copy public key to another system. Target system is $1.
scp -pr $HOME/.ssh/id_dsa.pub $1:/tmp/
ssh $1 <<EOF
mkdir -m 700 .ssh
cat /tmp/id_dsa.pub >>.ssh/authorized_keys
chmod 600 .ssh/authorized_keys
rm /tmp/id_dsa.pub
EOF

postman

How to proces a mail

$ cat .forward
|/home/roggt/receivemail

$ cat receivemail
#!/usr/bin/ksh
echo $(date) >> aaplog
echo "0" $0  >> aaplog
echo "1" $1  >> aaplog
echo $(env)  >> aaplog
echo Extension $EXTENSION >>aaplog
cat     > aapbody
$

mksysb

#/usr/bin/ksh
#
#       Make mksysb
#
#       Arguments Hostname and Suffix
#
#       Run the mksysb
#               - Make the mksysb
#               - Check for success
#                       - Ok
#                       - Incomplete
#                       - Failed
#       Cleanup older mksysb files
#
P=/backups/mksysb/
nim -o define -t mksysb -a server=master -a source=${1} -a mk_image=yes -a mksysb_flags=ev -a location=$P${1}-${2}.mksysb ${1}-${2} >$P${1}-${2}.log 2>$P${1}-${2}.err
if [ $? = 0 ]
then
       echo "NIM backup for ${1} completed successfully"
       gzip $P${1}-${2}.mksysb &
else
       grep "0512-003 savevg may not have been able to archive some files" $P${1}-${2}.log >/dev/null 2>&1
       if [ $? = 0 ]
       then
               echo "NIM backup for ${i} completed, but not all files are archived (0512-003)"
       else
               echo "NIM backup for ${1} failed, rc=$?"
               echo "=== Error log begin ==="
               cat $P${1}-${2}.err
               echo "=== Error log end   ==="
       fi
fi
#
#       Remove older versions
#       Remove NIM resources and corresponding files
Versions=3      # Number of versions to keep on disk
let Arg=$Versions+1
echo Available NIM resources:
lsnim -t mksysb|grep ${1}|sort
for i in $(lsnim -t mksysb|grep ${1}|sort -r|tail -n +$Arg|awk '{print $1}')
do
#       nim -o remove -a rm_image=yes ${i}      # Image renamed by gzip to .gz
       nim -o remove ${i}
       if [ $? = 0 ]
       then
               echo NIM resource ${i} deleted
               echo Available files:
               ls -l $P${1}*
               echo Removing files:
               ls -l $P${i}*
               echo rm    $P${i}*
       else
               echo "Error during remove NIM resource ${i}, rc=$?"
       fi
done

mksysb.all

#/usr/bin/ksh
#
#       Maak van alle LPARs een mksysb
#       Ruim alle oude files op
#       Maak een backup van de VIO servers
#       Roep chksystems script aan
#       Collect mci van alle LPARs
#       Collect vgdata van alle LPARs
#
Date=$(date "+%Y%m%d")
Logfile=/backups/mksysb/mksysb.log
for  Host in $(cat /root/bin/lpars.list)
do
       echo $(date "+%Y-%m-%d %H:%M:%S") mksysb for $Host $Date started >>$Logfile
       /root/bin/mksysb.sh $Host $Date                                  >>$Logfile
       echo $(ls -l /backups/mksysb/${Host}-mksysb-${Date}*)            >>$Logfile
       echo $(date "+%Y-%m-%d %H:%M:%S") mksysb for $Host $Date ended   >>$Logfile
done
# Cleanup old .log and .err files
find /backups/mksysb/ -name "*.log" -mtime +90 -exec rm {} \;
find /backups/mksysb/ -name "*.err" -mtime +90 -exec rm {} \;
# Create backupios files
# Run backupios in vio and write mksysb to nim server via NFS mount 
Date=$(date "+%Y%m%d")
Logfile=/backups/backupios/backupios.log
echo $(date "+%Y-%m-%d %H:%M:%S") backupios start for the following VIOs    >>$Logfile 2>&1
cat /root/bin/vios.list                                                     >>$Logfile 2>&1
for Vios in $(cat /root/bin/vios.list)
do
       echo '============================================================' >>$Logfile 2>&1
       echo $(date "+%Y-%m-%d %H:%M:%S") backupios for $Vios $Date started >>$Logfile 2>&1
       ssh $Vios mount nl01nm001:/backups/backupios /mnt                   >>$Logfile 2>&1
       ssh $Vios /usr/ios/cli/ioscli backupios -file       \
           /mnt/$Vios-backupios-${Date} -nosvg -nomedialib -mksysb         >>/backups/backupios/$Vios-backupios-${Date}.log 2>&1
       ssh $Vios unmount /mnt                                              >>$Logfile 2>&1
       echo $(date "+%Y-%m-%d %H:%M:%S") backupios for $Vios $Date ended   >>$Logfile 2>&1
done
# Bewaar alleen de laatste drie versies van backupios files,
# gooi de rest weg
Version=3
let Arg=$Version+1
echo  $(date "+%Y-%m-%d %H:%M:%S") Delete old vio backups started           >>$Logfile 2>&1
for i in $(ls /backups/backupios|grep -v log|cut -f 1 -d '-'|sort|uniq)
do
   for v in $(ls -t /backups/backupios/${i}*|grep -v log|tail -n +$Arg)
   do
       ls -l ${v}*                                                         >>$Logfile 2>&1
       rm    ${v}*                                                         >>$Logfile 2>&1
   done
done
echo  $(date "+%Y-%m-%d %H:%M:%S") Delete old vio backups ended             >>$Logfile 2>&1
# Check systems and send mail
/root/bin/chksystems.sh $Date
# Collect machine configuration items for future reference
for Host in $(cat /root/bin/lpars.list)
do
       ssh $Host /root/bin/mci.sh >/var/log/mci/${Host}.mci.log.${Date}
done
# Cleanup mci files older than 3 years
find /var/log/mci/ -mtime +1095 -exec rm {} \;
#
#       Collect vgdata for all LPARs
#
for Host in $(cat /root/bin/lpars.list)
do
       /root/bin/mkbkpvgdata.sh $Host
done
# Cleanup vgdata files older than 3 months
find /var/log/vgdata/ -mtime +91 -exec rm {} \;