1. [python] view plaincopyprint?  
  2. #!/bin/bash   
  3. # by wu 2012-07-28   
  4. # RHEL6 unattended deployment,用于RHEL6无人值守搭建.v1.0   
  5. # 有不足的地方还请见谅   
  6. #搭建yum   
  7. Yum_build()   
  8. {   
  9. yum clean all &>/dev/null   
  10. num_list=$(yum list | wc -l)   
  11. yum clean all &>/dev/null   
  12. if [[ $num_list < 2000 ]];then   
  13. mount /dev/cdrom /mnt   
  14. if [ -d /etc/yum.repos.d/bak ];then   
  15. mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak   
  16. else   
  17. mkdir /etc/yum.repos.d/bak   
  18. mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak   
  19. fi   
  20. cat << EOF > /etc/yum.repos.d/base.repo   
  21. [base]   
  22. name=base   
  23. baseurl=file:///mnt   
  24. enabled=1   
  25. gpgcheck=0   
  26. EOF   
  27. else   
  28. echo "yum is ok!"   
  29. fi   
  30. }   
  31. Check_rpm()   
  32. {   
  33. Packages=(dhcp tftp-server vsftpd syslinux)   
  34. for i in ${Packages[@]}   
  35. do   
  36. if ! rpm -q $i &> /dev/null;then   
  37. yum install $i -y &>/dev/null   
  38. fi   
  39. done   
  40. }   
  41. #dhcp服务搭建以及网络安装引导文件   
  42. dhcp_build()   
  43. {   
  44. read -p "输入所在subnet、netmask、broadcast、gateway: " subnet netmask broadcast gateway   
  45. read -p "输入next-server地址: " next_server   
  46. read -p "提供IP的范围start_ip end_ip: " start_ip end_ip   
  47. cat << EOF >/etc/dhcp/dhcpd.conf   
  48. subnet $subnet netmask $netmask {   
  49. range $start_ip $end_ip;   
  50. option routers $gateway;   
  51. option broadcast-address $broadcast;   
  52. default-lease-time 600;   
  53. max-lease-time 7200;   
  54. filename "pxelinux.0";   
  55. next-server $next_server;   
  56. }   
  57. EOF   
  58. cat << EOF >/var/lib/tftpboot/pxelinux.cfg/default   
  59. default vesamenu.c32   
  60. #prompt 1   
  61. timeout 600   
  62. display boot.msg   
  63. menu background splash.jpg   
  64. menu title Welcome to Red Hat Enterprise Linux 6.2!   
  65. menu color border 0 #ffffffff #00000000   
  66. menu color sel 7 #ffffffff #ff000000   
  67. menu color title 0 #ffffffff #00000000   
  68. menu color tabmsg 0 #ffffffff #00000000   
  69. menu color unsel 0 #ffffffff #00000000   
  70. menu color hotsel 0 #ff000000 #ffffffff   
  71. menu color hotkey 7 #ffffffff #ff000000   
  72. menu color scrollbar 0 #ffffffff #00000000   
  73. label linux   
  74. menu label ^Install or upgrade an existing system   
  75. menu default   
  76. kernel vmlinuz   
  77. append ks=ftp://$next_server/ks.cfg initrdinitrd=initrd.img   
  78. EOF   
  79. }   
  80. #无人值守配置文件   
  81. ks_cfg()   
  82. {   
  83. read -p "请输入无人值守ftp地址: " ftp   
  84. cat <<EOF >/var/ftp/ks.cfg   
  85. firewall --disabled   
  86. install   
  87. url --url="ftp://$ftp/iso"   
  88. rootpw --iscrypted $1$A9aGh0yl$ahDdo0eAvQFAplXTeBkX//   
  89. auth --useshadow --passalgo=sha512   
  90. text   
  91. firstboot --disable   
  92. keyboard us   
  93. lang zh_CN   
  94. selinux --disabled   
  95. logging --level=info   
  96. reboot   
  97. timezone Asia/Shanghai   
  98. network --bootproto=dhcp --device=eth0 --onboot=on   
  99. bootloader --location=mbr   
  100. zerombr   
  101. clearpart --all --initlabel   
  102. part /boot --asprimary --fstype="ext4" --size=200   
  103. part swap --asprimary --fstype="swap" --size=2048   
  104. part / --asprimary --fstype="ext4" --size=100000   
  105. %packages   
  106. @additional-devel   
  107. @backup-client   
  108. @base   
  109. @basic-desktop   
  110. @chinese-support   
  111. @client-mgmt-tools   
  112. @compat-libraries   
  113. @console-internet   
  114. @debugging   
  115. @desktop-debugging   
  116. @desktop-platform   
  117. @desktop-platform-devel   
  118. @development   
  119. @dial-up   
  120. @directory-client   
  121. @eclipse   
  122. @emacs   
  123. @fonts   
  124. @general-desktop   
  125. @graphical-admin-tools   
  126. @graphics   
  127. @hardware-monitoring   
  128. @infiniband   
  129. @input-methods   
  130. @internet-browser   
  131. @java-platform   
  132. @kde-desktop   
  133. @large-systems   
  134. @legacy-unix   
  135. @legacy-x   
  136. @mainframe-access   
  137. @network-file-system-client   
  138. @network-tools   
  139. @performance   
  140. @perl-runtime   
  141. @remote-desktop-clients   
  142. @scientific   
  143. @security-tools   
  144. @server-platform-devel   
  145. @smart-card   
  146. @storage-client-fcoe   
  147. @storage-client-iscsi   
  148. @storage-client-multipath   
  149. @system-management   
  150. @system-management-messaging-client   
  151. @system-management-messaging-server   
  152. @system-management-snmp   
  153. @system-management-wbem   
  154. @technical-writing   
  155. @tex   
  156. @x11   
  157. hmaccalc   
  158. %end   
  159. EOF   
  160. }   
  161. #调用函数   
  162. Yum_build   
  163. Check_rpm   
  164. mkdir /var/ftp/iso &>/dev/null   
  165. mount /dev/cdrom /var/ftp/iso &>/dev/null   
  166. #拷贝系统引导文件   
  167. cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/   
  168. cp -r /var/ftp/iso/isolinux/* /var/lib/tftpboot/   
  169. mkdir /var/lib/tftpboot/pxelinux.cfg &>/dev/null   
  170. mv /var/lib/tftpboot/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default   
  171. #调用函数   
  172. dhcp_build   
  173. ks_cfg   
  174. #设置开机启动   
  175. chkconfig tftp on   
  176. chkconfig dhcpd on   
  177. chkconfig vsftpd on   
  178. #刷新服务   
  179. service xinetd restart &>/dev/null   
  180. service dhcpd restart &>/dev/null   
  181. service vsftpd restart &>/dev/null