打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
100天shell脚本计划-9/20-渐入佳境

--作者:飞翔的小胖猪

--创建时间:2021年3月3日

--修改时间:2021年3月7日

说明

 每日上传更新一个shell脚本,周期为100天。如有需求的读者可根据自己实际情况选用合适的脚本,也可在评论区留言提出脚本需求,作者会尽快根据需求编写相关脚本对功能进行实现。

 每篇文章包含5个脚本。

总进度:9/20

上一篇脚本链接:https://www.cnblogs.com/Pigs-Will-Fly/p/14495999.html

下一篇脚本链接:null

主要内容

21年3月8日-加解密脚本

************************************************************************************************************************************************************************************************************************************

脚本说明

使用xxd+bc+dc实现字符串的加密解密,只适用于英文和数字,中文不支持。

文件说明

custome_encrypt_string.sh:脚本主体文件

脚本主体

[root@135 41_custome_encrypt_string]# cat custome_encrypt_string.sh 
#!/bin/bash
#自定义一个简单的一键加密解密的命令,并封装成一个命令。

#加密
encrypt(){
  echo -e "\e[32m进行加密操作...................\e[0m"
  input_string=$1
  echo -e "\e[34m原字符串:\e[33m ${input_string}\e[0m"
  en_string=`echo "ibase=16; $(echo "${input_string}" |xxd -ps -u)" |bc`
  echo "原字符串:${input_string}  加密结果:${en_string}" >> .secure_string
  echo -e "\e[34m加密结果:\e[33m ${en_string}\e[0m ,信息已经保存到文件中。"
}


#解密
decryption(){
  #解密必须是数字,可以参考之前我判断字符串类型的脚本进行处理在https://www.cnblogs.com/Pigs-Will-Fly/p/14399775.html中第二脚本。
  echo -e "\e[32m进行解密操作...................\e[0m"
  input_string=$1
  echo -e "\e[34m原字符串:\e[33m ${input_string}\e[0m"
  #echo -e "${1}P"
  Decrypted_string=`dc -e ${1}P`
  echo -e "\e[34m解密结果:\e[33m ${Decrypted_string}\e[0m。"
}

#判断条件是否满足
check_env(){
  if which bc  &>/dev/null;then
    let bc_r=0
  else
    let bc_r=1
    echo -e "\e[31m bc软件不存在,请先安装。\e[0m"
  fi

  if which xxd &>/dev/null;then
    let xxd_r=0
  else
    let xxd_r=1
    echo -e "\e[31m xxd软件不存在,请先安装。\e[0m"
  fi

  if which dc &>/dev/null;then
    let dc_r=0
  else
    let dc_r=1
    echo -e "\e[31m dc软件不存在,请先安装。\e[0m"
  fi
  
  echo  -en "\e[34m环境检查结果: \e[0m"
  let total_r=${bc_r}+${xxd_r}+${dc_r}
  #echo -e "\e[33m环境检查的结果为:${total_r}\e[0m"
  if [  ${total_r} -eq 0 ];then
    echo  -e "\e[32m环境满足要求。\e[0m"
  else
    echo  -e "\e[31m环境不满足要求,无法进行后续操作,请检查相关软件是否存在。\e[0m"
    exit 66
  fi
  


}

#在main函数中判断用户的输入根据输入选择加密还是解密
main(){

  #判断函数是否有输入,加密解密选项可选,默认加密。 如果加密字符串不存在则提示命令不对,退出。
  input_type=${2:-encrypt}
  if [ -z "${1}" ];then
    echo -e "\e[31m Not input string。\n \e[33mUsage: input_string [encrypt|decryption]\e[0m"
    exit 55
  fi

  #检查系统环境是否满足脚本运行。
  check_env
 
  #按照不同的操作类型执行相应的操作。
  case ${input_type} in
    "encrypt")
      encrypt $1
      ;;
    "decryption")
      decryption $1
      ;;
    *)
     echo 'Usage: input_string [encrypt|decryption]'
     exit
    ;;
  esac
  echo -e "\e[0m"
}

main $1 $2

结果

执行结果

文件结果

**************************************************************************************************************2021年3月8日脚本结束*****************************************************************************************************************

 

21年3月9日-生成ansible role文件结构脚本

************************************************************************************************************************************************************************************************************************************

脚本说明

脚本通过用户键入的应用名,自动生成对应的roles目录结构及调用该roles的playbook文件。

文件说明

gen_ansible_dir_structure.sh:脚本主体文件

脚本主体

 

[root@135 42_gen_ansible_dir_structure]# cat gen_ansible_dir_structure.sh 
#!/bin/bash
#创建roles对应的文件夹结构
create_dir(){
  #获取用户输入的的应用名
  if [ -z "${1}" ];then
    echo -e "\e[31m 没有指定应用名,程序退出了,再见。\e[0m"
    exit 44
  fi 


  #创建目录
  input_dir_name=${1}
  mkdir roles/${input_dir_name}/{files,tasks,templates,vars,handlers,meta,default}  -p &>/dev/null

  dir_file=`pwd`
  echo -e "\e[34m文件夹创建结果: \e[0m"
  cd roles/${input_dir_name}/
  if [ -d files ] && [ -d tasks ] && [ -d templates ] && [ -d vars ] && [ -d handlers ] && [ -d meta ] && [ -d default ];then
    echo -e  "\e[32m目录创建完成。\e[0m"
  else  
    echo -e "\e[31m目录创建失败。具体信息。\033[0m"
    exit 33
  fi
}

create_file(){
  input_dir_name=$1

  cd ${dir_file}
  #判断是否存在文件,存在则提示是否继续,继续则备份原有文件。
  if [ -f roles/${input_dir_name}/tasks/main.yml ];then
    echo -e "\e[33m main.yml文件已经存在,确认是否继续生成。\e[0m"
    read -p "输入Y(继续) / N(退出),默认不继续:" input
    chose=${input:-N}

    #判断用户是否确定继续执行。
    if [ "${chose}"=="Y" ];then
      echo -e "\e[33m用户选择了继续执行。\e[0m"
      cp -rp roles/${input_dir_name}/tasks/main.yml roles/${input_dir_name}/tasks/main.yml.bak &>/dev/null
    else
      echo -e "\e[31m用户选择不继续执行,程序退出。\e[0m"
      exit 22
    fi
  fi
  
  #创建tasks下main.yml文件
  echo -e '- include: mode_1.yml\n- include: mode_2.yml\n- include: mode_3.yml' >  roles/${input_dir_name}/tasks/main.yml
  if [ -f ${input_dir_name}.yml  ];then
    echo -e "\e[31m同名调用文件已经存在,不创建新的文件,程序退出。\e[0m"
    exit 99
  fi
  echo -e "---\n- hosts: websrvs\n  remote_user: root\n  roles:\n    - ${input_dir_name}" > ${input_dir_name}.yml
  echo -e "\e[32m文件结构生成完成。\e[0m"
}

main(){
   create_dir $1
   create_file $1

}

main $1

结果

**************************************************************************************************************2021年3月9日脚本结束*****************************************************************************************************************

 

21年3月10日-XXXX脚本

************************************************************************************************************************************************************************************************************************************

脚本说明

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX。

文件说明

xxxxxxxxx.sh:脚本主体文件

配置文件

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

脚本主体

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

结果

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

**************************************************************************************************************2021年3月10日脚本结束*****************************************************************************************************************

 

21年3月11日-XXXX脚本

************************************************************************************************************************************************************************************************************************************

脚本说明

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX。

文件说明

xxxxxxxxx.sh:脚本主体文件

配置文件

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

脚本主体

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

结果

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

**************************************************************************************************************2021年3月11日脚本结束*****************************************************************************************************************

 

21年3月12日-XXXX脚本

************************************************************************************************************************************************************************************************************************************

脚本说明

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX。

文件说明

xxxxxxxxx.sh:脚本主体文件

配置文件

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

脚本主体

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

结果

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

**************************************************************************************************************2021年3月12日脚本结束*****************************************************************************************************************

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
R-loop数据分析之R-ChIP(数据预处理)
MYSQL 自动备份脚本
Linux Shell脚本的10个有用的“面试问题和解答”
DevStack剖析(四)文件分布&练习脚本
RHCE 系列(四): 使用 Shell 脚本自动化Linux 系统维护任务
iOS代码混淆
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服