用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远程安装服务,将解放双手进行到底!

1. 编写脚本情况分析

  1. 部署之前检查tftp-server、xinetd是否安装,没有安装则进行安装,安装失败会退出;
  2. 进行一键部署dhcp服务,将本机作为dhcp服务器,并开启服务;
  3. 判断syslinux、vsftpd程序是否安装,没有安装则进行安装,安装失败会退出;
  4. 然后对配置文件进行修改。

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,日常解放双手!

自动化运维必须要学的Shell脚本之——免交互操作,分分钟解放双手!

干货 | 解放双手,用Python实现自动发送邮件

解放双手 解放F5键刷新

来了!解放你 Flutter Assets 的双手