shell脚本一键部署自动化装机(PXE无人值守)

  • 一、PXE无人值守自动化装机
  • 二、使用shell脚本一键部署

一、PXE无人值守自动化装机

详情请点击:PXE及无人值守

二、使用shell脚本一键部署

#!/bin/bash
#查看是否有本地yum源,没有则创建本地yum源
cd /etc/yum.repos.d
if [ ! -e local.repo ]
then
mkdir repos.bak
mv *.repo repos.bak
echo '[local]
name=local
baseurl=file:///mnt
gpgcheck=0
enabled=1' > local.repo
fi
#删除yum缓存并更新
yum clean all && yum makecache
#进行挂载并下载相关服务文件和程序
mount /dev/sr0 /mnt
yum -y install tftp-server xinetd dhcp vsftpd syslinux
#开启TFTP服务,并开启多台一起连接功能
sed -i -e "10 s/yes/no/" -e "14 s/yes/no/" /etc/xinetd.d/tftp
#开启tftp和xinetd
systemctl start tftp
systemctl start xinetd
#拷贝一份模板文件至/etc/dhcp/目录下,并改名为dhcpd.conf
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
#修改分配网段地址
sed -i -e "32 s/10.254.239.0/192.168.184.0/" -e "32 s/224/0/" /etc/dhcp/dhcpd.conf
#修改地址池
sed -i -e "33 s/10.254.239.10/192.168.184.100/" -e "33 s/10.254.239.20/192.168.184.200/" /etc/dhcp/dhcpd.conf
#默认网关指向本机TFTP服务器的IP地址
sed -i "34c option routers 192.168.184.50;" /etc/dhcp/dhcpd.conf
#禁用DNS动态更新,并指定服务器地址(本机IP),指定要下载的PXE引导程序文件
sed -i "14 s/^#//" /etc/dhcp/dhcpd.conf
sed -i "14a next-server 192.168.184.50;" /etc/dhcp/dhcpd.conf
sed -i "15a filename \"pxelinux.0\";" /etc/dhcp/dhcpd.conf
开启dhcp服务
systemctl  start dhcpd
#复制内核文件即初始化镜像文件到TFTP根目录下
cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/
cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/
#复制PXE引导程序到TFTP根目录下
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
#创建新目录,并把光盘镜像文件及自动应答文件复制到新目录中
mkdir /var/ftp/centos7
cd /mnt
cp -rf * /var/ftp/centos7/   #复制整个镜像文件内容至新目录
cp /root/kgc.cfg /var/ftp/kgc.cfg  #复制应答文件
#开启ftp服务
systemctl start vsftpd
#在tftp根目录下创建新目录,并配置启动菜单文件(默认文件名为default)
mkdir /var/lib/tftpboot/pxelinux.cfg
echo "default auto    #指定默认入口名称
prompt 0              #设置是否等待用户选择,0位不等待
label auto            #为图形化安装引导入口
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.184.50/centos7     ks=ftp://192.168.184.50/kgc.cfglabel linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.184.50/centos7label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.184.50/centos7
" > /var/lib/tftpboot/pxelinux.cfg/default
#关闭防火墙和增强型安全机制
systemctl stop firewalld.service
setenforce 0

shell脚本详解(八)——一键部署自动化装机(PXE无人值守)相关推荐

  1. shell脚本详解(九)——一键部署DNS正向解析

    shell脚本详解(九)--一键部署DNS正向解析 一.DNS正向解析 二.shell脚本一键部署 一.DNS正向解析 详情请点击:DNS正向解析 二.shell脚本一键部署 #!/bin/bash ...

  2. shell脚本详解(十二)——Here Document免交互及Expect自动化交互

    shell脚本详解(十二)--Here Document免交互及Expect自动化交互 一.Here Document 免交互 1.格式 2.注意事项 3.免交互方式实现对行数的统计,将要统计的内容置 ...

  3. shell脚本详解(一)——初学shell脚本必看哦

    shell脚本详解 一.Shell脚本概述 1.1.shell脚本的概念 1.2.shell脚本应用场景 1.3.shell脚本能干什么 1.4. shell的作用--命令翻译器,"翻译官& ...

  4. shell脚本详解(十)——sed编辑器的使用方法

    shell脚本详解(十)--sed编辑器的使用方法 一.sed编辑器 二.sed编辑器工作流程 1.读取: 2.执行: 3.显示: 4.注: 三.命令格式 四.常用选项 五.常用操作 六.使用地址 s ...

  5. shell脚本详解(七)——正则表达式、sort、uniq、tr

    shell脚本详解(七)--正则表达式.sort.uniq.tr 一.排序命令--sort 1.格式 2.常用选项 3.示例 二.去除重复行操作命令--uniq 1.格式 2.常用选项 3.示例 三. ...

  6. shell脚本详解(六)——数组简介和排序算法

    shell脚本详解(六)--数组简介和排序算法 一.数组 1.数组的定义方法 ①.方式一: ②.方式二: ③.方式三: ④.方式四: 2.数组包括的数据类型 3.获取数组长度 4.获取数据列表 5.读 ...

  7. shell脚本详解(四)——循环语句之while循环和until循环(附加例题及解析)

    shell脚本详解(四)--循环语句之while循环和until循环 一.until循环 1.循环结构 2.例题 二.while循环 1.循环结构 2.例题(每个人的思路不同,会导致脚本内容不一样,这 ...

  8. shell脚本详解(三)——循环语句之for循环

    shell脚本详解(三)--循环语句之for循环 一.echo命令 – 输出字符串或提取Shell变量的值 1.格式 2.常用参数 3.示例 二.for循环语句 1.for循环结构 2.例题 ①.例题 ...

  9. shell脚本详解(二)——条件测试、if语句和case分支语句

    shell脚本详解(二)--条件测试.if语句和case分支语句 一.条件测试 1.test命令 2.文件测试 3.整数值比较 4.字符串比较 5.逻辑测试 二.if条件语句 1.单分支 2.双分支 ...

最新文章

  1. 冷热分离和直接使用大数据库_中台有“数”:大数据技术为苏宁818保驾护航
  2. [zz]一行代码解决iframe挂马(服务器端注入、客户端ARP注入等)
  3. 判断是否为自然数java_java判断输入的是否是自然数
  4. 华为硬件工程师社招机考题库_中级会计机考你了解吗?机考操作常见八大问题速看...
  5. 获取springbean的几种方式
  6. html文本格式化意思,HTML文本格式化标签(Formatting)
  7. 【免费毕设】asp.netERP客户关系系统设计(源代码+lunwen)
  8. spark学习11(Wordcount程序-本地测试)
  9. 哈希表中处理冲突的方法
  10. AutoLisp从入门到放弃(十三)
  11. 计算机语言培训机构排行榜,TIOBE 2月编程语言排行榜
  12. 常见电容引脚正负极识别大全
  13. arma找不到合适的模型_ARMA模型建模与预测指导
  14. U盘文件删除如何恢复?U盘里的东西删除怎么还原?
  15. 构建人工智能评测平台(体系)
  16. tk.mybatis.mapper.MapperException: 无法获取实体类com.leyou.work.entity.Brand对应的表名!
  17. 如何利用redis 实现分布式项目枷锁功能
  18. HTML网页开发手册
  19. 一款超高性价比的57步进电机驱动芯片TB6600HG实测稳定4.2A输出42V输入
  20. python:pygame制作中国象棋

热门文章

  1. OS- -调度(二)
  2. 音视频技术开发周刊(第125期)
  3. 王亚楠:基于强化学习的自动码率调节
  4. select poll 与epoll模型的总结
  5. 分支管理---Bug分支
  6. openvswitch2.8.1 centos7.4 源码编译安装
  7. 实现lua面向对象的private属性
  8. 浅谈疫情下的就业形势
  9. hive启动mapreduce任务后,被killed
  10. leetcode 388. Longest Absolute File Path | 388. 文件的最长绝对路径(栈+DFS)