欢迎访问我的博客,你的支持,是我最大的动力!

Linux Shell 脚本编写

Linux 马从东 176℃ 评论
目录:
[显示]

注意事项:
1、开头加解释器 #!/bin/bash
2、四空格缩进,多加注释
3、变量名大写,局部变量小写,函数名小写
4、默认变量是全局的,函数中变量前加 local 可指定为局部变量
5、set -e 遇到非0时退出脚本
6、set -x 打印执行过程

echo 参数:
-n  不打印末尾的换行符
-e 允许使用转义字符
-E 默认,禁用转义字符

获取随机8位字符

获取随机8位字符串

echo $RANDOM | md5sum | cut -c 1-8
cc5f91fa
openssl rand -base64 4
rbHJFA==
cat /proc/sys/kernel/random/uuid | cut -c 1-8
5d5f4b51
# /proc/sys/kernel/random/uuid 生成随机uuid

获取随机8位数字

echo $RANDOM | cksum | cut -c 1-8
openssl rand -base64 4 | cksum | cut -c 1-8
date +%N | cut -c 1-8
# cksum 打印CRC校验和统计字节
字符颜色

前景、背景、特殊效果可组合使用,用";"分隔,没有顺序,如"\033[5;46;30m要显示的内容\033[0m"

字符颜色:
30 -> 黑色
31 -> 红色
32 -> 绿色
33 -> 黄色
34 -> 蓝色
35 -> 紫色
36 -> 天蓝色
37 -> 白色

背景颜色:
40 -> 黑色
41 -> 红色
42 -> 绿色
43 -> 黄色
44 -> 蓝色
45 -> 紫色
46 -> 天蓝色
47 -> 白色

特殊效果:
0 -> 关闭特殊效果
1 -> 高亮显示
4 -> 下划线
7 -> 反白显示
8 -> 不可见

批量创建用户

状态检查

检查软件包是否安装

检查服务状态

主机存活检查

监控CPU/内存/磁盘利用率

CPU

内存

磁盘

批量主机磁盘利用率监控
需要ssh免登录,且准备 host.info 文件,格式为 IP User Port
局限性:host.info文件中 IP必须唯一

参考:shell脚本-高级变量

网站可用性

URL可用性检查

判断三次URL可用性

MySQL主从同步状态

命令行代理

环境变量有 http_proxy https_proxy ftp_proxy
exec ${@:1} 可以执行脚本后面的指令,并携带脚本中的环境变量
这样不会将变量注入到全局变量中

/usr/local/bin/proxy  #需要有可执行权限

使用方法:
proxy curl www.google.com

查看tcp连接状态

netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
# 80端口请求数最高的ip
netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20

expect 交互式自动化

# 安装 5.45
yum install expect  # 依赖tcl (编程语言)
安装后提供以下命令:autoexpect dislocate expect ftp-rfc kibitz lpunlock mkpasswd passmass
rftp rlogin-cwd timed-read timed-run unbuffer weather xkibitz
usage: expect [-div] [-c cmds] [[-f] cmdfile] [args]

send,向进程发送字符串
expect,从进程接收字符串,可接收正则表达式参数或字符串参数
# expect "hello" {send "read hello"}
spawn,启动新的进程,spawn后的send和expect会和spawn打开的进程进行交互
interact,允许用户交互

执行 expect ssh.sh

 

转至:第十二章 Shell脚本编写及常见面试题(一)

转载请注明:轻风博客 » Linux Shell 脚本编写

喜欢 (0)or分享 (0)