bash shell 脚本使用记录
简介 每个脚本都放在单独目录中,清晰可见 以实际应用场景为基础的脚本代码
包含背景需求,功能介绍,使用介绍 ---> xxx.readme 代码实现 ---> xxx.sh
##This is analysis_dir.readme
####背景需求
目录下面有N个文件和目录,且都是存放的是脚本文件;
那么分析这些脚本的类型种类,总代码长度,平均代码长度等
并想找出那些代码行数大于150行的脚本,命名后放到一个新目录中
####功能介绍
1.找出代码行数大于n行的脚本文件,并复制到指定目录
默认n=100; 指定目录:~/morelines;
2.给出一些统计信息:
总共多少个脚本
共多少行代码
平均代码长度
最长有多长
最短有多长
注释平均占比
####使用介绍
1.analysis_dir.sh {source_dir_name} [dir] [n]
####测试
使用script目录作为例子
aiapple@ubuntu:~/git/my-bash-shell/analysis_dir$ ./analysis_dir.sh script/ copy 150
there is 217 lines in script/check_cpu.sh
there is 217 lines in script/check_cpu.sh.bak
there is 197 lines in script/check_mem.pl
there is 167 lines in script/check_mem.sh
there is 200 lines in script/check_mem.sh.bak
there is 164 lines in script/rc.functions
共有38个脚本
共有1643行代码
平均有43.23行
最大的有217行
最小的有3行
注释有230行
注释占比13.00%
aiapple@ubuntu:~/git/my-bash-shell/analysis_dir$ ls -l copy/
ls: 初始化月份字符串出错
总用量 44
-rwxrwxr-x 1 aiapple aiapple 6792 10-28 13:40 check_cpu.sh
-rwxrwxr-x 1 aiapple aiapple 6792 10-28 13:40 check_cpu.sh.bak
-rwxrwxr-x 1 aiapple aiapple 6643 10-28 13:40 check_mem.pl
-rwxrwxr-x 1 aiapple aiapple 4435 10-28 13:40 check_mem.sh
-rwxrwxr-x 1 aiapple aiapple 5840 10-28 13:40 check_mem.sh.bak
-rwxrwxr-x 1 aiapple aiapple 3511 10-28 13:40 rc.functions
======================================================================================
##This is cp_info_into_file.readme
####背景需求
将指定类型文本的信息提取并加到指定文本中
例如:
有n个脚本readme文件,且在不同目录下.如/analysis_dir.readme且这些文件中都有背景信息,功能信息;
此时要将这些背景信息和各自脚本名如analysis_dir.sh,都自动加到如README.md当中;
####功能介绍
1.遍历my-bash-shell目录找到xxx.readme文件
2.将xxx.readme内容添加到README.md中去
3.自动比较各文件是否更新如已经更新,则替换为最新的内容;
#####可扩展功能:
1.判断原文件是否在,如果原文件不在,则认为整个工程已删除,则也删除README.md中对应内容;
####使用介绍
./cp_info_into_file.sh
####测试
aiapple@ubuntu:~/git/my-bash-shell/cp_info_into_file$ ./cp_info_into_file.sh
目录已存在删除重建:d,更新:p
my_vim.readme 已经更新内容
======================================================================================
##This is login_manege.readme
####背景需求
管理服务器的时候,难免要登陆到各机器去察看系统情况.
每次都需要IP 密码的输入 太重复.尤其是在短时间内,
退出登陆后,又要再此登陆,不断在输入 同样的IP,密码.
因此一个自动化登陆管理脚本是很有效果
####功能介绍
1.使用别名直接登陆:
基于SSH
判断网路是否通
2.管理登陆帐号
添加:判断是否存在,判断网络是否通
删除
察看
更改别名:先删再加,只是IP不删
3.察看使用帮助
#####问题:
1.密码此时是明文存在server.cnf文件中,显然不合适
2.ssh登陆尚不稳定
3.若某别名的前缀,与另一个别名一样,则无法正常登陆
如:
aliyun root shhsdhf 12.1.1.7
ali root dawang 139.196.58.188
此时登陆aliyun,是可以的。但ali则会出错
4.登陆超时没有自动退出。
####使用介绍
登陆
login_manage.sh -i alias_name
添加
login_manage.sh -a alias_name user passwd ip
删除
login_manage.sh -d [ip|alias_name]
更改别名
login_manage.sh -c source_alias_name destiant_alias_name
察看
login_manage.sh -l
使用帮助
login_manage.sh -h
####测试
aiapple@ubuntu:~/git/my-bash-shell/login_manage$ ./login_manege.sh -i ali
准备登陆ali,IP:139.196.58.188
网络畅通。。。。。
执行登陆程序
spawn ssh [email protected]
[email protected]'s password:
Welcome to Ubuntu 12.04.5 LTS (GNU/Linux 3.2.0-67-generic-pae i686)
Documentation: https://help.ubuntu.com/
New release '14.04.1 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
Welcome to aliyun Elastic Compute Service!
Last login: Sun Nov 6 19:10:56 2016 from 114.219.76.109
root@iZ11xkhdslnZ:~#
======================================================================================
##This is login_notify.readme
####背景需求
有人到你家里来你还不知道。
家里东西被搬光,你却不知道。
还是装个云摄像头吧。
####功能介绍
1.有人登陆系统则发邮件
邮件内容:用户名,终端,时间,主机名
现在操作命令的历史文件
2.有人退出系统则发邮件
邮件内容:用户名,终端,时间,主机名
现在操作命令的历史文件
录制其操作的脚本文件
内容包括:
录制其操作的脚本文件
操作命令的历史文件
登陆log文件:
登陆时登陆中登陆后
分析:
通过/var/log/auth.log监控用户登陆行为
如果有用户登陆/退出则给root发邮件
以登陆时间和用户来控制不重复发送
每20秒统计一下信息
可以使用cron任务调度
上一次用户登陆状态
与这此用户登陆状态
root在/etc/profile 中添加script,并保存在/root目录中
等到用户退出时将,录制文件,发送邮件。
####使用介绍
####测试
======================================================================================
##This is my_vim.readme
####背景需求
脚本编写时总有固定的头格式:脚本解析器位置,脚本名,作者,时间,功能;等
每次都重复输入很多东西,是时候写个脚本改变这一切了;
####功能介绍
1.根据脚本名称如my.sh,my.py
自动生成脚本解析器位置,脚本名,作者,时间,
2.使用参数,输入功能简述;
3.如果是my.readme文件则
自动生成:##This is file_name 背景需求 功能介绍 使用介绍 测试
4.除基本功能外,还增加了输入参数检测,文件是否存在的交互等功能
5.在完成上述功能之后创建脚本之后,直接调用vim接口使之直接进入vim进程
####使用介绍
1.my_vim.sh my.py
2.my_vim.sh my.py [-d] "your describe"
####测试
测试一:
zane@zane:~/github/my-bash-shell/my_vim$ ./my_vim.sh my.sh
#!/bin/bash
#############################################
##
#文件名: my.sh
#作者名: zane
#时间 : 2016-10-27
#简介 :
##
#############################################
测试二:
zane@zane:~/github/my-bash-shell/my_vim$ ./my_vim.sh my.py
#!/usr/bin/python
#############################################
##
#文件名: my.py
#作者名: zane
#时间 : 2016-10-27
#简介 :
##
#############################################
测试三:
zane@zane:~/github/my-bash-shell/my_vim$ ./my_vim.sh my_python.py -d "this is a test"
#!/usr/bin/python
#############################################
##
#文件名: my_python.py
#作者名: zane
#时间 : 2016-10-27
#简介 : this is a test
##
#############################################
======================================================================================
##This is service_monitor.readme
####背景需求
运维核心就是保证线上业务稳定运而线上业务是否在运行呢?<br>
所以监控线上业务进程是否在很重要.
####功能介绍
开机自启动<br>
监控httpd服务默认端口80<br>
服务不在则重启服务并发送告警<br>
####使用介绍
####测试
======================================================================================
##This is sys_monitor.readme
####背景需求
监控服务器状态及时预警是运维职责所在。
####功能介绍
监控服务器关键状态指标,发送邮件
指标:
CPU
MEMORY
SWAP
ROOT/USR/VAR DISK SPACE
邮件:
发送给本机邮件
周期报警:
如若报警为解除,则建立周期任务,给刚上线的用户直接弹消息
####使用介绍
aiapple@ubuntu:/git/my-bash-shell/sys_monitor$ ./sys_monitor.sh
The file is exsit
Delete:d Flush:f
Adding a new report in this file........
####测试
======================================================================================