用bat脚本解放双手
Posted along-Blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用bat脚本解放双手相关的知识,希望对你有一定的参考价值。
最近在写一个练手项目,随着开发的往后进行,开发项目时需要用到越来越多的软件(idea、navicat、RDM、VSCode)、启动时需要配置参数的第三方组件(nacos、minio)等程序。
由于是自己练手的项目是在自己笔记本上玩,无法实现像在公司里电脑不死机,绝不关机。
现在的问题就是每次开电脑写项目都需要起一系列软件、以及还要配置参数的组件们。
于是想着希望使用脚本尽量的简化这些没营养的准备工作。
正片开始:
1、bat脚本调用exe文件:可以使用start " " "D:\\a.exe" ,解释一下:(1)start可以理解开始执行(2)""英文引号是给这个将要启动的程序起一个名字(3)最后英文引号内部是a.exe的路径
2、在启动像nacos、minio这样的第三方组件时,往往需要我们手动在cmd窗口配置一些参数再启动,可以给这些操作写成一个bat脚本直接运行,原来在cmd窗口中输入的什么,bat文件中就写什么,比如我要单机启动nacos要如下配置参数后启动,可以把这一步操作写为bat脚本放在对应的文件夹下
3、bat调用bat文件:可以使用start " " cmd /k call b.bat,b.bat是被调用文件,解释一下:
" " 是一段字符串,代表新打开的cmd窗口的名字,可以随便起名。
/k 是表示新打开的cmd窗口在执行完命令后保存打开状态,如果希望执行完就关闭窗口就使用/c
call 当bat文件调用bat文件时得使用call命令
(1) 当两个bat文件在同一个文件夹下,则使用start " " cmd /k call b.bat 即可;
(2) 当两个bat文件不在同一个文件夹下,则需要先 cd /d D:\\xxx\\xxx,再用命令start " " cmd /k call b.bat
最终结果演示一下:
只需要双击该文件,就可以一键启动以上程序啦
shell脚本之一键部署PXE远程安装服务,将解放双手进行到底!
一键部署PXE
1. 编写脚本情况分析
- 部署之前检查tftp-server、xinetd是否安装,没有安装则进行安装,安装失败会退出;
- 进行一键部署dhcp服务,将本机作为dhcp服务器,并开启服务;
- 判断syslinux、vsftpd程序是否安装,没有安装则进行安装,安装失败会退出;
- 然后对配置文件进行修改。
2. 脚本代码部分
#!/bin/bash
# 一键部署PXE自动装机
# 检查tftp-server是否安装
if rpm -q tftp-server &> /dev/null
then
continue
else
if yum install -y tftp-server &> /dev/null
then
continue
else
echo -e "\\033[31;5m tftp-server安装失败,请检查yum源是否正常! \\033[0m"
exit
fi
fi
# 检查xinetd是否安装
if rpm -q xinetd &> /dev/null
then
continue
else
if yum install -y xinetd &> /dev/null
then
continue
else
echo -e "\\033[31;5m xinetd安装失败,请检查yum源是否正常! \\033[0m"
exit
fi
fi
# 修改tftp配置文件
sed -i '14 s/yes/no/' /etc/xinetd.d/tftp
# 判断tftp服务是否开启
if systemctl restart tftp &> /dev/null
then
# 判断xinetd服务是否开启
if systemctl restart xinetd &> /dev/null
then
continue
else
echo -e "\\033[31;5m xinetd启动失败,已退出! \\033[0m"
exit
fi
echo -e '\\033[34m tftp和xinetd服务安装启动完成!已设置开机自启动!\\033[0m'
else
echo -e "\\033[31;5m tftp启动失败,已退出! \\033[0m"
exit
fi
#!/bin/bash
#一键部署dhcp服务
# 判断光盘是否挂载到mnt目录下
if find /mnt/images/pxeboot/ -name "vmlinuz" &> /dev/null
then
continue
else
echo -e "\\033[31;5m 光盘未挂载或未挂载到/mnt目录! \\033[0m"
exit
fi
# 判断bind程序是否安装
if rpm -q dhcp &> /dev/null
then
continue
else
if yum install -y dhcp &> /dev/null
then
continue
else
echo -e "\\033[31;5m dhcp安装失败,请检查yum源是否正常! \\033[0m"
exit
fi
fi
# 修改dhcp配置文件
/bin/cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
sed -i '14 s/#//' /etc/dhcp/dhcpd.conf
ip=`cat /etc/sysconfig/network-scripts/ifcfg-ens33 | grep IPADDR | awk -F= '{print $2}'
`
sed -i '/ddns-update-style/a\\next-server '$ip';' /etc/dhcp/dhcpd.conf
sed -i '/next-server/a\\filename "pxelinux.0";' /etc/dhcp/dhcpd.conf
host=`cat /etc/sysconfig/network-scripts/ifcfg-ens33 | grep IPADDR | awk -F= '{print $2}' | awk -F. '{print $4}'
`
sed -i '34 s/10.254.239.0/'$ip'/' /etc/dhcp/dhcpd.conf
sed -i '34 s/'$host'/0/' /etc/dhcp/dhcpd.conf
sed -i '34 s/255.224/255.0/' /etc/dhcp/dhcpd.conf
sed -i '35 s/10.254.239.10/'$ip'/' /etc/dhcp/dhcpd.conf
sed -i '35 s/'$host'/100/' /etc/dhcp/dhcpd.conf
sed -i '35 s/10.254.239.20/'$ip'/' /etc/dhcp/dhcpd.conf
sed -i '35 s/'$host'/200/' /etc/dhcp/dhcpd.conf
sed -i '36 s/rtr-239-0-1.example.org, rtr-239-0-2.example.org/'$ip'/' /etc/dhcp/dhcpd.conf
# 判断dhcp服务是否开启
if systemctl restart dhcpd &> /dev/null
then
echo -e '\\033[34m dhcpd服务安装启动完成!已设置开机自启动!\\033[0m'
else
echo -e "\\033[31;5m dhcpd启动失败,已退出! \\033[0m"
exit
fi
/bin/cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/
/bin/cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/
# 判断syslinux程序是否安装
if rpm -q syslinux &> /dev/null
then
continue
else
if yum install -y syslinux &> /dev/null
then
continue
else
echo -e "\\033[31;5m syslinux安装失败,请检查yum源是否正常! \\033[0m"
exit
fi
fi
/bin/cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
# 判断vsftpd程序是否安装
if rpm -q vsftpd &> /dev/null
then
continue
else
if yum install -y vsftpd &> /dev/null
then
continue
else
echo -e "\\033[31;5m vsftpd安装失败,请检查yum源是否正常! \\033[0m"
exit
fi
fi
mkdir /var/ftp/centos7
echo -e "\\033[35;5m 正在复制镜像,请等待......... \\033[0m"
/bin/cp -rf /mnt/* /var/ftp/centos7/
# 判断vsftpd服务是否开启
if systemctl restart vsftpd &> /dev/null
then
echo -e '\\033[34m syslinux和vsftpd服务启动完成!已设置开机自启动!\\033[0m'
else
echo -e "\\033[31;5m vsftpd启动失败,已退出! \\033[0m"
exit
fi
mkdir /var/lib/tftpboot/pxelinux.cfg
echo 'default auto
prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://'$ip'/centos7
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://'$ip'/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://'$ip'/centos7
' > /var/lib/tftpboot/pxelinux.cfg/default
systemctl stop firewalld
setenforce 0 &> /dev/null
echo -e '\\033[36m pxe一键装机部署完毕!请开始你的表演!\\033[0m'
3. 实验部分
以上是关于用bat脚本解放双手的主要内容,如果未能解决你的问题,请参考以下文章
shell脚本之一键部署PXE远程安装服务,将解放双手进行到底!
shell脚本之一键部署web服务器Nginx,日常解放双手!