Linux Shell脚本攻略的目录

Linux Shell脚本攻略的目录,第1张

第1章 小试牛刀

1.1 简介

1.2 终端打印

1.2.1 实战演练

1.2.2 补充内容

1.3 玩转变量和环境变量

1.3.1 预备知识

1.3.2 实战演练

1.3.3 补充内容

1.4 通过shell进行数学运算

1.4.1 预备知识

1.4.2 实战演练

1.5 玩转文件描述符和重定向

1.5.1 预备知识

1.5.2 实战演练

1.5.3 补充内容

1.6 数组和关联数组

1.6.1 预备知识

1.6.2 实战演练

1.6.3 补充内容

1.7 使用别名

1.7.1 预备知识

1.7.2 实战演练

1.7.3 补充内容

1.8 获取终端信息

1.8.1 预备知识

1.8.2 实战演练

1.9 获取、设置日期和延时

1.9.1 预备知识

1.9.2 实战演练

1.9.3 补充内容

1.10 调试脚本

1.10.1 预备知识

1.10.2 实战演练

1.10.3 补充内容

1.11 函数和参数

1.11.1 实战演练

1.11.2 补充内容

1.12 读取命令序列输出

1.12.1 预备知识

1.12.2 实战演练

1.12.3 补充内容

1.13 以不按回车键的方式读取字符“n”

1.13.1 预备知识

1.13.2 实战演练

1.14 字段分隔符和迭代器

1.14.1 预备知识

1.14.2 实战演练

1.15 比较与测试

1.15.1 预备知识

1.15.2 实战演练

第2章 命令之乐

2.1 简介

2.2 用cat进行拼接

2.2.1 预备知识

2.2.2 实战演练

2.2.3 工作原理

2.2.4 补充内容

2.3 录制与回放终端会话

2.3.1 预备知识

2.3.2 实战演练

2.3.3 工作原理

2.4 文件查找与文件列表

2.4.1 预备知识

2.4.2 实战演练

2.4.3 补充内容

2.5 玩转xargs

2.5.1 预备知识

2.5.2 实战演练

2.5.3 工作原理

2.5.4 补充内容

2.6 用tr进行转换

2.6.1 预备知识

2.6.2 实战演练

2.6.3 工作原理

2.6.4 补充内容

2.7 校验和与核实

2.7.1 预备知识

2.7.2 实战演练

2.7.3 工作原理

2.7.4 补充内容

2.8 排序、单一与重复

2.8.1 预备知识

2.8.2 实战演练

2.8.3 工作原理

2.8.4 补充内容

2.9 临时文件命名与随机数

2.9.1 实战演练

2.9.2 工作原理

2.10 分割文件和数据

2.10.1 工作原理

2.10.2 补充内容

2.11 根据扩展名切分文件名

2.11.1 实战演练

2.11.2 工作原理

2.12 批量重命名和移动

2.12.1 预备知识

2.12.2 实战演练

2.12.3 工作原理

2.13 拼写检查与词典 *** 作

2.13.1 实战演练

2.13.2 工作原理

2.14 交互输入自动化

2.14.1 预备知识

2.14.2 实战演练

2.14.3 工作原理

2.14.4 补充内容

第3章 以文件之名

3.1 简介

3.2 生成任意大小的文件

3.3 文本文件的交集与差集

3.3.1 预备知识

3.3.2 实战演练

3.4 查找并删除重复文件

3.4.1 预备知识

3.4.2 实战演练

3.4.3 工作原理

3.4.4 参考

3.5 创建长路径目录

3.5.1 预备知识

3.5.2 实战演练

3.6 文件权限、所有权和粘滞位

3.6.1 预备知识

3.6.2 实战演练

3.6.3 补充内容

3.7 创建不可修改文件

3.7.1 预备知识

3.7.2 实战演练

3.8 批量生成空白文件

3.8.1 预备知识

3.8.2 实战演练

3.9 查找符号链接及其指向目标

3.9.1 预备知识

3.9.2 实战演练

3.10 列举文件类型统计信息

3.10.1 预备知识

3.10.2 实战演练

3.10.3 工作原理

3.11 环回文件与挂载

3.11.1 预备知识

3.11.2 实战演练

3.11.3 补充内容

3.12 生成ISO文件及混合ISO

3.12.1 预备知识

3.12.2 实战演练

3.12.3 补充内容

3.13 查找文件差异并进行修补

3.13.1 实战演练

3.13.2 补充内容

3.14 head与tail——打印文件的前10行和后10行

3.15 只列出目录的其他方法

3.15.1 预备知识

3.15.2 实战演练

3.16 在命令行中用pushd和popd快速定位

3.16.1 预备知识

3.16.2 实战演练

3.16.3 补充内容

3.17 统计文件的行数、单词数和字符数

3.17.1 预备知识

3.17.2 实战演练

3.17.3 补充知识

3.18 打印目录树

3.18.1 预备知识

3.18.2 实战演练

3.18.3 补充内容

第4章 让文本飞

4.1 简介

4.2 正则表达式入门

4.2.1 预备知识

4.2.2 实战演练

4.2.3 工作原理

4.2.4 补充内容

4.3 用grep在文件中搜索文本

4.3.1 预备知识

4.3.2 实战演练

4.3.3 补充内容

4.4 用cut按列切分文件

4.4.1 预备知识

4.4.2 实战演练

4.4.3 补充内容

4.5 统计特定文件中的词频

4.5.1 预备知识

4.5.2 实战演练

4.5.3 工作原理

4.5.4 参考

4.6 sed入门

4.6.1 实战演练

4.6.2 补充内容

4.7 awk入门

4.7.1 实战演练

4.7.2 工作原理

4.7.3 补充内容

4.8 替换文本或文件中的字符串

4.8.1 预备知识

4.8.2 实战演练

4.8.3 补充内容

4.8.4 参考

4.9 压缩或解压缩JavaScript

4.9.1 预备知识

4.9.2 工作原理

4.9.3 工作原理

4.9.4 参考

4.10 对文件中的行、单词和字符进行迭代

4.10.1 预备知识

4.10.2 实战演练

4.10.3 工作原理

4.10.4 参考

4.11 按列合并文件

4.11.1 工作原理

4.11.2 参考

4.12 打印文件或行中的第n个单词或列

4.12.1 预备知识

4.12.2 实战演练

4.12.3 参考

4.13 打印不同行或样式之间的文本

4.13.1 预备知识

4.13.2 实战演练

4.13.3 参考

4.14 用脚本检验回文字符串

4.14.1 预备知识

4.14.2 工作原理

4.14.3 工作原理

4.14.4 补充内容

4.14.5 参考

4.15 以逆序形式打印行

4.15.1 预备知识

4.15.2 实战演练

4.15.3 工作原理

4.15.4 参考

4.16 解析文本中的电子邮件地址和URL

4.16.1 预备知识

4.16.2 实战演练

4.16.3 工作原理

4.16.4 参考

4.17 打印文件中某个样式之前或之后的n行

4.17.1 预备知识

4.17.2 实战演练

4.17.3 参考

4.18 在文件中移除包含某个单词的句子

4.18.1 预备知识

4.18.2 实战演练

4.18.3 工作原理

4.18.4 参考

4.19 用awk实现head、tail和tac

4.19.1 预备知识

4.19.2 实战演练

4.19.3 工作原理

4.19.4 参考

4.20 文本切片与参数 *** 作

4.20.1 实战演练

4.20.2 参考

第5章 一团乱麻?没这回事

5.1 入门

5.2 网站下载

5.2.1 预备知识

5.2.2 实战演练

5.2.3 补充内容

5.3 以格式化纯文本形式下载网页

5.4 cURL入门

5.4.1 预备知识

5.4.2 实战演练

5.4.3 补充内容

5.4.4 参考

5.5 从命令行访问Gmail

5.5.1 实战演练

5.5.2 工作原理

5.5.3 参考

5.6 解析网站数据

5.6.1 实战演练

5.6.2 工作原理

5.6.3 参考

5.7 制作图片抓取器及下载工具

5.7.1 实战演练

5.7.2 工作原理

5.7.3 参考

5.8 网页相册生成器

5.8.1 预备知识

5.8.2 实战演练

5.8.3 工作原理

5.8.4 参考

5.9 Twitter命令行客户端

5.9.1 预备知识

5.9.2 实战演练

5.9.3 工作原理

5.9.4 参考

5.10 基于Web后端的定义查询工具

5.10.1 预备知识

5.10.2 实战演练

5.10.3 工作原理

5.10.4 参考

5.11 查找网站中的无效链接

5.11.1 预备知识

5.11.2 实战演练

5.11.3 工作原理

5.11.4 参考

5.12 跟踪网站变更

5.12.1 预备知识

5.12.2 实战演练

5.12.3 工作原理

5.12.4 参考

5.13 以POST方式发送网页并读取响应

5.13.1 预备知识

5.13.2 实战演练

5.13.3 补充内容

5.13.4 参考

第6章 B计划

6.1 简介

6.2 用tar归档

6.2.1 预备知识

6.2.2 实战演练

6.2.3 补充知识

6.2.4 参考

6.3 用cpio归档

6.4 用gunzip或gzip压缩

6.4.1 实战演练

6.4.2 补充内容

6.4.3 参考

6.5 用bunzip或bzip压缩

6.5.1 实战演练

6.5.2 补充内容

6.5.3 参考

6.6 用lzma压缩

6.6.1 实战演练

6.6.2 补充内容

6.6.3 参考

6.7 用zip归档和压缩

6.8 超高压缩率的squashfs文件系统

6.8.1 预备知识

6.8.2 实战演练

6.8.3 补充内容

6.9 加密工具与散列

6.10 用raync备份系统快照

6.10.1 实战演练

6.10.2 补充内容

6.11 用Git备份版本控制

6.11.1 预备知识

6.11.2 实战演练

6.12 用dd克隆磁盘

6.12.1 预备知识

6.12.2 实战演练

6.12.3 补充内容

6.12.4 参考

第7章 无网不利

7.1 简介

7.2 联网知识入门

7.2.1 新手上路

7.2.2 实战演练

7.2.3 补充内容

7.2.4 参考

7.3 使用ping

7.3.1 实战演练

7.3.2 补充内容

7.4 列出网络上所有的活动主机

7.4.1 新手上路

7.4.2 实战演练

7.4.3 工作原理

7.4.4 补充内容

7.4.5 参考

7.5 传输文件

7.5.1 新手上路

7.5.2 实战演练

7.5.3 补充内容

7.5.4 参考

7.6 用脚本设置以太网与无线LAN

7.6.1 新手上路

7.6.2 实战演练

7.6.3 工作原理

7.6.4 参考

7.7 用SSH实现无密码自动登录

7.8 用SSH在远程主机上运行命令

7.8.1 新手上路

7.8.2 实战演练

7.8.3 补充内容

7.8.4 参考

7.9 在本地挂载点上挂载远程驱动器

7.9.1 新手上路

7.9.2 实战演练

7.9.3 参考

7.10 在网络上发送多播式窗口消息

7.10.1 新手上路

7.10.2 实战演练

7.10.3 工作原理

7.10.4 参考

7.11 网络流量与端口分析

7.11.1 新手上路

7.11.2 实战演练

7.11.3 补充内容

第8章 当个好管家

8.1 简介

8.2 统计磁盘的使用情况

8.2.1 新手上路

8.2.2 实战演练

8.2.3 补充内容

8.3 计算命令执行时间

8.4 与当前登录用户、启动日志及启动故障的相关信息

8.4.1 新手上路

8.4.2 实战演练

8.5 打印出10条最常使用的命令

8.5.1 新手上路

8.5.2 实战演练

8.5.3 工作原理

8.6 列出1小时内占用CPU最多的10个进程

8.6.1 新手上路

8.6.2 实战演练

8.6.3 工作原理

8.6.4 参考

8.7 用watch监视命令输出

8.7.1 实战演练

8.7.2 补充内容

8.8 对文件及目录访问进行记录

8.8.1 新手上路

8.8.2 实战演练

8.8.3 工作原理

8.9 用logrotate管理日志文件

8.9.1 新手上路

8.9.2 实战演练

8.10 用syslog记录日志

8.10.1 新手上路

8.10.2 实战演练

8.10.3 参考

8.11 通过监视用户登录找出入侵者

8.11.1 新手上路

8.11.2 实战演练

8.11.3 工作原理

8.12 监视远程磁盘的健康情况

8.12.1 新手上路

8.12.2 实战演练

8.12.3 工作原理

8.12.4 参考

8.13 找出系统中用户的活动时段

8.13.1 新手上路

8.13.2 实战演练

8.13.3 工作原理

第9章 管理重任

9.1 简介

9.2 收集进程信息

9.2.1 新手上路

9.2.2 实战演练

9.2.3 补充内容

9.2.4 参考

9.3 杀死进程以及发送或响应信号

9.3.1 新手上路

9.3.2 实战演练

9.3.3 补充内容

9.4 which、whereis、file、whatis与平均负载

9.5 向用户终端发送消息

9.5.1 新手上路

9.5.2 实战演练

9.5.3 工作原理

9.6 收集系统信息

9.7 用/proc收集信息

9.8 用cron进行调度

9.8.1 新手上路

9.8.2 实战演练

9.8.3 补充内容

9.9 从Bash中读写MySQL数据库

9.9.1 新手上路

9.9.2 实战演练

9.9.3 工作原理

9.10 用户管理脚本

9.10.1 实战演练

9.10.2 工作原理

9.11 图像文件的批量缩放及格式转换

9.11.1 新手上路

9.11.2 实战演练

9.11.3 工作原理

9.11.4 参考

如果你是expect脚本语言的新手,可以首先从我们的expect的“hello world”样例(英文)开始。

1,使用“-c”选项,从命令行执行expect脚本

expect可以让你使用“-c”选项,直接在命令行中执行它,如下所示:

$ expect -c 'expect "\n" {send "pressed enter\n"}

pressed enter

$

如果你执行了上面的脚本,它会等待输入换行符(\n)。按“enter”键以后,它会打印出“pressed enter”这个消息,然后退出。

2,使用“-i”选项交互地执行expect脚本

使用“-i”选项,可以通过来自于标准输入的读命令来交互地执行expect脚本。如下所示:

$ expect -i arg1 arg2 arg3

expect1.1>set argv

arg1 arg2 arg3

expect1.2>

正常情况下,当你执行上面的expect命令的时候(没有“-i”选项),它会把arg1当成脚本的文件名,所以“-i”选项可以让脚本把多个参数当成一个连续的列表。

当你执行带有“-c”选项的expect脚本的时候,这个选项是十分有用的。因为默认情况下,expect是交互地执行的。

3,当执行expect脚本的时候,输出调试信息

当你用“-d”选项执行代码的时候,你可以输出诊断的信息。如下所示:

$ cat sample.exp

# !/usr/bin/expect -f

expect "\n"

send "pressed enter"

$ expect -d sample.exp

expect version 5.43.0

argv[0] = expect argv[1] = -d argv[2] = sample.exp

set argc 0

set argv0 "sample.exp"

set argv ""

executing commands from command file sample.exp

expect: does "" (spawn_id exp0) match glob pattern "\n"? no

expect: does "\n" (spawn_id exp0) match glob pattern "\n"? yes

expect: set expect_out(0,string) "\n"

expect: set expect_out(spawn_id) "exp0"

expect: set expect_out(buffer) "\n"

send: sending "pressed enter" to { exp0 pressed enter}

4,使用“-D”选项启动expect调试器

“-D”选项用于启动调试器,它只接受一个布尔值的参数。这个参数表示提示器必须马上启动,还是只是初始化调试器,以后再使用它。

$ expect -D 1 script

“-D”选项左边的选项会在调试器启动以前被处理。然后,在调试器启动以后,剩下的命令才会被执行。

$ expect -c 'set timeout 10' -D 1 -c 'set a 1'

1: set a 1

dbg1.0>

5,逐行地执行expect脚本

通常,expect会在执行脚本之前,把整个脚本都读入到内存中。“-b”选项可以让expect一次只读取脚本中的一行。当你没有写完整个脚本的时候,这是十分有用的,expect可以开始执行这个不完整的脚本,并且,它可以避免把脚本写入到临时文件中。

$ expect -b

6,让expect不解释命令行参数

你可以使用标识符让expect不解释命令行参数。

你可以像下面这样的读入命令行参数:

$ cat print_cmdline_args.exp

#!/usr/bin/expect

puts 'argv0 : [lindex $argv 0]'

puts 'argv1 : [lindex $argv 1]'

当执行上面的脚本的时候,会跳过命令行选项,它们会被当成参数(而不是expect选项),如下所示:

$ expect print_cmdline_args.exp -d -c

argv0 : -d

argv1 : -c

    平时在Linux做巡视时,都通过命令行来输入指令,比如df -k等等,但是对于多指令多任务来说,单个指令就显得不够效率。于是笔者想着有没有啥脚本可以自动完成这个任务呢?笔者以前的文章-sysstat性能监控工具,里面有系统监控工具 Sysstat,可以查看CPU使用率、硬盘和网络吞吐数据等等信息。但是这个也是命令行,并且也没有集合的脚本。带着问题,笔者想着自己写一个脚本来,但是想着检查项目还是不熟悉,于是在github上搜索一番,找到一款老外写的脚本,于是乎,clone下来测试一番。

    github真是太劲了。

    开始clone脚本:

    sudo  git clone  https://github.com/SimplyLinuxFAQ/health-check-script.git

    进入目录:cd health-check-script/

    由于health-check.sh文件没有执行权限,需要加上可执行权限sudo chmod +x health-check.sh,然后执行./health-check.sh。

    脚本大概分为几个部分,现罗列其中的几个。

1、 系统基本信息

    脚本写的非常好,比如查看hostname,即/etc/hostname文件里面的内容。整个指令结构显示看hostname -f是否执行成功,然后hostname -f或者hostname -s,也就是 long host name或者 short host name。 &&为与, ||时或。

hostname -f &>/dev/null &&printf "Hostname : $(hostname -f)" || printf "Hostname : $(hostname -s)"

2、 磁盘Disk Usage

FS_USAGE=$(df -PThl -x tmpfs -x iso9660 -x devtmpfs -x squashfs|awk '!seen[$1]++'|sort -k6n|tail -n +2)

3、负载率uptime

echo -e "Current Load Average : $(uptime|grep -o "load average.*"|awk '{print $3" " $4" " $5}')"

4、三次重启事件

last -x 2> /dev/null|grep reboot 1> /dev/null && /usr/bin/last -x 2> /dev/null|grep reboot|head -3 || \

5、三次关机事件

last -x 2> /dev/null|grep shutdown 1> /dev/null && /usr/bin/last -x 2> /dev/null|grep shutdown|head -3 || \

6、占用cpu最高的进程

ps -eo pcpu,pid,ppid,user,stat,args --sort=-pcpu|grep -v $$|head -6|sed 's/$/\n/'

7、占用内存最高的进程

ps -eo pmem,pid,ppid,user,stat,args --sort=-pmem|grep -v $$|head -6|sed 's/$/\n/'

    这个脚本关注点在系统信息、磁盘、内存、进程信息,没有打印网络状态,需要监控的进程等等信息,可以使用指令iostat、ps -ef | grep your_process。在局域网中,如果循环可以读取/etc/hosts文件内容,按照ip来远程到linux主机ssh ip_addrsss,执行脚本内容来检查整个服务器的信息。

    最后看一下测试效果,检查结果正常的话,会有颜色提示的,这也是笔者才知道shell可以设置颜色的。开始位是\e[  , 结束位是\e[0m  ,第一个数字代表字体颜色,第二个数字代表底色,当然还可以有其他下划线等等特殊效果。

GCOLOR="\e[4732m ------ OK/HEALTHY \e[0m"

WCOLOR="\e[4331m ------ WARNING \e[0m"

CCOLOR="\e[4731m ------ CRITICAL \e[0m"


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7516711.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存