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 ...
随机推荐
- RTMP、HTTP-FLV、HLS,你了解常见的三大直播协议吗
随着直播行业大火,游戏.乐秀.教育.发布会等直播类产品层出不穷,能够满足各方人员的需求.在直播中,总能在其中找到适合自己的产品内容.喜欢玩游戏的可以看游戏直播,想学点工作技能的,也可以观看大牛现场授课 ...
- 使用Phalcon框架开发一个简易的博客系统
使用Phalcon PHP框架开发一个简易的博客系统(类似于CMS) 最近在做Phalcon(Phalcon在英文中指的是鸟类中飞得最快的那一个物种,由于是高性能框架,借用了这个词)相关的项目,由于刚 ...
- 从零开始学习PYTHON3讲义(四)让程序更友好
<从零开始PYTHON3>第四讲 先看看上一讲的练习答案. 程序完成的是功能,功能来自于"程序需求"("需求"这个词忘记了什么意思的去复习一下第二讲 ...
- 实现无缝兼容ajax/websocket网页应用和服务
为了让用户体验更好,页面前端往往是通过ajax来进行数据处理:由于浏览器的设计原因每个域名下的连接有限,这样导致了同时进行ajax数据请求效率无法得到有效地提升,为了提高效率和传统HTTP协议上的限制 ...
- 大战Java虚拟机【2】—— GC策略
前言 前面我们已经知道了Java虚拟机所做的事情就是回收那些不用的垃圾,那些不用的对象.那么问题来了,我们如何知道一个对象我们不需要使用了呢?程序在使用的过程中会不断的创建对象,这些所创建的对象指不定 ...
- JAVA内存分配与回收策略
对象的内存分配,大方向上讲,就是在堆上分配,对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配.少数情况下也可能会直接分配在老年代中,分配规则并不是百分百固定 ...
- 基本 SQL 之增删改查(二)
上一篇文章中,我们介绍了 SQL 中最基本的 DML 语法,包括 insert 的插入数据.update 的更新数据.delete 的删除数据以及基本的查询语法,但大多比较简单不能解决我们日常项目中复 ...
- 脚本检测Kafka和Zookeeper
Java测试环境中Kafka最近总是自动停止,所有写了一个简单的脚本来监听Kafka和Zookeeper,其中Kafka监听端口为9092,Zookeeper监听端口为2181,脚本如下: #!/bi ...
- 多线程Thread,线程池ThreadPool
首先我们先增加一个公用方法DoSomethingLong(string name),这个方法下面的举例中都有可能用到 #region Private Method /// <summary> ...
- 第25章 退出外部身份提供商 - Identity Server 4 中文文档(v1.0.0)
当用户注销 IdentityServer并且他们使用外部身份提供程序登录时,可能会将其重定向到注销外部提供程序.并非所有外部提供商都支持注销,因为它取决于它们支持的协议和功能. 要检测是否必须将用户重 ...