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网络装机的更多相关文章

  1. 十六.部署PXE网络装机

    PXE组件及过程分析 • 需要哪些服务组件? – DHCP服务,分配IP地址.定位引导程序 – TFTP服务,提供引导程序下载 – HTTP服务,提供yum安装源 • 客户机应具备的条件 – 网卡芯片 ...

  2. Linux shell编写端口扫描脚本

    Linux shell编写端口扫描脚本 需求: 扫描特定主机 扫描特定主机的特定端口 扫描特定网段 扫描特定网段中哪些主机开放了特定的端口 源码如下: #/bin/bash #该脚本用于对特定目标主机 ...

  3. linux 下shell 编写脚本

    linux 下shell 编写脚本: 1.程序结构练习:编写一个脚本,给定一个正整数,计算出这个数所有位的数字之和. 例如:程序给定输入123,那么应该返回1+2+3=6. 2.程序结构练习:编写一个 ...

  4. Service系统服务(五):PXE基础装机环境、配置并验证DHCP服务、配置PXE引导、验证PXE网络装机、PXE+kickstart自动装机

    一.PXE基础装机环境 目标: 本例要求为后续的PXE服务器构建提供RHEL7软件仓库,完成下列任务: 1> 在CentOS真机部署Web目录/var/www/html/rh7dvd   2&g ...

  5. PXE网络装机

    PXE网络装机配置 安装CentOS 6.5系统 1.配置服务端IP地址和yum源 略 2.安装配置VSFTP服务 vsftpd 的作用:为客户端提供FTP服务,便于客户端下载操作系统 (1)安装vs ...

  6. dos2unix Linux解决编写脚本出现“%0D

    ## Linux解决编写脚本出现“%0D”# 安装# yum install -y dos2unix# 然后进行转化一下脚本,将其中的install_mysql.sh换成你的脚本# dos2unix ...

  7. YUM仓库服务与PXE网络装机

    1.yum:基于RPM包构建软件更新机制自动解决依赖关系,软件包由软件包库提供 提供方式:ftp服务:ftp://IP地址/仓库目录 Http服务:http ://  IP地址/仓库目录 本地目录:f ...

  8. [转] Linux下编写脚本实现Daemon

    在Linux(以Redhat Linux Enterprise Edition 5.3为例)下,有时需要编写Service.Service也是程序,一般随系统启动用户不干预就不退出的程序,可以称为Se ...

  9. linux pxe网络装机无人值守

    项目分析远程装机的实现:配置DHCP+HTTP+TFTP提供通过vesamenu.c32模块实现图形PXE菜单为不同系统分别提供ks应答文件将第三方rpm包以yum源的方式提供:集中提供ntfs-3g ...

随机推荐

  1. 让 CDN 更省流量的 Brotli 算法详解

    早年,我还是学生的时候,时常会鼓捣自己的个人网站,其中最困扰我的问题就是源站服务器易崩溃.作为学生,一方面我没有足够的钱购买高质量的服务器,另一方面一年的流量费用算下来也挺贵的,要花掉我不少的生活费. ...

  2. Python链接Mssql之Python库pymssql

    连接数据库 pymssql连接数据库的方式和使用sqlite的方式基本相同: 使用connect创建连接对象 connect.cursor创建游标对象,SQL语句的执行基本都在游标上进行 cursor ...

  3. Shiro中的授权问题(二)

    上篇博客(Shiro中的授权问题 )我们介绍了Shiro中最最基本的授权问题,以及常见的权限字符的匹配问题.但是这里边还有许多细节需要我们继续介绍,本节我们就来看看Shiro中授权的一些细节问题. 验 ...

  4. Django项目开发

    1.django中Form验证.CSRF.Cookie.Session.Model操作数据库 2.django介绍&快速实现简单留言系统 3.django开发在线教育网站

  5. Java开发需掌握的常用Linux命令(持续更新)

    linux命令是对Linux系统进行管理的命令.对于Linux系统来说,无论是中央处理器.内存.磁盘驱动器.键盘.鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命 ...

  6. 优雅的启动、停止、重启你的SpringBoot项目

    前言 你是如何启动.关闭你的SpringBoot项目的?还是使用java -jar xxxx.jar启动? 还在用ps -ef找到你的pid去kill你的应用吗? 让我们来看看还有什么更加优雅的一键启 ...

  7. HBase查询优化

    1.概述 HBase是一个实时的非关系型数据库,用来存储海量数据.但是,在实际使用场景中,在使用HBase API查询HBase中的数据时,有时会发现数据查询会很慢.本篇博客将从客户端优化和服务端优化 ...

  8. Vue依赖收集引发的问题

    问题背景 在我们的项目中有一个可视化配置的模块,是通过go.js生成canvas来实现的.但是,我们发现这个模块在浏览器中经常会引起该tab页崩溃.开启chrome的任务管理器一看,进入该页面内存和c ...

  9. vnc server的安装

    vnc是一款使用广泛的服务器管理软件,可以实现图形化管理.我在安装vnc server碰到一些问题,也整理下我的安装步骤,希望对博友们有一些帮助. 1 安装对应的软件包 [root@centos6 ~ ...

  10. Linux基础知识第七讲,用户权限以及用户操作命令

    目录 Linux基础知识第七讲,用户权限以及用户操作命令 一丶简介linux用户,用户权限,组的概念. 1.1 基本概念 1.2 组 1.3 ls命令查看权限. 二丶用户权限修改命令 1.chmod ...