linux ks脚本,Linux shell编写脚本部署pxe网络装机

#!/bin/bash

#该脚本用于自动化部署pxe网络装机

#作者:雨中落叶

#博客:https://www.cnblogs.com/yuzly/

#关闭防火墙,selinux安全机制

service iptables stop&>/dev/nullsetenforce0 &>/dev/null#获得当前主机的IP地址

IP=$(ifconfig | head -2 | grep "inet addr" | awk '{print $2}'|awk -F: '{print $2}')

#获得当前主机的网络号

NETIP=$(echo $IP |awk -F. '{print $1"."$2"."$3}')

#获得当前主机的子网掩码

MASK=$(ifconfig |head -2 | tail -1 |awk '{print $4}'|awk -F: '{print $2}')

#挂载光盘mount /dev/sr0 /mnt &>/dev/nulln=$(ls /mnt/$Date |wc -l)if [ $n -eq 0]then

echo "没有挂载光盘,请挂载光盘,退出脚本执行状态!"exitfi#配置本地yum仓库rm -fr /etc/yum.repos.d/*cat >>/etc/yum.repos.d/yuzly.repo<

[yuzly]

name=yuzly

baseurl=file:///mnt

enabled=1

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

OK

yum clean all &>/dev/null

#搭建ftp站点

if [ -d /etc/vsftpd ]

then

#把光盘文件复制到ftp站点下

mkdir /var/ftp/redhat6

echo "正在复制光盘文件........"

cp -rf /mnt/* /var/ftp/redhat6

echo "完成复制......."

#启动ftp服务

service vsftpd restart &>/dev/null

else

echo "该系统没有安装ftp服务,正在安装,请稍等....."

yum install -y vsftpd &>/dev/null

if [ ! -d /etc/vaftpd ]

then

echo "安装ftp失败,退出脚本执行状态!"

exit

fi

#把光盘文件复制到ftp站点下

mkdir /var/ftp/redhat6

echo "正在复制光盘文件........"

cp -rf /mnt/* /var/ftp/redhat6

echo "完成复制......."

#启动ftp服务

service vsftpd start &>/dev/null

fi

#搭建tftp站点

if [ -f /etc/xinetd.d/tftp ]

then

#修改tftp配置文件,tftp默认是禁用,开启tftp功能

tftp_status=$(grep disable /etc/xinetd.d/tftp |awk -F= '{print $2}')

sed -i "s/$tftp_status/no/" /etc/xinetd.d/tftp

#启动tftp服务

service xinetd restart &>/dev/null

else

echo "该系统没有安装tftp服务,正在安装,请稍等....."

yum install -y tftp-server &>/dev/null

if [ ! -f /etc/xinetd.d/tftp ]

then

echo "安装tftp失败,退出脚本执行状态!"

exit

fi

#修改tftp配置文件,tftp默认是禁用,开启tftp功能

tftp_status=$(grep disable /etc/xinetd.d/tftp |awk -F= '{print $2}')

sed -i "s/$tftp_status/no/" /etc/xinetd.d/tftp

#启动tftp服务

service xinetd start &>/dev/null

fi

#部署客户端主机无盘启动时所需的Linux内核、初始化镜像文件

cd /mnt/images/pxeboot

cp vmlinuz initrd.img /var/lib/tftpboot

#准备客户端主机无盘启动时所需的PXE引导程序(pxelinux.0)、启动菜单文件

#安装syslinux软件包(支持PXE功能)

yum -y install syslinux &>/dev/null

if [ ! -d /usr/share/syslinux ]

then

echo "没有安装成功syslinux,退出脚本执行状态!"

exit

fi

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

#建立启动菜单文件

mkdir /var/lib/tftpboot/pxelinux.cfg

cat >>/var/lib/tftpboot/pxelinux.cfg/default<

default auto

prompt 0

label auto

kernel vmlinuz

append ks=ftp://$IP/redhat6/ks.cfg initrd=initrd.img devfs=nomount ramdisk_size=8192

label linux text

kernel vmlinuz

append text initrd=initrd.img devfs=nomount ramdisk_size=8192

label linux rescue

kernel vmlinuz

append rescue initrd=initrd.img devfs=nomount ramdisk_size=8192

OK

#修改default文件权限

chmod 644 /var/lib/tftpboot/pxelinux.cfg/default

#配置DHCP服务

if [ -f /etc/dhcp/dhcpd.conf ]

then

cat >/etc/dhcp/dhcpd.conf<

subnet $NETIP.0 netmask $MASK {

range $NETIP.50 $NETIP.100;

option domain-name-servers ns1.internal.example.org;

option domain-name "internal.example.org";

option routers $IP;

default-lease-time 600;

max-lease-time 7200;

next-server $IP;

filename "pxelinux.0";

}

OK

#启动dhcp服务

service dhcpd restart &>/dev/null

else

echo "该系统没有安装dhcp服务,正在安装,请稍等....."

yum install -y dhcp &>/dev/null

if [ ! -f /etc/dhcp/dhcpd.conf ]

then

echo "安装dhcp失败,退出脚本执行状态!"

exit

fi

cat >/etc/dhcp/dhcpd.conf<

subnet $NETIP.0 netmask $MASK {

range $NETIP.50 $NETIP.100;

option domain-name-servers ns1.internal.example.org;

option domain-name "internal.example.org";

option routers $IP;

default-lease-time 600;

max-lease-time 7200;

next-server $IP;

filename "pxelinux.0";

}

OK

#启动dhcp服务

service dhcpd start &>/dev/null

fi

#配置实现客户端无人值守安装系统

#安装system-config-kickstart软件包

echo "正在安装system-config-kickstart软件包"

yum -y install system-config-kickstart &>/dev/null

echo "安装system-config-kickstart软件包完成!"

#配置ks.cfg文件

cat >/var/ftp/redhat6/ks.cfg<

#platform=x86, AMD64, 或 Intel EM64T

#version=DEVEL

# Firewall configuration

firewall --disabled

# Install OS instead of upgrade

install

# Use network installation

url --url="ftp://$IP/redhat6"

# Root password

rootpw --iscrypted $1$EdNye4v8$k9lKFbLL44WbEYorBFU/S1

# 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 --enforcing

# Installation logging level

logging --level=info

OK

echo "pxe服务端部署完成!"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PXE(Preboot Execution Environment)是一种网络引导技术,可以通过网络从远程服务器上启动和安装操作系统。编写一个PXE装机Shell脚本可以帮助简化和自动化这个过程。下面是一个简单的PXE装机Shell脚本的示例: ```shell #!/bin/bash # 设置PXE服务器的IP地址和TFTP根目录 PXE_SERVER_IP="192.168.1.100" TFTP_ROOT="/var/lib/tftpboot" # 设置要安装的操作系统镜像文件名 OS_IMAGE="ubuntu-20.04.iso" # 设置客户端的MAC地址 CLIENT_MAC="00:11:22:33:44:55" # 创建PXE配置文件 echo "DEFAULT menu.c32 PROMPT 0 TIMEOUT 300 ONTIMEOUT local MENU TITLE PXE Boot Menu LABEL install MENU LABEL Install Ubuntu KERNEL ubuntu-installer/amd64/linux APPEND vga=788 initrd=ubuntu-installer/amd64/initrd.gz ks=http://${PXE_SERVER_IP}/ks.cfg LABEL local MENU LABEL Boot from local disk LOCALBOOT 0" > ${TFTP_ROOT}/pxelinux.cfg/default # 创建Kickstart配置文件 echo "# 安装语言 lang en_US.UTF-8 # 网络配置 network --bootproto=dhcp --device=eth0 # 安装源 url --url=http://${PXE_SERVER_IP}/ubuntu # 设置root密码 rootpw --iscrypted $6$z9X3s... # 安装软件包 %packages @^ubuntu-desktop firefox gimp %end" > ${TFTP_ROOT}/ks.cfg # 将操作系统镜像文件复制到TFTP根目录 cp ${OS_IMAGE} ${TFTP_ROOT}/ubuntu/${OS_IMAGE} # 启动TFTP和DHCP服务 systemctl start tftp systemctl start dhcp # 添加客户端MAC地址到DHCP配置文件 echo "host pxeclient { hardware ethernet ${CLIENT_MAC}; fixed-address 192.168.1.200; }" >> /etc/dhcp/dhcpd.conf # 重启DHCP服务 systemctl restart dhcp ``` 这个脚本的功能是创建PXE配置文件、Kickstart配置文件,并将操作系统镜像文件复制到TFTP根目录。然后启动TFTP和DHCP服务,并将客户端的MAC地址添加到DHCP配置文件中,最后重启DHCP服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值