pxe+tftp+dhcp+kickstart+http 服务搭建脚本

#!/bin/bash
#system OS auto install 

#Mr.luo

#exit 2:not mount system iso

pxe_dir=/mnt/images/pxeboot
http_dir=/var/www/html
dhcp_dir=/etc/dhcp

        echo "you has config dhcpd.conf."
        read -p "are you sure to rewrite it,enter y or n: " option
        option=`echo $option|tr A-Z a-z`
        while ! [ $option == y -o $option == n -o $option == yes -o $option == no ];do
        read -p "wrong choose.enter again: " option
        option=echo $option|tr A-Z a-z
        done
        if [ $option == y -o $option == yes ];then
                echo "dhcp setting..."
                read -p "enter a dhcp subnet and netmask:" ip_sub net_mask
                while  [ -z $ip_sub ] || [ -z $net_mask ];do
                        read -p "wrong,enter again:" ip_sub net_mask
                        done
                read -p "enter a dhcp range:" range_begin range_end
                while  [ -z $range_begin ] || [ -z $range_end ];do
                        read -p "wrong,enter again:" range_begin range_end
                        done
                read -p "enter a dhcp router:" dhcp_router
                        done
                read -p "enter a dhcp next_server:" next_server
                while  [ -z $next_server ];do
                        read -p "wrong,enter again:" next_server
                        done
        else
        ip_sub=`grep subnet -m1 $dhcp_dir/dhcpd.conf |awk ‘{print $2}‘`
        net_mask=`grep subnet -m1 $dhcp_dir/dhcpd.conf |awk ‘{print $4}‘`
        range_begin=`grep range -m1 $dhcp_dir/dhcpd.conf |awk ‘{print $2}‘`
        range_end=`grep range -m1 $dhcp_dir/dhcpd.conf |awk ‘{print $3}‘|sed ‘s/;//‘`
        dhcp_router=`grep routers -m1 $dhcp_dir/dhcpd.conf |awk ‘{print $3}‘|sed ‘s/;//‘`
        next_server=`grep next-server -m1 $dhcp_dir/dhcpd.conf |awk ‘{print $2}‘|sed ‘s/;//‘`
        fi
else
echo "dhcp setting..."
                read -p "enter a dhcp subnet and netmask:" ip_sub net_mask
                while  [ -z $ip_sub ] || [ -z $net_mask ];do
                        read -p "wrong,enter again:" ip_sub net_mask
                        done
                read -p "enter a dhcp range:" range_begin range_end
                while  [ -z $range_begin ] || [ -z $range_end ];do
                        read -p "wrong,enter again:" range_begin range_end
                        done
                read -p "enter a dhcp router:" dhcp_router
                while  [ -z $dhcp_router ];do
                        read -p "wrong,enter again:" dhcp_router
                        done
                read -p "enter a dhcp next_server:" next_server
                while  [ -z $next_server ];do
                        read -p "wrong,enter again:" next_server
                        done
fi

#check dhcp and install it.
dhcp_setting () {
rpm -q dhcp >> /dev/null || yum install -y dhcp
cat << EOF > /etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet $ip_sub netmask $net_mask {
  range $range_begin $range_end;
  option routers $dhcp_router;
  next-server $next_server;
  filename="pxelinux.0";
}
EOF
#if you enter wrong parameter,you can config /etc/dhcp/dhcpd.conf.
}

if  grep default-lease-time $dhcp_dir/dhcpd.conf >>/dev/null && grep max-lease-time $dhcp_dir/dhcpd.conf >>/dev/null && grep log-facility $dhcp_dir/dhcpd.co
#!/bin/bash
#system OS auto install 
#exit 2:not mount system iso

pxe_dir=/mnt/images/pxeboot
http_dir=/var/www/html
dhcp_dir=/etc/dhcp

#dhcp server config
#check dhcpd.conf 
        echo "you has config dhcpd.conf."
        read -p "are you sure to rewrite it,enter y or n: " option
        option=`echo $option|tr A-Z a-z`
        while ! [ $option == y -o $option == n -o $option == yes -o $option == no ];do
        read -p "wrong choose.enter again: " option
        option=echo $option|tr A-Z a-z
        done
#set dhcp global value
        if [ $option == y -o $option == yes ];then
                echo "dhcp setting..."
                read -p "enter a dhcp subnet and netmask:" ip_sub net_mask
                while  [ -z $ip_sub ] || [ -z $net_mask ];do
                        read -p "wrong,enter again:" ip_sub net_mask
                        done
                read -p "enter a dhcp range:" range_begin range_end
                while  [ -z $range_begin ] || [ -z $range_end ];do
                        read -p "wrong,enter again:" range_begin range_end
                        done
                read -p "enter a dhcp router:" dhcp_router
                        done
                read -p "enter a dhcp next_server:" next_server
                while  [ -z $next_server ];do
                        read -p "wrong,enter again:" next_server
                        done
        else
        ip_sub=`grep subnet -m1 $dhcp_dir/dhcpd.conf |awk ‘{print $2}‘`
        net_mask=`grep subnet -m1 $dhcp_dir/dhcpd.conf |awk ‘{print $4}‘`
        range_begin=`grep range -m1 $dhcp_dir/dhcpd.conf |awk ‘{print $2}‘`
        range_end=`grep range -m1 $dhcp_dir/dhcpd.conf |awk ‘{print $3}‘|sed ‘s/;//‘`
        dhcp_router=`grep routers -m1 $dhcp_dir/dhcpd.conf |awk ‘{print $3}‘|sed ‘s/;//‘`
        next_server=`grep next-server -m1 $dhcp_dir/dhcpd.conf |awk ‘{print $2}‘|sed ‘s/;//‘`
        fi
else
echo "dhcp setting..."
                read -p "enter a dhcp subnet and netmask:" ip_sub net_mask
                while  [ -z $ip_sub ] || [ -z $net_mask ];do
                        read -p "wrong,enter again:" ip_sub net_mask
                        done
                read -p "enter a dhcp range:" range_begin range_end
                while  [ -z $range_begin ] || [ -z $range_end ];do
                        read -p "wrong,enter again:" range_begin range_end
                        done
                read -p "enter a dhcp router:" dhcp_router
                while  [ -z $dhcp_router ];do
                        read -p "wrong,enter again:" dhcp_router
                        done
                read -p "enter a dhcp next_server:" next_server
                while  [ -z $next_server ];do
                        read -p "wrong,enter again:" next_server
                        done
fi

#check dhcp and install it.
dhcp_setting () {
rpm -q dhcp >> /dev/null || yum install -y dhcp
cat << EOF > /etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet $ip_sub netmask $net_mask {
  range $range_begin $range_end;
  option routers $dhcp_router;
  next-server $next_server;
  filename="pxelinux.0";
}
EOF
#if you enter wrong parameter,you can config /etc/dhcp/dhcpd.conf.
}

#tftp server check,install and set.
tftp_server () {
rpm -q tftp-server >> /dev/null || yum install -y tftp-server
rpm -q syslinux >> /dev/null || yum install -y syslinux
if [ -d /mnt/isolinux ] && [ -d /mnt/images ];then
        cp -f $pxe_dir/{initrd.img,vmlinuz} /var/lib/tftpboot/
        cp -f /mnt/isolinux/{boot.msg,vesamenu.c32,splash.jpg} /var/lib/tftpboot/
#pxelinux file copy
        cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
        [ -d /var/lib/tftpboot/pxelinux.cfg ] || mkdir /var/lib/tftpboot/pxelinux.cfg
        cp  /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
        sed -i ‘0,/append\ initrd=initrd.img/ s/append\ initrd=initrd.img/append\ initrd=initrd.img\ ks=http:\/\/‘$next_server‘\/ks.cfg/‘ /var/lib/tftpboot/
pxelinux.cfg/default
        echo "pxeboot copy finished."
else
echo "you should mount system iso to /mnt/ first."
exit 2
fi
}

linux_version=`cat /mnt/RELEASE-NOTES-en-US.html |grep title|awk ‘{print $1 $2}‘|awk -F">" ‘{print $2}‘`
#system iso http repo
iso_web () {
rpm -q httpd >> /dev/null  || yum install -y httpd
[ -d $http_dir/$linux_version ] || mkdir $http_dir/$linux_version
mount --bind /mnt/ $http_dir/$linux_version
}

#config kickstart
system_install () {
cat << EOF > $http_dir/ks.cfg
install
url --url="http://$next_server/$linux_version/"
lang en_US.UTF-8
keyboard us
network --onboot no --device eth0 --bootproto dhcp --noipv6
rootpw --plaintext 123456
authconfig --enableshadow --passalgo=sha512
graphical
firstboot --disable
bootloader --append="crashkernel=auto rhgb quiet" --location=mbr --driveorder="sda"
selinux --disabled
logging --level=info
reboot
timezone --utc Asia/Shanghai
zerombr
clearpart --all --initlabel
part /boot --fstype ext4 --size=100
part swap --fstype swap --size=2048
part pv.01 --size=1 --grow
volgroup vg_root pv.01
logvol / --vgname=vg_root --fstype ext4 --size=1 --grow --name=lv_root
%packages --nobase
@core
%end
EOF
echo "anaconda finished"
}

dhcp_setting
tftp_server
iso_web
system_install
时间: 2024-10-08 07:18:52

pxe+tftp+dhcp+kickstart+http 服务搭建脚本的相关文章

centos 6.x下pxe+tftp+http+kickstart无人值守安装操作系统

1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机

CentOS6.5下网络启动服务器安装和配置方法(pxe+tftp+dhcpd+kickstart)

背景: 在大规模安装服务器时,需要批量自动化方法来安装服务器,来减少日常的工作量,但是批量自动化安装服务器的基础是网络启动服务器(bootserver),下面就是网络启动服务器的安装和配置方法,供大家参考! Centos7以前的操作系统因为xinetd和TFTP版本的问题(版本过低)在安装后在PXE装机时会出现无法连接TFTP服务器的问题,建议安装TFTP4.0以上的版本可完成本实验 Centos7以下版本可以完成本实验,Centos7及以上版本配置环境同以往版本不同,另见博客. 术语解释: P

ftp服务搭建脚本和客户端ftp自动上传脚本

linux服务器搭建ftp服务脚本(在centos6.5和centos7上测试通过)(该脚本没有进行判断,需要自行清理环境)(该脚本只允许上传不允许下载,不允许使用匿名用户和本地用户登录) 安装脚本 #!/bin/bashsource /etc/rc.d/init.d/functions#安装vsftpdrpm -q vsftpdif [ $? -ne 0 ];thenyum install -y vsftpdfi#备份主配置文件cp /etc/vsftpd/ftpusers{,.bak}cp

kickstart无人值守,PXE+TFTP+FTP+DHCP

Centos6.5kickstart无人值守安装 方法:Vsftpd+TFTP+DHCP+Kickstart+PXE 一:环境 一台已经装好操作系统的机子(192.168.1.5)和一台未装操作系统的机子 1.未装操作系统的机子首先做 raid,以 dell r710 为例,6 块硬盘,一般两块做 raid1, 剩下四块做 raid5. 2. 已经装了操作系统的机子首先检查是否安装 vsftpd,dhcpd,tftp,若没装则依次安装,关闭 iptables,selinux. /etc/init

Kickstart+NFS+DHCP+PXE+TFTP全自动化安装linux

首先不敢说是原创,是经过网络搜索总结出的比较可靠稳定的设置方法及内容. 安装过程中需要注意的事项,这在其他教程中涉及很少,给初学者造成一定困难. 本教程中的ks.cfg文件严格来说是修改系统中存在的anaconda.cfg文件. 本文中所用系统为RHEL6.4,64位操作系统. 本文中所有操作均在虚拟机中实现,为了达到更好的效果,虚拟机网络采用内部网络.主要是为了避免系统直接给它windows系统服务给它自动分配地址,我们要用linux主机的dhcp服务分配地址. 请关闭防火墙.未关闭会连接超时

PXE环境下安装系统(DHCP+TFTP+HTTP+kickstart)

简单的说,这就是一个通过PEX网卡自动安装系统的过程.整个启动的过程大概可以理解为这样:计算机从PEX网卡设备启动,通过网卡与DHCP服务之间的4次互相广播后获得DHCP服务器提供的IP地址,并且DHCP服务器会告诉该网卡TFTP服务的位置,从而使PXE网卡可以获得"pxelinux.0"的启动文件,然后通过该文件可以读取TFTP服务器中的一些相应的配置文件,从而使该计算机可以进入系统安装界面,而这里我们想通过自动化的方法安装,所以我们就需要kickstart文件,而为了能够获得源,在

DHCP+TFTP+HTTP+kickstart实现PXE自动化部署系统Centos

前提:对DHCP,tftp-server,httpd有一定了结,本文将略过对服务的讲解和安装过程,主要讲通过这三个服务来实现PXE服务器的搭建过程. 准备工作: 安装软件包: 安装制作ks.cfg文件工具(图形界面下):yum-y system-config-kickstart 安装服务:yum -y installdchp tftp-server httpd 安装syslinux:yum -yinstall syslinux 或者使用下面的安装方法一次性全部安装: yum -y install

pxe+tftp+kickstart+dhcp+apache无人值守安装centos

一.安装环境 centos6.5  IP:192.168.100.11/24  GW:192.168.100.1 关闭iptables.selinux 二.需要安装组件 dhcp服务器 tftp服务器 kickstart生成的ks.cfg配置文件 提供安装镜像的httpd服务器 三.安装 1安装dhcp服务器       #yum install -y dhcp        #cp -a /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp

pxe自动安装redhat7.0服务的搭建与配置

一.简单介绍 PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由