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 "执行完成"