7.05.2009

Shutdown Script

Calıştığımız şirkette 3 farklı lokasyonda toplam 244 tane unix iş istasyonu bulunuyor. bu iş istasyonlarının tümü bazı sebeblerden ötürü kapatılması veya reboot edilmesi gerekiyor. bu aşağıdaki script x, y, z, adını verdiğim üç lokasyonda bulunan iş istasyonlarını kapatıyor. x, y, z, lokasyonları için client ların hostname leri her lokasyon için hazırlanan (x.list, y.list, z.list) text dosylarına önceden girilimiştir. scripti çalıştırdığınızda karşınıza gelen menüden lokasyonu seçtiğinizde, ilgili text dosyası baz alınıp, dosya içerisindeki her hostnam e ssh ile bağlanıp, "uname" ile işletim sistemini sorguluyor. Çıkan sonuca göre HP-UX ve SunOS için oluşturulmuş fonksiyonlara yönelip sistemi kapatma işlemine başlıyor. her kapatılan veya kapatılamayan iş istasyonlarının hostname lerini ilgili log dosyasına yazıyor.


#!/usr/bin/bash
function hp_ux
{
echo "HP FONKSIYONU"
echo "$1 kapatiliyor">>tamamlanan.txt
ssh -l root $1 "shutdown -h -y now" 2>/dev/null
}
function her_makina
{
if [ $# -ne 1 ]
then
echo "Hedef verilmemis"
exit 1
fi
OS_OGREN=`ssh -l root $1 "uname" 2>/dev/null`
case "$OS_OGREN" in
'HP-UX')
echo "makina HP-UX"
hp_ux $1;;
'SunOS')
echo "makina SunOs"
echo "$1 kapatiliyor">>tamamlanan.txt
ssh -l root $1 "init 5" 2>/dev/null
;;*)
echo " BILINMIYOR $OS_OGREN"
echo "$1 ulasilamiyor">>ulasilamayan.txt
;;
esac
}
echo "***********************************"
echo "******Remote Shutdown Script*******"
echo "***********************************"
echo ""
echo " Lutfen Lokasyon Secin \c "
echo ""
echo ""
echo " 1-) X Lokasyonu"
echo " 2-) Y Lokasyonu "
echo "3-) Z Lokasyonu"
echo ""
echo ""
echo "***********************************"
echo ""
echo " Seciminiz:"
read sec junk
if [ "$sec" -eq 1 ]
then
file="x.list"
echo "$file isleme aliniyor"
fi
if [ "$sec" -eq 2 ]
then
file="y.list"
echo "$file isleme aliniyor"
fi
if [ "$sec" -eq 3 ]
then
file="z.list"
echo "$file isleme aliniyor"
fi
x=0
while [ $x -lt $(cat $file wc -l) ]
do
let x=x+1
her_makina $(head -n $x $file tail -n 1)
done
exit 0