一键安装cobbler脚本
#!/bin/bash
#
# Install Cobbler(Kickstart) Tools for CentOS-/
# Created by OceanHo(gzhehai@foxmail.com) AT -- #
# 操作系统发型主版本
os_release_ver=`sed -r 's#[a-zA-Z ]+(5|6|7)\..*#\1#g' /etc/redhat-release` #
# cobbler settings 文件中的server参数
# auto:表示自动 从 net_bind_device 指定的设备中获取
# 也可以手动指定
cobbler_server_ip="auto"
#
# cobbler settings 文件中的next-server参数
# auto:表示自动 从 net_bind_device 指定的设备中获取
# 也可以手动指定
cobbler_next_server_ip="auto" #
# cobbler 安装系统可以使用的默认密码(盐 / 密码:)
password_salt="`openssl rand -base64 32`"
default_password_crypted=`openssl passwd - -salt "${password_salt}" ''` # #
# 定义一个变量,用来表示cobbler涉及到网络参数自动获取网卡设备名称
# 比如:dhcpd,cobbler的settings文件中涉及到的IP地址等等
#
net_auto_dev="eth1"
dhcpd_template_geturl="https://raw.githubusercontent.com/oceanho/my-shell/master/scripts/cobbler/dhcpd_172-16-1-0_24.template" dhcpd_bind_net_prefix="172.16.1"
dhcpd_bind_net_subnet="172.16.1.0"
dhcpd_bind_net_netmask="255.255.255.0" # 显示帮助
function help()
{
echo -e `
clear
cat <<EOF
\n
\[36m
\n
功能\n
实现Cobbler程序一键安装和部署
\n
\n 参数\n
cobbler-server-ip,指定cobbler settings的server-ip参数,默认从net-auto-dev网卡设备中自动获取\n
cobbler-next-server-ip,指定cobbler settings的next-server-ip参数,默认从net-auto-dev网卡设备中自动获取\n
net-auto-dev,指定自动获取cobbler网络参数相关的配置参数网卡设备,默认eth1
\n
\n 举例\n
、使用ens34网卡设备安装并绑定cobbler的服务(dhcp/tftp)\n
----------------------------------------------------\n
sh $# cobbler-server-ip=auto cobbler-next-server-ip=auto net-auto-dev=ens34
\n
\n
、手动指定cobbler-server-ip 与 next-server-ip,dhcp.template 的子网,掩码等信息自动从eth1网卡上获取 \n
--------------------------------------------------------------------------------------------------------
\n
sh $# cobbler-server-ip=172.16.1.200 cobbler-next-server-ip=172.16.1.200 net-auto-dev=ens34 \n
\[0m
EOF
`
} case "$1" in
-h|--help|help|-help )
help
exit
;;
esac #
# 处理参数
# 参数格式要求
# key=value,比如 net-auto-dev=eth1
until [ $# -eq ]
do
if egrep -q "[a-z-]+=.*"<<<"$1"
then
k=$(sed -r 's#([a-z-]+)=.*#\1#g' <<<"$1")
v=$(sed -r 's#[a-z-]+=(.*)#\1#g' <<<"$1")
case "$k" in
"cobbler-server-ip" )
cobbler_server_ip=$v
;;
"cobbler-next-server-ip" )
cobbler_next_server_ip=$v
;;
"net-auto-dev" )
net_auto_dev=$v
;;
esac
fi
shift
done #
# 根据传入的参数,初始化一些必须的参数,比如绑定dhcpd服务的网段地址,cobbler settings配置文件中涉及到的server的ip地址等参数的初始化
function init_param()
{
str=`ip addr show $net_auto_dev | awk -F"[ ]+" 'NR==3{print $3}'`
if [ $? -ne ]
then
echo -e "\033[31m 获取网卡配置信息失败. \033[0m"
return
fi str_ip="${str%/*}"
str_netmask="${str#*/}" #
# 以下的写法只能支持 // 子网
case $str_netmask in
"" )
dhcpd_bind_net_prefix=`egrep -o "([0-9]+.){1}" <<<$str_ip`
dhcpd_bind_net_subnet="${dhcpd_bind_net_prefix}0.0.0"
dhcpd_bind_net_netmask="255.0.0.0"
;;
"" )
dhcpd_bind_net_prefix=`egrep -o "([0-9]+.){2}" <<<$str_ip`
dhcpd_bind_net_subnet="${dhcpd_bind_net_prefix}0.0"
dhcpd_bind_net_netmask="255.255.0.0"
;;
"" )
dhcpd_bind_net_prefix=`egrep -o "([0-9]+.){3}" <<<$str_ip`
dhcpd_bind_net_subnet="${dhcpd_bind_net_prefix}0"
dhcpd_bind_net_netmask="255.255.255.0"
;;
esac if [ "$cobbler_server_ip" == "auto" ]
then
cobbler_server_ip=$str_ip
fi
if [ "$cobbler_next_server_ip" == "auto" ]
then
cobbler_next_server_ip=$str_ip
fi
} #
# YUM of epel
# 自动现在cobbler先决条件项目,比如epel源等、
# 说明:如果已经有了epel源,该函数不执行安装epel源的操作,如果没有epel源,自动安装阿里云的epel源
function install_pre_require()
{
echo -e "\033[36m Installing requires \033[0m"
if [ `yum --disablerepo=\* --enablerepo=epel repolist | grep -c epel` -eq ]
then
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-${os_release_ver}.repo
fi
echo -e "\033[32m requires Completed. \033[0m"
} function install_cobbler_softs()
{
echo -e "\033[36m Installing cobbler-softs \033[0m"
fix_missing_packages_for_centos7_epel
yum -y install cobbler cobbler-web dhcp tftp-server pykickstart httpd
if [ $? -ne ]
then
echo -e "\033[31m Action failed. \033[0m"
return
fi
echo -e "\033[32m cobbler-softs Completed. \033[0m"
} function fix_missing_packages_for_centos7_epel()
{
if [ $os_release_ver -eq ]
then
# rpm -ql Django14 | wc -l || e
echo -e "\033[33m May be miss Django14-1.4.21-1.el7.noarch. need you fixed. \033[0m"
# yum -y localinstall
fi
} #
# 配置DHCP服务
# 该函数会从远程主机下载,dhcpd.template 文件
# 说明:DHCP IP地址段是 -
function configure_dhcp_template()
{
echo -e "\033[36m Configure dhcp.template \033[0m"
cp /etc/cobbler/dhcp.template{,$(date +%s).ori}
wget -O /etc/cobbler/dhcp.template ${dhcpd_template_geturl}
sed -i "21s#.*#subnet $dhcpd_bind_net_subnet netmask $dhcpd_bind_net_netmask {#" /etc/cobbler/dhcp.template
sed -i "22s#.*# option subnet-mask ${dhcpd_bind_net_netmask};#" /etc/cobbler/dhcp.template
sed -i "23s#.*# range dynamic-bootp ${dhcpd_bind_net_prefix}100 ${dhcpd_bind_net_prefix}254;#" /etc/cobbler/dhcp.template
} function configure_tftpd()
{
echo -e "\033[36m Configure tftpd \033[0m"
sed -i 's#yes#no#' /etc/xinetd.d/tftp
} function configure_httpd()
{
echo -e "\033[36m Configure httpd \033[0m"
} function sync_configure()
{
echo -e "\033[36m Sync cobbler settings \033[0m"
cobbler sync
} function restart_services()
{
echo -e "\033[36m Restart cobbler's services \033[0m"
if [ $os_release_ver -ne ]
then
/etc/init.d/cobblerd restart
/etc/init.d/httpd restart
/etc/init.d/xinetd restart
else
systemctl restart cobblerd.service
systemctl restart httpd.service
systemctl restart cobblerd.service
systemctl restart xinetd.service
fi
} function configure_cobbler_services()
{
configure_dhcp_template
configure_tftpd
configure_httpd cp /etc/cobbler/settings{,$(date +%s).ori} # 备份 # 修改配置文件
sed -i "s/server: .*/server: ${cobbler_server_ip}/" /etc/cobbler/settings
sed -i "s/next_server: .*/next_server: ${cobbler_next_server_ip}/" /etc/cobbler/settings
sed -i 's/manage_dhcp: 0/manage_dhcp: 1/' /etc/cobbler/settings
sed -i 's/pxe_just_once: 0/pxe_just_once: 1/' /etc/cobbler/settings # 限制客户端只能安装一次系统
sed -ri "/default_password_crypted/s#(.*: ).*#\1\"`openssl passwd -1 -salt 'oceanhoasdhakdhakjs' '123456'`\"#" /etc/cobbler/settings
#sed -i 's#yes#no#' /etc/xinetd.d/rsync
sed -i 's#yes#no#' /etc/xinetd.d/tftp
} # 程序入口
function main()
{ # 初始化参数
init_param install_pre_require
install_cobbler_softs
configure_cobbler_services
sync_configure
restart_services
cobbler get-loaders
sync_configure
cobbler check
} # 执行安装程序操作
main
一键安装cobbler脚本的更多相关文章
- linux一键安装vncserver脚本
title: linux一键安装vncserver脚本 date: 2016-04-11 14:32:04 tags: --- linux多数情况下是作为服务器使用的,管理员一般也喜欢使用命令行来管理 ...
- Rehat一键安装mysql脚本和备份数据库脚本
Rehat一键安装mysql脚本 ##说明:适用,Rehat 5 6 7 1.运行状态,运行成功输出mysql临时密码 2.代码如下 #!/bin/bash #获取系统信息 sudo cat /etc ...
- (转)CentOS一键安装Nginx脚本
原文:https://www.xiaoz.me/archives/10301 https://blog.slogra.com/post-676.html-----centos7一键安装nginx脚本
- rsync服务端一键安装rsync脚本(非源码)
export RSYNC_PASSWORD=123 USER=rsync AUTHUSERS=bck MK=backupmk local_dir=/backup yum remove rsync &a ...
- 一键安装lnmp脚本
前段时间一直在找一个快速部署lnmp环境的方法,也没找着,就自己写了一个,结合网上的大神们的.我的方法是脚本结合源码包,很多依赖裤都是yum安装的,这都在脚本里面,需要的源码包我都下载好了,打包成压缩 ...
- 【转载】一键安装maven脚本
#!/bin/bashif [ -z "${MAVEN_HOME}" ]; then #得到时间 TIME_FLAG=`date +%Y%m%d_%H%M%S` #备份配置文件 c ...
- Node_exporter一键安装部署脚本(Shell)
#!/bin/bash # # rhel7. 安装node_exporter 用于监控数据采集 # Usage: # sh addNode.sh #Logs: /var/log/messages #H ...
- centos下的redis一键安装shell脚本
#!/bin/bash yum install cpp binutils glibc-kernheaders glibc-common glibc-devel gcc make wget #安装依赖库 ...
- rsync客户端一键安装rsync脚本(源码)
客户端 read -np "请输入源码rsync的URL 地址 包名(以空格为分隔符,别带/):" URL DZ BM yum remove -y rsync &>& ...
随机推荐
- JDBC连接数据库遇到的“驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。
要从旧算法列表中删除3DES: 在JDK 8及更早版本中,编辑该 /lib/security/java.security文件并3DES_EDE_CBC从jdk.tls.legacyAlgorithms ...
- win7环境下mongodb分片和移除
本文主要介绍在一台win7电脑上模拟mongo分片.如果有多台服务器,可以将每个mongo部署在单台电脑上.我们将配置3个mongo分片,3个配置服务器,1个路由服务器.如下图所示进行配置,介绍如何增 ...
- webConfig的使用
<sessionState mode="Off|InProc|StateServer|SQLServer" cookieless="true|false" ...
- TCP/IP,Http,Socket的区别
大学学习网络基础的时候老师讲过,网络由下往上分为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层.通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用 ...
- 远程连接mysql要点 虚拟主机定义与分类
远程连接mysql:通过主机地址与端口号连接 1. 主机地址:找到主机电脑 2. 端口号:找到对应mysql软件 mysql客户端访问服务端需要进行寻找匹配:连接认证-h 主机地址 例如 -hloca ...
- C#连接Oracle数据库的四种方法
C#连接数据库的四种方法 在进行以下连接数据库之前,请先在本地安装好Oracle Client,同时本次测试System.Data的版本为:2.0.0.0. 在安装Oracle Client上请注意, ...
- 【DVWA】File Upload(文件上传漏洞)通关教程
日期:2019-08-01 17:28:33 更新: 作者:Bay0net 介绍: 0x01. 漏洞介绍 在渗透测试过程中,能够快速获取服务器权限的一个办法. 如果开发者对上传的内容过滤的不严,那么就 ...
- gin框架教程一: go框架gin的基本使用
我们在用http的时候一般都会用一些web框架来进行开发,gin就是这样的一个框架,它有哪些特点呢 一:gin特点 1.性能优秀2.基于官方的net/http的有限封装3.方便 灵活的中间件4.数据绑 ...
- APP自动化测试,判断页面与预期是否相同
自动化测试中,有时需要验证页面跳转是否正常 1.选择appium实现,因为要填写appPcakage和appActivity,只能验证一个单独的APP,在自身APP上各个页面是否跳转正常 例如:焦点从 ...
- 【HANA系列】SAP HANA 2.0 SPS00 SDA(Smart Data Access)连接Hadoop
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA 2.0 SPS ...