#! /bin/bash

echo “本脚本必须在ROOT用户下执行,系统media下有RHEL-6.6\ Server.x86_64/目录和tmp目录下有/tmp/rhel-server-5.4-i386-dvd.iso 才能完美执行”
ls /media/RHEL-6.6\ Server.x86_64/ &> /dev/null
if [ $? -ne 0 ] ;then
echo “/media/RHEL-6.6\ Server.x86_64/文件不存在”
exit
fi

ls /tmp/rhel-server-5.4-i386-dvd.iso &> /dev/null
if  [ $? -ne  0 ]   ;then
           echo "/tmp/rhel-server-5.4-i386-dvd.iso文件不存在"
           exit
fi

#
echo “\))))安装系统((((/”

echo 关闭防火墙 安全linux
service iptables stop &> /dev/null
/usr/sbin/setenforce 0 &> /dev/null
cat /etc/selinux/config |sed -n ‘s/SELINUX=enforcing/SELINUX=disabled/gp’ &> /dev/null
[ $? -ne 0 ] && echo “失败”

echo “配置本地源”
mkdir -p /iso
mount -o loop /dev/cdrom /iso
echo “/dev/cdrom /iso iso9660 ro,loop 0 0” >> /etc/fstab
rm -fr /etc/yum.repos.d/*
cat > /etc/yum.repos.d/iso.repo << EOT

[base]

baseurl=file:///iso gpgcheck=0 EOT yum clean all &> /dev/null
yum makecache &> /dev/null
[ $? -ne 0 ] && echo “失败”

echo “配置网卡及主机名”

cat >/etc/sysconfig/network-scripts/ifcfg-eth0 << EOT DEVICE=eth0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=none IPADDR=192.168.1.254 NETMASK=255.255.255.0 GATEWAY=192.168.1.2 EOT echo “NETWORKING=yes” > /etc/sysconfig/network
echo “HOSTNAME=pxe.uplooking.edu” >>/etc/sysconfig/network
service network restart &> /dev/null
[ $? -ne 0 ] && echo “失败”

echo “配置6版本源”

 mkdir -p /var/ftp/pub/rhel6u5/dvd  
 mount -o loop /dev/cdrom /var/ftp/pub/rhel6u5/dvd    
 echo "/dev/cdrom   /var/ftp/pub/rhel6u5/dvd  iso9660   ro,loop     0 0     " >> /etc/fstab  
 mount -a   &> /dev/null
 yum clean all &> /dev/null
 yum repolist  &> /dev/null
 [ $? -ne  0 ] &&  echo "失败"

echo “配置5版本源”
mkdir -p /var/ftp/pub/rhel5u4/dvd
mount -o loop /tmp/rhel-server-5.4-i386-dvd.iso /var/ftp/pub/rhel5u4/dvd
echo “/tmp/rhel-server-5.4-i386-dvd.iso /var/ftp/pub/rhel5u4/dvd iso9660 ro,loop 0 0 ” >> /etc/fstab
[ $? -ne 0 ] && echo “失败”

echo “装ftp”
yum -y install vsftpd &> /dev/null
service vsftpd start &> /dev/null
chkconfig vsftpd on &> /dev/null
wget ftp://192.168.1.254:pub/rhel5u4/dvd/GPL &> /dev/null && echo YES
[ $? -ne 0 ] && echo “失败”

echo “装http”
yum -y install httpd &> /dev/null
ln -s /var/ftp/pub/rhel6u5/dvd/ /var/www/html/rhel6u5
service httpd start &> /dev/null
chkconfig httpd on &> /dev/null
wget http://192.168.1.254/rhel6u5/media.repo &> /dev/null && echo “HTTP搭建成功”
[ $? -ne 0 ] && echo “失败”

echo “装rpcbind”
yum install -y rpcbind nfs-utils &> /dev/null
echo “/var/ftp/pub/rhel6u5/dvd *(ro,sync)” > /etc/exports
[ $? -ne 0 ] && echo “1失败”
echo “/var/ftp/pub/rhel5u4/dvd *(ro,sync)” > /etc/exports
[ $? -ne 0 ] && echo “2失败”
service rpcbind restart &> /dev/null
service nfs start &> /dev/null
chkconfig nfs on &> /dev/null
chkconfig rpcbind on &> /dev/null

echo “装dhcp”
yum -y install dhcp &> /dev/null

cat > /etc/dhcp/dhcpd.conf <<EOT
option domain-name “uplooking.edu”;
option domain-name-servers 192.168.1.254, 192.168.1.2;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.20;
option routers 192.168.1.2;
option broadcast-address 192.168.1.255;
server-name “192.168.1.254”;
filename “pxelinux.0”;
}
EOT
service dhcpd start &> /dev/null
[ $? -ne 0 ] && echo “1失败”
chkconfig dhcpd on &> /dev/null

 yum -y install tftp-server  &> /dev/null
 chkconfig tftp on  &> /dev/null
 service xinetd start  &> /dev/null
 netstat -unlp |grep :69 &> /dev/null
 [ $? -ne  0 ] &&  echo "2失败"

echo “修改default菜单及ks文件生成”
yum -y install syslinux &> /dev/null
[ $? -ne 0 ] && echo “1失败”
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[ $? -ne 0 ] && echo “2失败”

 mkdir /var/lib/tftpboot/pxelinux.cfg
 cp   /var/www/html/rhel6u5/isolinux/vesamenu.c32  /var/lib/tftpboot/
 [ $? -ne  0 ] &&  echo "3失败"
 cp   /var/www/html/rhel6u5/isolinux/splash.jpg /var/lib/tftpboot/
 [ $? -ne  0 ] &&  echo "4失败"

 mkdir /var/lib/tftpboot/rhel5u4/
 cp /var/ftp/pub/rhel5u4/dvd/isolinux/initrd.img  /var/lib/tftpboot/rhel5u4/
 [ $? -ne  0 ] &&  echo "5失败"
 cp /var/ftp/pub/rhel5u4/dvd/isolinux/vmlinuz  /var/lib/tftpboot//rhel5u4/
 [ $? -ne  0 ] &&  echo "6失败"

 mkdir /var/lib/tftpboot/rhel6u5/
 cp /var/ftp/pub/rhel6u5/dvd/isolinux/initrd.img  /var/lib/tftpboot/rhel6u5/
 [ $? -ne  0 ] &&  echo "7失败"
 cp /var/ftp/pub/rhel6u5/dvd/isolinux/vmlinuz  /var/lib/tftpboot/rhel6u5/
 [ $? -ne  0 ] &&  echo "8失败"

 cat > /var/lib/tftpboot/pxelinux.cfg/default <<EOT 

default vesamenu.c32

#prompt 1

timeout 600

display boot.msg

menu background splash.jpg
menu title www.uplooking.edu
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
label local
menu label Boot from ^local drive
menu default
localboot 0xffff
label auto6u5
menu label ^Auto install rhel6.6
kernel rhel6u5/vmlinuz
append initrd=rhel6u5/initrd.img ks=http://192.168.1.254/rhel6u5.cfg
label auto5u4
menu label ^Auto install rhel5.4
kernel rhel5u4/vmlinuz
append initrd=rhel5u4/initrd.img ks=http://192.168.1.254/rhel5u4.cfg
label linux
menu label ^Install or upgrade an existing system
kernel rhel6u5/vmlinuz
append initrd=rhel6u5/initrd.img
label rescue
menu label ^Rescue installed system
kernel rhel6u5/vmlinuz
append initrd=rhel6u5/initrd.img rescue
EOT

 cat >/var/www/html/rhel6u5.cfg <<EOT 

#platform=x86, AMD64, 或 Intel EM64T

#version=DEVEL

#Firewall configuration

firewall –disabled

#Install OS instead of upgrade

install

#Use network installation

url –url=”ftp://192.168.1.254/pub/rhel6u5/dvd”

#Root password

bootloader –location=mbr –md5pass=$1$MUnByNpz$WVFU9CQ.cnLdHPjOjfKvO/

#System authorization information

auth –useshadow –passalgo=sha512

#Use text mode install

text
firstboot –disable

#System keyboard

keyboard us

#System language

lang en_US

#SELinux configuration

selinux –disabled

#Installation logging level

logging –level=info

#Reboot after installation

reboot

#System timezone

timezone –isUtc Asia/Shanghai

#Network information

network –bootproto=dhcp –device=eth0 –onboot=on

#System bootloader configuration

bootloader –append=”selinux=0″ –location=mbr –md5pass=”$1$TDnv/fVb$2IgZr5kv5sPzDRKUA/ywL0″

#Clear the Master Boot Record

zerombr

#Partition clearing information

clearpart –all –initlabel

#Disk partitioning information

part /boot –fstype=”ext4″ –size=200
part / –fstype=”ext4″ –size=9000
part swap –fstype=”swap” –size=1024

%pre
part /boot –fstype=ext4 –size=200
part pv.253002 –size=10000

volgroup vol0 –pesize=4096 pv.253002
logvol / –fstype=ext4 –name=root –vgname=vol0 –size=8000
logvol swap –name=swap –vgname=vol0 –size=1996
%end

%packages
@chinese-support

%end

EOT
echo “%post” >> /var/www/html/rhel6u5.cfg
echo “cat >> /etc/yum.repos.d/dvd.repo << EOT” >>/var/www/html/rhel6u5.cfg
echo “[dvd]” >>/var/www/html/rhel6u5.cfg
echo “baseurl=ftp://192.168.1.254/pub/rhel6u5/dvd” >>/var/www/html/rhel6u5.cfg
echo “gpgcheck=0” >>/var/www/html/rhel6u5.cfg
echo “EOT”>>/var/www/html/rhel6u5.cfg

cat >/var/www/html/rhel5u4.cfg <<EOT

#platform=x86, AMD64, 或 Intel EM64T

key –skip

#System authorization information

auth –useshadow –enablemd5

#System bootloader configuration

bootloader –location=mbr –md5pass=$1$MUnByNpz$WVFU9CQ.cnLdHPjOjfKvO/

#Clear the Master Boot Record

zerombr

#Partition clearing information

clearpart –all –initlabel

#Use text mode install

text

#Firewall configuration

firewall –disabled

#Run the Setup Agent on first boot

firstboot –disable

#System keyboard

keyboard us

#System language

lang en_US

#Installation logging level

logging –level=info

#Use network installation

url –url=ftp://192.168.1.254/pub/rhel5u4/dvd

#Network information

network –bootproto=dhcp –device=eth0 –onboot=on

#Reboot after installation

reboot

#Root password

rootpw –iscrypted $1$dTFnL7xR$f6xjhRJbxoKxPt69HLv2V0

#SELinux configuration

selinux –disabled

#System timezone

timezone –isUtc Asia/Shanghai

#Install OS instead of upgrade

install

#X Window System configuration information

xconfig –defaultdesktop=GNOME –depth=8 –resolution=800×600 –startxonboot

#Disk partitioning information

part /boot –bytes-per-inode=4096 –fstype=”ext3″ –size=100
part / –bytes-per-inode=4096 –fstype=”ext3″ –size=15000
part swap –bytes-per-inode=4096 –fstype=”swap” –size=512
%pre

#clearpart –linux

#part /boot –fstype ext3 –size=200

#part pv.3 –size=20000

#part swap –size=1024

#volgroup vol0 –pesize=32768 pv.3

#logvol / –fstype ext3 –name=root –#vgname=vol0 –size=15000

#logvol /home –fstype ext3 –name=home –#vgname=vol0 –size=992

%post
echo “nameserver 192.168.1.254” >> /etc/reslov.conf

%packages
@gnome-desktop
@development-libs
@development-tools
@graphical-internet
@graphics
@chinese-support
@editors
EOT

echo “配置DNS”

 yum -y install bind   &> /dev/null

cat >/etc/named.conf << EOT
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
listen-on port 53 { 127.0.0.1; 192.168.1.254; };
directory “/var/named”;
dump-file “/var/named/data/cache_dump.db”;
statistics-file “/var/named/data/named_stats.txt”;
memstatistics-file “/var/named/data/named_mem_stats.txt”;
allow-query { localhost;192.168.1.0/24; };
recursion yes;

    dnssec-enable no;
    dnssec-validation no;
    dnssec-lookaside auto;

    /* Path to ISC DLV key */
    bindkeys-file "/etc/named.iscdlv.key";

    managed-keys-directory "/var/named/dynamic";

};

logging {
channel default_debug {
file “data/named.run”;
severity dynamic;
};
};

zone “.” IN {
type hint;
file “named.ca”;
};

include “/etc/named.rfc1912.zones”;
include “/etc/named.root.key”;

EOT

cat > /etc/named.rfc1912.zones <<EOT
// named.rfc1912.zones:
//
// Provided by Red Hat caching-nameserver package
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
// and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt
// (c)2007 R W Franks
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

zone “localhost” IN {
type master;
file “named.localhost”;
allow-update { none; };
};

zone “1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa” IN {
type master;
file “named.loopback”;
allow-update { none; };
};

zone “1.0.0.127.in-addr.arpa” IN {
type master;
file “named.loopback”;
allow-update { none; };
};

zone “0.in-addr.arpa” IN {
type master;
file “named.empty”;
allow-update { none; };
};

zone “uplooking.edu” IN {
type master;
file “uplooking.edu.zone”;
allow-update { none; };
};

zone “1.168.192.in-addr.arpa” IN {
type master;
file “192.168.1.rev”;
allow-update { none; };
};

EOT

#cat >/var/named/uplooking.edu.zone << EOT

echo “\$TTL 1D” >/var/named/uplooking.edu.zone
echo “@ IN SOA ns1.uplooking.edu. root.uplooking.com. ( ” >>/var/named/uplooking.edu.zone
echo ” 11 ; serial ” >>/var/named/uplooking.edu.zone
echo ” 1D ; refresh ” >>/var/named/uplooking.edu.zone
echo ” 1H ; retry ” >>/var/named/uplooking.edu.zone
echo ” 1W ; expire ” >>/var/named/uplooking.edu.zone
echo ” 3H ) ; minimum ” >>/var/named/uplooking.edu.zone
echo “@ NS ns1.uplooking.edu.” >>/var/named/uplooking.edu.zone
echo “ns1 A 192.168.1.254 ” >>/var/named/uplooking.edu.zone

#EOT

for i in {10..20}; do echo -e “desktop$i\tA\t192.168.1.$i”>> /var/named/uplooking.edu.zone ; done &> /dev/null

#cat > /var/named/192.168.1.rev <<EOT

echo “\$TTL 1D ” > /var/named/192.168.1.rev
echo “@ IN SOA ns1.uplooking.edu. root.uplooking.com. ( ” >> /var/named/192.168.1.rev
echo ” 11 ; serial ” >> /var/named/192.168.1.rev
echo ” 1D ; refresh ” >> /var/named/192.168.1.rev
echo ” 1H ; retry ” >> /var/named/192.168.1.rev
echo ” 1W ; expire ” >> /var/named/192.168.1.rev
echo ” 3H ) ; minimum ” >> /var/named/192.168.1.rev
echo “@ NS ns1.uplooking.edu. ” >> /var/named/192.168.1.rev
echo “254 PTR ns1.uplooking.edu. ” >> /var/named/192.168.1.rev

#EOT

for i in {10..20}; do echo -e “$i\tPTR\tdesktop$i.uplooking.edu.” >> /var/named/192.168.1.rev ; done &> /dev/null

chgrp named /var/named/192.168.1.rev
chgrp named /var/named/uplooking.edu.zone
named-checkconf &> /dev/null
[ $? -ne 0 ] && echo “1失败”
named-checkzone uplooking.edu /var/named/uplooking.edu.zone &> /dev/null
[ $? -ne 0 ] && echo “2失败”
named-checkzone 1.168.192.in-addr.arpa /var/named/192.168.1.rev &> /dev/null
[ $? -ne 0 ] && echo “3失败”
service named start &> /dev/null
[ $? -ne 0 ] && echo “4失败”
chkconfig named on &> /dev/null

echo “安装系统完成 请使用虚拟机测试”