Linux shell编写脚本部署pxe网络装机
Linux shell编写脚本部署pxe网络装机
人工安装配置,Linux PXE无人值守网络装机 https://www.cnblogs.com/yuzly/p/10582254.html
脚本实现PXE无人值守网络装机
1.运行脚本:

2.查看dhcp配置文件,看脚本是否成功执行

3.查看/var/lib/tftpboot目录下是否有如下文件

4.虚拟机新建一个虚拟机,不加载光盘,取消dhcp自动获取,然后开启

5.下图可以看到,正在加载位于远端的tftp站点的内核,引导程序等

源码如下:
#!/bin/bash
#该脚本用于自动化部署pxe网络装机
#作者:雨中落叶
#博客:https://www.cnblogs.com/yuzly/
#关闭防火墙,selinux安全机制
service iptables stop &>/dev/null
setenforce &>/dev/null
#获得当前主机的IP地址
IP=$(ifconfig | head - | grep "inet addr" | awk '{print $2}'|awk -F: '{print $2}')
#获得当前主机的网络号
NETIP=$(echo $IP |awk -F. '{print $1"."$2"."$3}')
#获得当前主机的子网掩码
MASK=$(ifconfig |head - | tail - |awk '{print $4}'|awk -F: '{print $2}')
#挂载光盘
mount /dev/sr0 /mnt &>/dev/null
n=$(ls /mnt/$Date |wc -l)
if [ $n -eq ]
then
echo "没有挂载光盘,请挂载光盘,退出脚本执行状态!"
exit
fi
#配置本地yum仓库
rm -fr /etc/yum.repos.d/*
cat >>/etc/yum.repos.d/yuzly.repo<<OK
[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<<OK
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<<OK
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<<OK
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<<OK
#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服务端部署完成!"
----------------------------------------------------------------------------------------------------------------------------------
人工安装配置,Linux PXE无人值守网络装机 https://www.cnblogs.com/yuzly/p/10582254.html
Linux shell编写脚本部署pxe网络装机的更多相关文章
- 十六.部署PXE网络装机
PXE组件及过程分析 • 需要哪些服务组件? – DHCP服务,分配IP地址.定位引导程序 – TFTP服务,提供引导程序下载 – HTTP服务,提供yum安装源 • 客户机应具备的条件 – 网卡芯片 ...
- Linux shell编写端口扫描脚本
Linux shell编写端口扫描脚本 需求: 扫描特定主机 扫描特定主机的特定端口 扫描特定网段 扫描特定网段中哪些主机开放了特定的端口 源码如下: #/bin/bash #该脚本用于对特定目标主机 ...
- linux 下shell 编写脚本
linux 下shell 编写脚本: 1.程序结构练习:编写一个脚本,给定一个正整数,计算出这个数所有位的数字之和. 例如:程序给定输入123,那么应该返回1+2+3=6. 2.程序结构练习:编写一个 ...
- Service系统服务(五):PXE基础装机环境、配置并验证DHCP服务、配置PXE引导、验证PXE网络装机、PXE+kickstart自动装机
一.PXE基础装机环境 目标: 本例要求为后续的PXE服务器构建提供RHEL7软件仓库,完成下列任务: 1> 在CentOS真机部署Web目录/var/www/html/rh7dvd 2&g ...
- PXE网络装机
PXE网络装机配置 安装CentOS 6.5系统 1.配置服务端IP地址和yum源 略 2.安装配置VSFTP服务 vsftpd 的作用:为客户端提供FTP服务,便于客户端下载操作系统 (1)安装vs ...
- dos2unix Linux解决编写脚本出现“%0D
## Linux解决编写脚本出现“%0D”# 安装# yum install -y dos2unix# 然后进行转化一下脚本,将其中的install_mysql.sh换成你的脚本# dos2unix ...
- YUM仓库服务与PXE网络装机
1.yum:基于RPM包构建软件更新机制自动解决依赖关系,软件包由软件包库提供 提供方式:ftp服务:ftp://IP地址/仓库目录 Http服务:http :// IP地址/仓库目录 本地目录:f ...
- [转] Linux下编写脚本实现Daemon
在Linux(以Redhat Linux Enterprise Edition 5.3为例)下,有时需要编写Service.Service也是程序,一般随系统启动用户不干预就不退出的程序,可以称为Se ...
- linux pxe网络装机无人值守
项目分析远程装机的实现:配置DHCP+HTTP+TFTP提供通过vesamenu.c32模块实现图形PXE菜单为不同系统分别提供ks应答文件将第三方rpm包以yum源的方式提供:集中提供ntfs-3g ...
随机推荐
- ALL_SOURCE
类型:View Owner: SYS 内容: 记录了该用户可访问的所有数据库对象的脚本信息(DDL) 字段: OWNER: 对象的Owner NAME: 对象名称 TYPE: 对象类型,如FUNCT ...
- flink metric库的使用和自定义metric-reporter
简单介绍 flink内部实现了一套metric数据收集库. 同时flink自身系统有一些固定的metric数据, 包括系统的一些指标,CPU,内存, IO 或者各个task运行的一些指标.具体包含那些 ...
- TCP连接有效性检测方法
在写TCP服务的时候经常需要面对的问题就是如何知道一个TCP连接当前是否有效,但这个问题对很多初入门的同学来说是很困惑的,主要原因是当对方关闭连接后,另一方无法有效的知道:对于同步操作来说可以通过设置 ...
- Java开发需掌握的常用Linux命令(持续更新)
linux命令是对Linux系统进行管理的命令.对于Linux系统来说,无论是中央处理器.内存.磁盘驱动器.键盘.鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命 ...
- 【API知识】一种你可能没见过的Controller形式
前言 这里分享一下我遇到的一个挺有意思的Controller形式,内容涉及@RequestMapping注解的原理. 实际案例 一.基本描述 项目甲中有多个模块,其中就有模块A和B.(这里的模块指的是 ...
- 说说不知道的Golang中参数传递
本文由云+社区发表 导言 几乎每一个C++开发人员,都被面试过有关于函数参数是值传递还是引用传递的问题,其实不止于C++,任何一个语言中,我们都需要关心函数在参数传递时的行为.在golang中存在着m ...
- Spring Boot 2.x(九):遇到跨域不再慌
什么是跨域 首先,我们需要了解一下一个URL是怎么组成的: // 协议 + 域名(子域名 + 主域名) + 端口号 + 资源地址 http: + // + www.baidu.com + :8080/ ...
- 触发器 评论折叠显示(jquery)
触发器 评论折叠显示(jquery) 子页面 : @if(Model?.count>0) { var i=1; var n=model.count-2 va ...
- asp.net MVC NPOI导出excel通用
一.创建一个类文件添加 public class ExportToExcelColumn { public ExportToExcelColumn(string _Columnnames, strin ...
- 拯救老旧工程,记桥接SpringMVC与Stripes框架
背景: 公司基础设施部门推出了自己的微服务框架(以下简称M),要求所有业务应用都要接入进去,但坑爹的是M只提供了SpringMVC工程的support,对于采用Stripes作为MVC框架的应用并不支 ...