#!/bin/bash
cat << EOF
# 作者:Mr.ning
# 作者邮箱:785319662@qq.com
# 脚本版本号:0.0.1
# 脚本作用:自动完成YUM源搭建、静态IP修改、kickstart批量部署环境搭建、root密码自动修改等功能!
# 脚本使用方法:下载本脚本后,先给予该脚本执行权限,然后使用“./ks.sh”即可开启(必须在脚本当前目录使用该命令)
# 脚本发布日期: 2017年2月18日
# 如有更好的介意请联系本脚本作者!
EOF
# 环境变量设置:
ETH=`ifconfig |grep eth|cut -d " " -f1`
IP=`ifconfig $ETH|grep Bcast|cut -d ":" -f2|cut -d " " -f1`
IP1=`ifconfig $ETH|grep Bcast|cut -d ":" -f2|cut -d " " -f1|cut -d "." -f1,2,3`
ipfile=/etc/sysconfig/network-scripts/ifcfg-$ETH
MOS=`cat $ipfile|grep BOOTPROTO|cut -d "=" -f2`
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
# kickstart批量部署环境搭建
kickstart () {
# 判断目录是否存在,不存在则创建!
yumdir=/yum
if [ -e $yumdir ];then
if [ ! -d $yumdir ];then
rm -rf $yumdir
mkdir $yumdir -p
fi
else
mkdir $yumdir -p
fi
# 挂载镜像文件!
MOUNT () {
umount $yumdir &>/dev/null
read -p "请输入IOS镜像文件路径:" iso
mount $iso $yumdir -o loop &>/dev/null
if [ $? != 0 ];then
echo "路径错误,请重新尝试!"
MOUNT
fi
}
MOUNT
# 创建NFS共享目录!
nfsdir=/etc/exports
echo "/yum *(ro)" >$nfsdir
# 刷新nfs服务,使共享目录生效!
exportfs -arv
# 配置tftp服务器
rpm -aq |grep tftp &>/dev/null
if [ $? != 0 ];then
echo "tftp服务安装中!"
yum install -y tftp-server &>/dev/null
sleep 2
echo "tftp安装完成!"
fi
#**********************************************************************
TFTP () {
cat << EOF
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -t -s -v /var/lib/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
EOF
}
TFTP >/etc/xinetd.d/tftp
#*********************************************************************
/etc/init.d/xinetd restart
netstat -ntlup |grep :69 &>/dev/null
if [ $? == 0 ];then
echo "tftp服务已正常启动!"
sleep 2
else
echo "tftp服务启动失败,请检查配置文件!!!"
fi
# 配置pxe启动文件
rpm -qa |grep syslinux &>/dev/null
if [ $? != 0 ];then
echo “syslinux服务安装中!”
yum install -y syslinux &>/dev/null
echo "syslinux安装完成!"
fi
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /yum/isolinux/* /var/lib/tftpboot/
CFG=/var/lib/tftpboot/pxelinux.cfg
if [ ! -e $CFG ];then
if [ ! -d $CFG ];then
rm -rf $CFG
mkdir -p $CFG
fi
else
mkdir -p $CFG
fi
cp /yum/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
#******************************************************************
default () {
cat << EOF
default CentOS
prompt 1
timeout 3
display boot.msg
menu background splash.jpg
menu title Welcome to CentOS 6.5!
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 CentOS
menu label ^CentOS release 6.5 (Final)
kernel vmlinuz
append initrd=initrd.img ks=nfs:${IP}:/ks/ks.cfg
EOF
}
default >/var/lib/tftpboot/pxelinux.cfg/default
#******************************************************************
# 使用nfs共享ks.cfg
read -p "请输入swap分区大小(单位MB):" SWAP
ksdir=/ks
if [ -e $ksdir ];then
if [ ! -d $ksdir ];then
rm -rf $ksdir
mkdir $ksdir -p
fi
else
mkdir $ksdir -p
fi
KS () {
cat << EOF
#platform=x86, AMD64, 鎴Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use NFS installation media
nfs --server=${IP} --dir=/yum
# Root password
rootpw --iscrypted $1$cjx1RvlK$/qYWNdhfUQIo8oX2aHJBW0
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# System keyboard
keyboard us
# System language
lang zh_CN
# 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=yes
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --asprimary --fstype="ext4" --size=200
part swap --asprimary --fstype="swap" --size=$SWAP
part / --asprimary --fstype="ext4" --grow --size=1
%packages
@additional-devel
@basic-desktop
@chinese-support
@debugging
@desktop-debugging
@desktop-platform
@desktop-platform-devel
@development
@dial-up
@directory-server
@eclipse
@emacs
@fonts
@general-desktop
@graphical-admin-tools
@graphics
@hardware-monitoring
@input-methods
@internet-applications
@internet-browser
@legacy-unix
@legacy-x
@mail-server
@network-file-system-client
@network-server
@network-tools
@office-suite
@performance
@remote-desktop-clients
@server-platform
@server-platform-devel
@storage-server
@system-admin-tools
@technical-writing
@tex
@virtualization
@virtualization-client
@virtualization-platform
@virtualization-tools
@x11
%end
EOF
}
KS >/$ksdir/ks.cfg
echo "/ks *(ro)" >>/etc/exports
exportfs -arv
# 搭建DHCP服务器
rpm -qa |grep dhcp &>/dev/null
if [ $? != 0 ];then
echo "dhcp服务安装中!"
yum install -y dhcp* &>/dev/null
echo "dhcp服务安装完成!"
fi
cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
#******************************************************
DHCP () {
cat << EOF
log-facility local7;
#以下配置是支持pxe启动的配置
next-server ${IP};
filename "/var/lib/tftpboot/pxelinux.0";
allow bootp;
allow booting;
subnet ${IP1}.0 netmask 255.255.255.0 {
range ${IP1}.50 ${IP1}.100;
option domain-name-servers ${IP};
option routers ${IP1}.1;
option broadcast-address ${IP1}.255;
default-lease-time 600;
max-lease-time 7200;
}
EOF
}
DHCP >/etc/dhcp/dhcpd.conf
#*****************************************************
/etc/init.d/dhcpd restart &>/dev/null
if [ $? != 0 ];then
echo "dhcp服务错误!请检查配置文件!"
exit 2
fi
service xinetd restart &>/dev/null
if [ $? != 0 ];then
echo "lftp服务错误!请检查配置文件!"
exit 2
fi
service nfs restart &>/dev/null
if [ $? != 0 ];then
echo "nfs服务错误!请检查配置文件!"
exit 2
else
echo "环境搭建完成,请测试!"
fi
}
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
# yum源配置部分
YUM () {
dir=/etc/yum.repos.d/
file=/etc/yum.repos.d/local.repo
yumdir=/yum
if [ -e $yumdir ];then
if [ ! -d $yumdir ];then
rm -rf $yumdir
mkdir $yumdir -p
else
umount $yumdir
fi
else
mkdir $yumdir -p
fi
read -p "请输入iso镜像文件路径:" iso
mount $iso $yumdir -o loop &>/dev/null
if [ $? != 0 ];then
echo "iso文件错误,请确认路径是否错误或文件是否存在!"
sh $0
fi
rm -rf ${dir}*
FILE () {
cat << EOF
[local.yum]
name=local-yum
baseurl=file:///yum
enabled=1
gpgcheck=0
EOF
}
FILE >$file
yum clean all &>/dev/null
yum list &>/dev/null
if [ $? != 0 ];then
echo "yum源配置失败,请检查配置文件!"
else
echo "yum源配置完成!"
fi
}
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
# 配置静态IP部分
IP () {
dhcp () {
cat << EOF
DEVICE=$ETH
BOOTPROTO=dhcp
ONBOOT=yes
EOF
}
dhcp >$ipfile
abcd () {
clear
echo "IP获取中,请稍后."
sleep 0.5
clear
echo "IP获取中,请稍后.."
sleep 0.5
clear
echo "IP获取中,请稍后..."
sleep 0.5
clear
}
for i in `seq 3`
do
abcd
done
service network restart >/dev/null
IP=`ifconfig $ETH|grep Bcast|cut -d ":" -f2|cut -d " " -f1`
BBB () {
MOS=`cat $ipfile|grep BOOTPROTO|cut -d "=" -f2`
echo "你目前的IP获取方式为${MOS}!"
echo "IP地址为${IP}"
read -p "是否要将其设置为静态IP模式?(yes/no)" i
case $i in
yes)
BOOT () {
cat << EOF
DEVICE=$ETH
BOOTPROTO=none
IPV6INIT=no
NM_CONTROLLED=no
ONBOOT=yes
IPADDR=$IP
NETMASK=255.255.255.0
GATEWAY=${IP1}.1
DNS1=${IP1}.1
DNS2=8.8.8.8
EOF
}
BOOT >$ipfile
bcd () {
clear
echo "模式替换中,请稍后."
sleep 0.5
clear
echo "模式替换中,请稍后.."
sleep 0.5
clear
echo "模式替换中,请稍后..."
sleep 0.5
clear
}
for i in `seq 3`
do
bcd
done
service network restart >/dev/null
echo "静态IP模式修改完成!"
echo "你的静态IP地址为:$IP"
read -p "是否留在该脚本?(y/n)" a
ABC () {
case $a in
y) clear
sh $0
;;
n) echo "感谢您的使用,再见!"
exit
;;
*) echo "输入有误,请重新输入!"
ABC
;;
esac
}
ABC
;;
no) echo "当前IP获取方式为dhcp!"
echo "感谢您的使用,再见!"
exit
;;
*) echo "输入有误,请重新输入!"
BBB
;;
esac
}
BBB
}
cat << EOF
1.kickstart
2.yum
3.ip
EOF
read -p "请输入编号:" num
case $num in
1) kickstart
;;
2) YUM
;;
3) IP
;;
*) echo "输入有误,请重新输入!"
sh $0
;;
esac
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com