shell脚本编写PXE无人值守安装

这个shell脚本在Linux系统中实现了无人值守安装,包括创建仓库、安装HTTP、DHCP和FTP服务,配置DHCP和tftp-server服务,设置syslinux,复制系统文件,并调整相关服务和配置文件,以实现自动安装流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

shell脚本编写的LInux系统下进行无人值守安装,然后几乎都是运用set的语法。
代码如下:


#!/bin/bash

#判断是否有仓库
test -f /etc/yum.repos.d/base.repo
if [ $? -eq 0 ]
then
        echo "仓库已经存在"
else
        cd /etc/yum.repos.d
        touch base.repo
        cat >> base.repo <<KOF
[baseos]
name=baseos
baseurl=/mnt/BaseOS
gpgcheck=0
[appstream]
name=appstream
baseurl=/mnt/AppStream
gpgcheck=0
KOF
fi
mount /dev/sr0 /mnt &> /dev/null
echo "挂载成功"
#检测HTTP服务是否安装
rpm -qa | grep httpd &> /dev/null
if [ $? -eq 0 ]
then
        echo "http服务已经安装"
        systemctl start httpd

else
        dnf install httpd -y

        systemctl start httpd
        echo "http服务安装完成"

fi
#检测DHCP服务是否安装
rpm -qa | grep dhcp-server &> /dev/null
if [ $? -eq 0 ]
then
        echo "dhcp服务已经安装"

else
        dnf install dhcp-server -y &> /dev/null
        echo "dhcp服务安装完成"
fi
#检测VSftpd服务是否安装
rpm -qa | grep vsftpd &> /dev/null
if [ $? -eq 0 ]
then
        echo "ftp服务已经安装"
        systemctl start vsftpd

else
        dnf install vsftpd -y &> /dev/null
        echo "ftp服务安装完成"
        systemctl start vsftpd
fi


#关闭防火墙
systemctl stop firewalld


#修改dhcp的配置文件---/etc/dhcp/dhcpd.conf
cat >> /etc/dhcp/dhcpd.conf << KOF
                filename "pxelinux.0";
                next-server 192.168.171.195;
                subnet 192.168.171.0 netmask 255.255.255.0 {
                        option routers 192.168.171.1;
                        option subnet-mask 255.255.255.0;
                        option domain-name-servers 114.114.114.114;
                        range dynamic-bootp 192.168.171.200 192.168.171.254;
                        default-lease-time 60;
                        max-lease-time 60;
                }
KOF

#启动dhcp服务
systemctl start dhcpd

#检测tftp-server服务是否安装
rpm -qa | grep tftp-server &> /dev/null
if [ $? -eq 0 ]
then
        echo "tftp-server服务已经安装"
        systemctl start tftp.socket

else
        dnf install tftp-server -y &> /dev/null
        echo "tftp-server服务安装完成"
        systemctl start tftp.socket
fi

#挂载目录
mkdir /var/lib/tftpboot/pxelinux.cfg
cd /var/lib/tftpboot/pxelinux.cfg

#检测syslinux服务是否安装
rpm -qa | grep syslinux &> /dev/null
if [ $? -eq 0 ]
then
        echo "syslinux服务已经安装"


else
        dnf install syslinux -y &> /dev/null
        echo "syslinux服务安装完成"

fi

#转到该目录下复制文件
cd /var/lib/tftpboot/

cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/
cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/
cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

#修改权限
cd /var/lib/tftpboot/pxelinux.cfg
chmod 777 default

#修改/var/lib/tftpboot/pxelinux.cfg/default下的配置
sed -i '1c\default linux ' default
sed -i '64c\append initrd=initrd.img ks=http://192.168.171.195/ks.cfg ' default

#转到 var/lib/tftpboot目录下复制响应文件
cd
cp anaconda-ks.cfg /var/www/html/ks.cfg

sed -i 's/^repo/#&/' /var/www/html/ks.cfg
sed -i '6a\url --url="http://192.168.171.195/pub"' /var/www/html/ks.cfg
sed -i '7a\autopart --type="lvm"' /var/www/html/ks.cfg



sed -i  's/^part/#&/' /var/www/html/ks.cfg
#sed -i 's/^logvol/#&/' /var/www/html/ks.cfg
#sed -i 's/^volgroup/#&/' /var/www/html/ks.cfg


sed -i  's/^cdrom/#&/' /var/www/html/ks.cfg

sed -i  '/part swap/a timezone Asia/Shanghai --isUtc --nontp' /var/www/html/ks.cfg

sed -i '$a\reboot' /var/www/html/ks.cfg


#转到 html目录下进行复制
cd /var/www/html
cp /mnt/isolinux/ldlinux.c32 /var/lib/tftpboot/

cd  /var/lib/tftpboot/
cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/

cd /var/www/html
chmod 777 ks.cfg
 mkdir pub
 mount /dev/sr0 /var/www/html/pub/


#修改配置文件 /etc/vsftpd/vsftpd.conf
sed -i '/userlist_enable/a\anon_umask=022' /etc/vsftpd/vsftpd.conf


#修改权限
cd /var/ftp
chmod 777 pub/

setenforce 0

#修改匿名上传布尔值
#cd /var
#getsebool -a | grep ftpd_anon_write &> /dev/null
#cd /var/ftp
#setsebool ftpd_anon_write on

#修改匿名上传的上下文权限
#chcon -t public_content_rw_t pub/

#修改配置文件 /etc/vsftpd/vsftpd.conf

sed -i '12c\anonymous_enable=YES' /etc/vsftpd/vsftpd.conf


cp /var/www/html/pub  /var/ftp/pub
cp /var/www/html/ks.cfg   /var/ftp/ks.cfg

mount /dev/sr0 /var/ftp/pub/


echo "执行完成"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值