pxe之全自动装机脚本
  zZHnZavbRDNq 2023年11月02日 40 0


##Linux中的pxe全自动装机shell脚本


#!/bin/bash
#Mr.liushuai






function Yum (){
echo "准备搭建yum仓库中........"
sleep 2
umount /dev/sr0 &> /dev/null
if [ $? -eq 0 ];then
        echo "正在检查光盘组件的完整性ing......."
fi
[ -d /media/cdrom ] || mkdir -p /media/cdrom
if [ $? -eq 0 ];then
        echo "/media/cdrom已经定位成功"
fi
mount /dev/sr0 /media/cdrom &>/dev/null
if [ $? -ne 0 ];then
        echo -e "光盘未检测到\n请插入光盘\n并重新启动该脚本......"
        exit
fi
[ -d /etc/yum.repos.d ] || mkdir -p /etc/yum.repos.d
if [ $? -eq 0 ];then
        echo "准备进入yum仓库配置文件中"
fi
cd /etc/yum.repos.d
if [ $? -eq 0 ];then
        echo "进入yum仓库配置文件成功"
else
        echo "进入yum仓库配置文件失败"
fi
[ -d /tmp ] || mkdir /tmp
if [ $? -eq 0 ];then
        echo -e "连/tmp都敢删\n不,我不同意\n创建/tmp中......\n创建/tmp成功"
else
        echo -e "检测/tmp是否正常\n/tmp正常\n可以继续"
fi
mv * /tmp
if [ $? -eq 0 ];then
        echo "清除yum仓库文件成功"
fi
cat > /etc/yum.repos.d/localyum.repo << kof
[local]
name=local
baseurl= file:///media/cdrom/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
kof
if [ $? -eq 0 ];then
        echo "重新生成yum配置文件成功"
fi
yum -y clean all &> /dev/null
if [ $? -eq 0 ];then
        echo "清除yum缓存成功"
else
        echo "清除yum缓存失败"
fi
yum makecache &> /dev/null
if [ $? -eq 0 ];then
        echo "重新生成yum缓存成功"
else
        echo -e "重新生成yum缓存失败\n请手动生成yum缓存\n感谢你的>使用"
fi

}
function ftp (){
echo "正在安装ftp服务......."
yum -y install vsftpd &> /dev/null
if [ $? -eq 0 ];then
	echo "正在配置ftp服务...."
else
	echo "安装失败,请手动配置yum源......"
fi
sleep 2
mkdir -p /var/ftp/centos6
if [ $? -eq 0 ];then
	echo "配置ftp成功....."
else
	echo "配置失败....."
fi
echo "准备复制系统安装源,可能需要较长时间请耐心等候....."
cp -rp /media/cdrom/* /var/ftp/centos6/
if [ $? -eq 0 ];then
	echo "系统安装源复制成功"
else
	echo "请检查光盘是否挂载...."
	echo "脚本即将退出......"
	sleep 2
	exit
fi
}
function tftp (){
echo "准备安装tftp服务......."
sleep 1
yum -y install tftp-server &>/dev/null
if [ $? -eq 0 ];then
	echo "安装tftp服务成功"
	sleep 1
else
	echo "安装tftp失败,请手动重新配置yum仓库"
	sleep 1
fi
echo "正在配置tftp服务,请稍等......"
sleep 1
cat > /etc/xinetd.d/tftp << kof
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = no
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}
kof
if [ $? -eq 0 ];then
	echo "tftp服务搭建成功"
else
	echo "tftp服务搭建失败"
fi
}
function kernel (){
echo "准备内核分发文件....."
sleep 1
cd /var/ftp/centos6/isolinux
cp vmlinuz initrd.img /var/lib/tftpboot/
yum -y install syslinux &>/dev/null
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
cp /var/ftp/centos6/isolinux/isolinux.cfg /var/lib/tftpboot
chmod 644 /var/lib/tftpboot/isolinux.cfg
cat > /var/lib/tftpboot/isolinux.cfg << kof
default linux
prompt 0
#timeout 600

display boot.msg

label linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=ftp://192.168.$ip.$num/ks.cfg
label text
  menu label Install system with ^basic video driver
  kernel vmlinuz
  append text initrd=initrd.img xdriver=vesa nomodeset
label rescue
menu label ^Rescue installed system
  kernel vmlinuz
  append rescue initrd=initrd.img rescue
label local
  menu label Boot from ^local drive
  localboot 0xffff
label memtest86
  menu label ^Memory test
  kernel memtest
  append -
kof
mkdir -p /var/lib/tftpboot/pxelinux.cfg
mv /var/lib/tftpboot/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default



}
function dhcp (){
echo "正在搭建dhcp服务,请稍等....."
sleep 1
yum -y install dhcp &> /dev/null
echo "dhcp服务搭建成功"
cat > /etc/dhcp/dhcpd.conf << kof
option domain-name "liushuai";
option domain-name-servers 192.168.$ip.2;

default-lease-time 21600;
max-lease-time 43200;
subnet 192.168.$ip.0 netmask 255.255.255.0 {
  range 192.168.$ip.3 192.168.$ip.220;
  option routers 192.168.$ip.2;
  next-server 192.168.$ip.$num;
  filename "pxelinux.0";
}
kof
}
function system (){
echo "配置系统环境中,可能需要几分钟,请稍等....."
yum -y install system-config-kickstart &>/dev/null
touch /var/ftp/ks.cfg
chmod 777 /var/ftp/ks.cfg
cat > /var/ftp/ks.cfg << kof
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
\# Firewall configuration
unsupported_hardware
firewall --disabled
\# Install OS instead of upgrade
install
\# Use network installation
url --url="ftp://192.168.$ip.$num/centos6"
\# Root password
rootpw --iscrypted \$1\$AxbjnfQ1$.Q1wlFp2rNWOveaHJ3cje0
\# System authorization information
auth  --useshadow  --passalgo=sha512
\# Use text mode install
text
\# System keyboard
keyboard us
\# System language
lang en_US
\# SELinux configuration
selinux --disabled
\# Do not configure the X Window System
skipx
\# Installation logging level
logging --level=info
\# Reboot after installation
reboot
\# System timezone
timezone  Africa/Abidjan
\# Network information
network  --bootproto=dhcp --device=eth0 --onboot=on
\# System bootloader configuration
bootloader --location=mbr
\# Clear the Master Boot Record
zerombr
\# Partition clearing information
clearpart --all --initlabel 
\# Disk partitioning information
part /boot --fstype="ext4" --size=200
part swap --fstype="swap" --size=2048
part / --fstype="ext4" --grow --size=1

%post --interpreter=/bin/bash
rpm -rf /etc/yum.repos.d/*
echo '
[centos6]
name=centos6.5
baseurl=ftp://192.168.$ip.$num/centos6/
gpgcheck=0
enabled=1
' > /etc/yum.repos.d/centos6.repo
%end

%packages
@chinese-support

%end
kof
}
function fuwu (){
service dhcpd restart
service vsftpd restart
service xinetd restart
}
sleep 1
clear
echo "请使用最新的克隆机"
sleep 2
echo "由于该脚本未作回滚,第一次运行该脚本失败后,请勿再运行,请换新的克隆机再运行"
sleep 2
echo "请使用静态IP地址,并且连接xshell,如果不是请立即停止该脚本"
sleep 2
echo "请关闭其他的DHCP服务器、ftp服务器、tftp服务器、PXE服务器,避免发生冲突,如果未关闭请立即停止该脚本"
sleep 2
echo "请确保虚拟机中”虚拟网络编辑器“中相应的net模式下关闭dhcp自动分配"
sleep 2
echo "请确保虚拟机中”虚拟网络编辑器“中相应的net模式下的网段与你的静态处于同一网段,如果不是请立即停止该脚本"
sleep 2
echo "请确保虚拟机防火墙和SELinux已经关闭"
sleep 2
clear
read -p "请输入你的网段(如你是192.168.18.0网段请输入18):" ip
read -p "请输入你在${ip}网段的最后一段数字(如192.168.18.22,那么请输入22):" num
sleep 2
Yum
ftp
tftp
kernel
dhcp
system
fuwu
echo "请确保测试机与该服务器在同一网段就是在同一个net模式下"
sleep 2
echo "请确认测试机未安装任何系统"
sleep 2
echo "请确保测试机防火墙和SELinux已经关闭"
sleep 2
echo "请将测试机的硬件光驱移除掉,否则有可能会影响实验效果"
sleep 2
echo "账户名:root,密码:123456"
sleep 2
echo "请打开测试机,感谢你的使用......"
sleep 2
exit


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

zZHnZavbRDNq