经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Linux/Shell » 查看文章
Linux shell编写脚本部署pxe网络装机
来源:cnblogs  作者:雨中落叶  时间:2019/3/27 8:52:58  对本文有异议

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站点的内核,引导程序等

  

源码如下:

  1. #!/bin/bash
  2. #该脚本用于自动化部署pxe网络装机
  3. #作者:雨中落叶
  4. #博客:https://www.cnblogs.com/yuzly/
  5. #关闭防火墙,selinux安全机制
  6. service iptables stop &>/dev/null
  7. setenforce 0 &>/dev/null
  8. #获得当前主机的IP地址
  9. IP=$(ifconfig | head -2 | grep "inet addr" | awk '{print $2}'|awk -F: '{print $2}')
  10. #获得当前主机的网络号
  11. NETIP=$(echo $IP |awk -F. '{print $1"."$2"."$3}')
  12. #获得当前主机的子网掩码
  13. MASK=$(ifconfig |head -2 | tail -1 |awk '{print $4}'|awk -F: '{print $2}')
  14. #挂载光盘
  15. mount /dev/sr0 /mnt &>/dev/null
  16. n=$(ls /mnt/$Date |wc -l)
  17. if [ $n -eq 0 ]
  18. then
  19. echo "没有挂载光盘,请挂载光盘,退出脚本执行状态!"
  20. exit
  21. fi
  22. #配置本地yum仓库
  23. rm -fr /etc/yum.repos.d/*
  24. cat >>/etc/yum.repos.d/yuzly.repo<<OK
  25. [yuzly]
  26. name=yuzly
  27. baseurl=file:///mnt
  28. enabled=1
  29. gpgcheck=1
  30. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
  31. OK
  32. yum clean all &>/dev/null
  33. #搭建ftp站点
  34. if [ -d /etc/vsftpd ]
  35. then
  36. #把光盘文件复制到ftp站点下
  37. mkdir /var/ftp/redhat6
  38. echo "正在复制光盘文件........"
  39. cp -rf /mnt/* /var/ftp/redhat6
  40. echo "完成复制......."
  41. #启动ftp服务
  42. service vsftpd restart &>/dev/null
  43. else
  44. echo "该系统没有安装ftp服务,正在安装,请稍等....."
  45. yum install -y vsftpd &>/dev/null
  46. if [ ! -d /etc/vaftpd ]
  47. then
  48. echo "安装ftp失败,退出脚本执行状态!"
  49. exit
  50. fi
  51. #把光盘文件复制到ftp站点下
  52. mkdir /var/ftp/redhat6
  53. echo "正在复制光盘文件........"
  54. cp -rf /mnt/* /var/ftp/redhat6
  55. echo "完成复制......."
  56. #启动ftp服务
  57. service vsftpd start &>/dev/null
  58. fi
  59. #搭建tftp站点
  60. if [ -f /etc/xinetd.d/tftp ]
  61. then
  62. #修改tftp配置文件,tftp默认是禁用,开启tftp功能
  63. tftp_status=$(grep disable /etc/xinetd.d/tftp |awk -F= '{print $2}')
  64. sed -i "s/$tftp_status/no/" /etc/xinetd.d/tftp
  65. #启动tftp服务
  66. service xinetd restart &>/dev/null
  67. else
  68. echo "该系统没有安装tftp服务,正在安装,请稍等....."
  69. yum install -y tftp-server &>/dev/null
  70. if [ ! -f /etc/xinetd.d/tftp ]
  71. then
  72. echo "安装tftp失败,退出脚本执行状态!"
  73. exit
  74. fi
  75. #修改tftp配置文件,tftp默认是禁用,开启tftp功能
  76. tftp_status=$(grep disable /etc/xinetd.d/tftp |awk -F= '{print $2}')
  77. sed -i "s/$tftp_status/no/" /etc/xinetd.d/tftp
  78. #启动tftp服务
  79. service xinetd start &>/dev/null
  80. fi
  81. #部署客户端主机无盘启动时所需的Linux内核、初始化镜像文件
  82. cd /mnt/images/pxeboot
  83. cp vmlinuz initrd.img /var/lib/tftpboot
  84. #准备客户端主机无盘启动时所需的PXE引导程序(pxelinux.0)、启动菜单文件
  85. #安装syslinux软件包(支持PXE功能)
  86. yum -y install syslinux &>/dev/null
  87. if [ ! -d /usr/share/syslinux ]
  88. then
  89. echo "没有安装成功syslinux,退出脚本执行状态!"
  90. exit
  91. fi
  92. cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
  93. #建立启动菜单文件
  94. mkdir /var/lib/tftpboot/pxelinux.cfg
  95. cat >>/var/lib/tftpboot/pxelinux.cfg/default<<OK
  96. default auto
  97. prompt 0
  98. label auto
  99. kernel vmlinuz
  100. append ks=ftp://$IP/redhat6/ks.cfg initrd=initrd.img devfs=nomount ramdisk_size=8192
  101. label linux text
  102. kernel vmlinuz
  103. append text initrd=initrd.img devfs=nomount ramdisk_size=8192
  104. label linux rescue
  105. kernel vmlinuz
  106. append rescue initrd=initrd.img devfs=nomount ramdisk_size=8192
  107. OK
  108. #修改default文件权限
  109. chmod 644 /var/lib/tftpboot/pxelinux.cfg/default
  110. #配置DHCP服务
  111. if [ -f /etc/dhcp/dhcpd.conf ]
  112. then
  113. cat >/etc/dhcp/dhcpd.conf<<OK
  114. subnet $NETIP.0 netmask $MASK {
  115. range $NETIP.50 $NETIP.100;
  116. option domain-name-servers ns1.internal.example.org;
  117. option domain-name "internal.example.org";
  118. option routers $IP;
  119. default-lease-time 600;
  120. max-lease-time 7200;
  121. next-server $IP;
  122. filename "pxelinux.0";
  123. }
  124. OK
  125. #启动dhcp服务
  126. service dhcpd restart &>/dev/null
  127. else
  128. echo "该系统没有安装dhcp服务,正在安装,请稍等....."
  129. yum install -y dhcp &>/dev/null
  130. if [ ! -f /etc/dhcp/dhcpd.conf ]
  131. then
  132. echo "安装dhcp失败,退出脚本执行状态!"
  133. exit
  134. fi
  135. cat >/etc/dhcp/dhcpd.conf<<OK
  136. subnet $NETIP.0 netmask $MASK {
  137. range $NETIP.50 $NETIP.100;
  138. option domain-name-servers ns1.internal.example.org;
  139. option domain-name "internal.example.org";
  140. option routers $IP;
  141. default-lease-time 600;
  142. max-lease-time 7200;
  143. next-server $IP;
  144. filename "pxelinux.0";
  145. }
  146. OK
  147. #启动dhcp服务
  148. service dhcpd start &>/dev/null
  149. fi
  150. #配置实现客户端无人值守安装系统
  151. #安装system-config-kickstart软件包
  152. echo "正在安装system-config-kickstart软件包"
  153. yum -y install system-config-kickstart &>/dev/null
  154. echo "安装system-config-kickstart软件包完成!"
  155. #配置ks.cfg文件
  156. cat >/var/ftp/redhat6/ks.cfg<<OK
  157. #platform=x86, AMD64, 或 Intel EM64T
  158. #version=DEVEL
  159. # Firewall configuration
  160. firewall --disabled
  161. # Install OS instead of upgrade
  162. install
  163. # Use network installation
  164. url --url="ftp://$IP/redhat6"
  165. # Root password
  166. rootpw --iscrypted $1$EdNye4v8$k9lKFbLL44WbEYorBFU/S1
  167. # System authorization information
  168. auth --useshadow --passalgo=sha512
  169. # Use graphical install
  170. graphical
  171. firstboot --disable
  172. # System keyboard
  173. keyboard us
  174. # System language
  175. lang zh_CN
  176. # SELinux configuration
  177. selinux --enforcing
  178. # Installation logging level
  179. logging --level=info
  180. OK
  181. echo "pxe服务端部署完成!"

 

 

 

----------------------------------------------------------------------------------------------------------------------------------

人工安装配置,Linux PXE无人值守网络装机  https://www.cnblogs.com/yuzly/p/10582254.html

 

原文链接:http://www.cnblogs.com/yuzly/p/10585624.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号