--作者:飞翔的小胖猪

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

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

说明

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

每篇文章包含5个脚本。

总进度:8/12

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

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

主要内容

21年3月3日-nmap检测主机通断脚本

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

脚本说明

执行脚本批量检测给定的主机的网络通断情况,使用nmap软件,适合于1000+以上的环境上比较科学,最后生成一个结果日志文件。测试时是直接输出到屏幕上。

文件说明

nmap_check_machine.sh:脚本主体文件

配置文件

依次在配置文件中添加需要检测主机ip地址。

[root@135 36_nmap_check_machine]# cat host_list.txt
192.168.111.11
192.168.111.12
192.168.111.135
192.168.111.136
192.168.111.124

脚本主体

[root@135 36_nmap_check_machine]# cat nmap_check_machine.sh
#/bin/bash
nmap_def(){
nmap -sP --min-hostgroup 1024 --min-parallelism 1024 -iL host_list.txt -oG .output.txt &> /dev/null
sleep 1
cat .output.txt | awk '/\<Host\>/{print $2}'|sort -n|awk '{gsub(/^\s+|\s+$/, "");print}' > .ip_out_format_list.txt
sleep 1
sort -n host_list.txt > .format_host_list.txt
#diff host_list.txt .ip_out_format_list.txt | grep '<' | awk '{print $2}' > .insert_offline.list
diff .format_host_list.txt .ip_out_format_list.txt | awk '/</{print $2}' > .insert_offline.list
if [[ ! -s .insert_offline.list ]];then
echo "`date` all machine networks are working "
else
#echo -e "\n ---------------------ERROR-------------------------" >> /var/log/message
#echo -e "`date` The folling machine network is blocked " >> /var/log/message
#cat .insert_offline.list >> /var/log/message
#echo -e "---------------------ERROR-------------------------\n" >> /var/log/message
echo -e "\n ---------------------ERROR-------------------------"
echo -e "`date` The folling machine network is blocked "
cat .insert_offline.list
echo -e "---------------------ERROR-------------------------\n"
fi
} clear_file(){
rm -rf .format_host_list.txt
rm -rf .insert_offline.list
rm -rf .ip_out_format_list.txt
rm -rf .output.txt
} main(){
nmap_def
echo -e "\e[33m开始清除临时文件.......\e[0m"
clear_file
} main

结果

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

21年3月4日-检测磁盘根目录和内存值脚本

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

脚本说明

每间隔2秒,监控本机内存和硬盘剩余空间,剩余内存小于500M、根分区剩余空间小于1000M时,屏幕输出信息。

文件说明

check_mem_mout.sh:脚本主体文件

脚本主体

[root@135 37_check_mem_mout]# cat check_mem_mout.sh
#!/bin/bash # 每间隔2秒,监控本机内存和硬盘剩余空间,剩余内存小于500M、根分区剩余空间小于1000M时,屏幕输出信息。 check_resources(){
while :
do
# 提取根分区剩余空间
disk_size=$(df -P / | awk '/\//{print $4}') # 提取内存剩余空间
mem_size=$(free | awk '/Mem/{print $4}')
# 注意内存和磁盘提取的空间大小都是以 Kb 为单位
if [ $disk_size -le 512000 -a $mem_size -le 1024000 ];then
echo -e "\e[31m主机资源不足\e[0m"
fi
echo -e "\e[33m磁盘可用: ${disk_size}KB"
echo -e "\e[34m内存使用: ${mem_size}kB\e[0m\n" sleep 2
done
} main(){
check_resources
} main

结果

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

21年3月5日-石头剪刀布脚本

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

脚本说明

石头剪刀布脚本,直到你赢了才会退出,待完善。

文件说明

game_of_scissors_paper_stone.sh:脚本主体文件

脚本主体

[root@135 38_game_of_scissors_paper_stone]# cat game_of_scissors_paper_stone.sh
#!/bin/bash start_game(){
game=(石头 剪刀 布)
num=$[RANDOM%3]
computer=${game[$num]}
# 通过随机数获取计算机的出拳
# 出拳的可能性保存在一个数组中,game[0],game[1],game[2]分别是 3 中不同的可能 echo "请根据下列提示选择您的出拳手势"
echo "1.石头"
echo "2.剪刀"
echo "3.布" read -p "请选择 1‐3:" person
case $person in
1)
if [ $num -eq 0 ]
then
echo "平局"
elif [ $num -eq 1 ]
then
echo "你赢"
else
echo "计算机赢"
fi;;
2)
if [ $num -eq 0 ]
then
echo "计算机赢"
elif [ $num -eq 1 ]
then
echo "平局"
else
echo "你赢"
fi;;
3)
if [ $num -eq 0 ]
then
echo "你赢"
elif [ $num -eq 1 ]
then
echo "计算机赢"
else
echo "平局"
fi;;
*)
echo "必须输入 1‐3 的数字"
esac
} main(){
start_game
} main

结果

执行结果

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

21年3月6日-备份/etc目录文件脚本

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

脚本说明

获取当前的年月日作为/etc/备份文件路径生成/etc/目录文件备份文件,可添加到计划任务中每天定时执行,也可以参看之前的脚本实现值保留7天的文件。

文件说明

forget_mysql_password.sh:脚本主体文件

脚本主体

[root@135 39_auto_bak_etc]# cat auto_bak_etc.sh
#!/bin/bash
bak_etc(){
bak_dir='/bak_etc'
echo -e "\033[33m备份目录为:${bak_dir}"
mkdir -p ${bak_dir}
YY=`date +%y`
MM=`date +%m`
DD=`date +%d` bak_file_name=${YY}${MM}${DD}_etc.tar.gz
tar zcvf ${bak_dir}/${bak_file_name} /etc &>/dev/null
if [ -f ${bak_dir}/${bak_file_name} ];then
echo -e "\e[32m备份成功,ok!\e[0m"
echo -e "\e[34m备份文件为:${bak_dir}/${bak_file_name}\033[0m"
fi
} main(){
bak_etc
} main

结果

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

21年3月7日-文件大小写转换脚本

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

脚本说明

自定义字符转换脚本,显示当前目录下ls命令结果找出来的字符,小写转换为大写,大写转换为小写,数字不动。

文件说明

upper_lower.sh:脚本主体文件

脚本主体

[root@135 40_toggle_case]# cat upper_lower.sh
#!/bin/bash
#不支持中文字符,谢谢。
upper_lower(){
for x in `ls`
do
echo -e "\e[31m此时接收到的字符为: \e[34m${x}\e[0m"
str_len=${#x}
#echo "输入字符串长度为${#x} "
for i in `seq 0 $[str_len-1] `
do
#echo "当前位置的字符为${x:$i:1}"
str_check=${x:$i:1}
case "${str_check}" in
[[:lower:]])
#echo "小写字母"
echo -ne "${str_check}"|tr '[a-z]' '[A-Z]'
;;
[[:upper:]])
#echo "大写字母"
echo -ne "${str_check}"|tr '[A-Z]' '[a-z]'
;;
*)
echo -ne "${str_check}"
;;
esac
done
echo -e "\n\e[33m转换下一个字符\e[0m\n"
done
} main(){
upper_lower
} main

结果

执行结果

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

60天shell脚本计划-8/12-渐入佳境的更多相关文章

  1. 60天shell脚本计划-12/12-渐入佳境

    --作者:飞翔的小胖猪 --创建时间:2021年3月23日 --修改时间:2021年3月27日 说明 每日上传更新一个shell脚本,周期为60天.如有需求的读者可根据自己实际情况选用合适的脚本,也可 ...

  2. 60天shell脚本计划-11/12-渐入佳境

    --作者:飞翔的小胖猪 --创建时间:2021年3月18日 --修改时间:2021年3月22日 说明 每日上传更新一个shell脚本,周期为60天.如有需求的读者可根据自己实际情况选用合适的脚本,也可 ...

  3. 60天shell脚本计划-10/12-渐入佳境

    --作者:飞翔的小胖猪 --创建时间:2021年3月13日 --修改时间:2021年3月17日 说明 每日上传更新一个shell脚本,周期为60天.如有需求的读者可根据自己实际情况选用合适的脚本,也可 ...

  4. 60天shell脚本计划-9/12-渐入佳境

    --作者:飞翔的小胖猪 --创建时间:2021年3月8日 --修改时间:2021年3月12日 说明 每日上传更新一个shell脚本,周期为60天.如有需求的读者可根据自己实际情况选用合适的脚本,也可在 ...

  5. 60天shell脚本计划-7/12-渐入佳境

    --作者:飞翔的小胖猪 --创建时间:2021年2月26日 --修改时间:2021年3月2日 说明 每日上传更新一个shell脚本,周期为60天.如有需求的读者可根据自己实际情况选用合适的脚本,也可在 ...

  6. 60天shell脚本计划-6/12-渐入佳境

    --作者:飞翔的小胖猪 --创建时间:2021年2月21日 --修改时间:2021年2月25日 说明 每日上传更新一个shell脚本,周期为60天.如有需求的读者可根据自己实际情况选用合适的脚本,也可 ...

  7. 60天shell脚本计划-5/12-渐入佳境

    --作者:飞翔的小胖猪 --创建时间:2021年2月16日 --修改时间:2021年2月20日 说明 每日上传更新一个shell脚本,周期为60天.如有需求的读者可根据自己实际情况选用合适的脚本,也可 ...

  8. 60天shell脚本计划-4/12-渐入佳境

    --作者:飞翔的小胖猪 --创建时间:2021年2月11日 --修改时间:2021年2月15日 说明 每日上传更新一个shell脚本,周期为60天.如有需求的读者可根据自己实际情况选用合适的脚本,也可 ...

  9. 60天shell脚本计划-3/12-渐入佳境

    --作者:飞翔的小胖猪 --创建时间:2021年2月6日 --修改时间:2021年2月10日 说明 每日上传更新一个shell脚本,周期为60天.如有需求的读者可根据自己实际情况选用合适的脚本,也可在 ...

随机推荐

  1. 元编程 (meta-programming)

    元编程 (meta-programming) 术语 meta:英语前缀词根,来源于希腊文.中国大陆一般翻译成"元". 在逻辑学中,可以理解为:关于X的更高层次,同时,这个更高层次的 ...

  2. 前端基础之javaScript(函数)

    目录 一:javaScript函数 1.函数关键字 2.格式 3.无参函数 4.有参函数 二:关键字arguments 1.能够获取函数接受的索引参数 2.关键字arguments(限制函数不能多也不 ...

  3. NFS数据共享(全面讲解使用教程)

    目录 一:NFS数据共享 1.NFS简介: 2.什么是NFS? 3.NFS的应用 二:NFS数据共享实践 二:NFS配置详解 1.控制文件权限 三:配置文件分类 四:NFS统一用户 1.创建用户(客户 ...

  4. Java动态绑定和静态绑定-多态

    一.问题 Java方法调用过程中,Jvm是如何知道调用的是哪个类的方法?Jvm又是如何处理?   二.概念 a.当子类和父类(接口和实现类)存在同一个方法时,子类重写父类(接口)方法时,程序在运行时调 ...

  5. NSInvocation的基本使用

    //封装invacation可以调用多个参数的方法 -(void)invacation { //1.创建一个MethodSignature,签名中保存了方法的名称,参数和返回值 //这个方法属于谁,那 ...

  6. 高德地图定位api以及导航和定位 位置的偏差

    <script type="text/javascript" src="http://webapi.amap.com/maps?v=1.4.2&key=37 ...

  7. NSLog输出格式及随机数

    NSLog输出格式及随机数 %@ 对象 %d, %i 整数 (%i和%d无差别,%i是老式写法,%d是新式写法而已.) %u 无符整形 %f 浮点/双字 %x, %X 二进制整数 %o 八进制整数 % ...

  8. shell脚本三剑客之awk

    shell脚本之awk命令 AWK 是一种处理文本文件的语言,是一个强大的文本分析工具 适合小型文本数据 1.工作原理 2.AWK格式 3.按行输入文本 4.按字段输入文本 5.通过管道符号,双引号调 ...

  9. API 接口的安全设计验证:ticket,签名,时间戳

    一.背景 1.与前端对接的API接口,如果被第三方抓包并进行恶意篡改参数,可能会导致数据泄露,甚至会被篡改数据 2.与第三方公司的接口对接,第三方如果得到你的接口文档,但是接口确没安全校验,是十分不安 ...

  10. linux_15

    实现基于MYSQL验证的vsftpd虚拟用户访问 配置samba共享,实现/www目录共享 使用rsync+inotify实现/www目录实时同步 LVS调度算法总结 LVS的跨网络DR实现