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. react-native学习(RN)--之Window环境下搭建环境配置,以及初始化建立react-native项目,(真机和模拟器运行的相关错误解决办法,android打包报错)

    react-native以后会更火的 一.安装java 二.安装Android Studio 三.安装react-native需要的Android studio额外部分 四.安装nodeJS  五.安 ...

  2. 『宝藏 状态压缩DP NOIP2017』

    宝藏(NOIP2017) Description 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 n 个深埋在地下的宝藏屋, 也给出了这 n 个宝藏屋之间可供开发的m 条道路和它们的长度. 小明决 ...

  3. springboot+mybatis+dubbo+aop日志第二篇

    本篇主要介绍dubbo-demo-api接口层和dubbo-demo-service层,以及如何通过dubbo把服务发布出去,介绍代码前,咱们先来回顾一下整个demo工程的结构,如下图所示: 1.du ...

  4. scrapy爬虫学习系列七:scrapy常见问题解决方案

    1 常见错误 1.1 错误: ImportError: No module named win32api 官方参考:https://doc.scrapy.org/en/latest/faq.html# ...

  5. Shell从入门到精通进阶之二:Shell字符串处理之${}

    上一章节讲解了为什么用${}引用变量,${}还有一个重要的功能,就是文本处理,单行文本基本上可以满足你所有需求. 2.1 获取字符串长度 # VAR='hello world!' # echo $VA ...

  6. Jenkins结合.net平台综合应用之使用FileZilla搭建ftp服务器

    上一节我们讲解了如何编译web项目,web项生成以后我们是手动复制到iis目录下的,这显然不符合devops初衷,这里我们讲解如何利用ftp协议把文件传到远程服务器的iis目录下. 这一讲分两部分一部 ...

  7. 脚本检测Kafka和Zookeeper

    Java测试环境中Kafka最近总是自动停止,所有写了一个简单的脚本来监听Kafka和Zookeeper,其中Kafka监听端口为9092,Zookeeper监听端口为2181,脚本如下: #!/bi ...

  8. 第11章 使用OpenID Connect添加用户身份验证 - Identity Server 4 中文文档(v1.0.0)

    在本快速入门中,我们希望通过OpenID Connect协议向我们的IdentityServer添加对交互式用户身份验证的支持. 一旦到位,我们将创建一个将使用IdentityServer进行身份验证 ...

  9. 第一册:lesson109.

    原文: A goof idea question:What does Jane have with her coffee? Shall I make some coffe, Jane? That's ...

  10. MD5&&DES加密解密帮助类

    public class _MD5_NETCore加密解密 { /// <summary> /// 加密 /// </summary> /// <param name=& ...