【linux shell练习】

本文介绍了多个Linux系统管理任务的自动化脚本,包括创建用户、备份日志、安装软件、监控资源、安全防护等,涉及bash脚本、cron定时任务、权限管理、进程交互、网络扫描等多个方面,旨在提升Linux系统的管理和维护效率。
摘要由CSDN通过智能技术生成

1、编写 hellworld 脚本

#!/bin/bash

echo "helloWorld"

2. 通过位置变量创建 Linux 系统账户及密码

 #!/bin/bash

useradd "$1"

echo "$2" | psswd --stdin "$1"

注解:使用 echo 方式来重置Linux 系统用户密码。

|:管道,前面命令的正确输出作为后面命令的输入(操作对象)。

 --stdin:这个选项用于从标准输入管道读入新的密码。

但是这种方式不安全,可以使用history命令查看操作记录,从而获得密码。

3. 每周 5 使用 tar 命令备份/var/log 下的所有日志文件

#!/bin/bash

tar -zcf log-`date +%Y%m%d`.tar.gz /var/log

crontab -e

* * * * 5 sh /root/zjtest/3.sh

注解:可能需要chomd +x 3.sh赋权

date需要加反引号,与+之间有个空格,时间格式%Y%m%d%H%M%S

tar -zcxvf  目标名称 源数据名称。-z:有gzip属性的;-c: 建立压缩档案;-x:解压;-v:显示所有过程。

crontab [-u username]    //省略用户表表示操作当前用户的crontab

    -e      (编辑工作表)
    -l      (列出工作表里的命令)
    -r      (删除工作)

* * * * *:分 时 日 月 周,这里的时间是指系统时间,务必保证linux系统时间与本地系统时间一致。可以使用linux修改系统时间为本机时间:TZ=‘Asia/Shanghai’ ; export TZ或者ntp服务修改
系统时间

* 取值范围内的所有数字;/ 每过多少个数字;- 从X到Z;散列数字
例子:每隔两天的上午8点到11点的第3和第15分钟执行,3,15 8-11 */2 * *

4. 一键部署 LNMP(RPM 包版本)

#!/bin/bash

yum ‐y install httpd
yum ‐y install mariadb mariadb‐devel mariadb‐server
yum ‐y install php php‐mysql

systemctl start httpd mariadb
systemctl enable httpd mariadb

注解:需要提前配好yum 源

5. 实时监控本机内存和硬盘剩余空间,剩余内存小于 500M、根分区剩余空间小于 1000M

时,发送报警邮件给 root 管理

# 提取根分区剩余空间
disk_size=$(df / | awk '/\//{print $4}')

# 提取内存剩余空间
mem_size=$(free | awk '/Mem/{print $4}')

# 注意while与:之间打空格
while :
do
# 注意内存和磁盘提取的空间大小都是以 Kb 为单位
if [ $disk_size -le 512000 -a $mem_size -le 1024000 ]
then
mail ‐s "Warning" root <<EOF
Insufficient resources,资源不足
EOF
fi
done

注解:1.前面两个变量符号加不加都行,建议加。但是有些类unix可能会不识别。

2.awk 的强大之处在于脚本命令,它由 2 部分组成,分别为匹配规则和执行命令,如下所示:

'匹配规则{执行命令}'

3.mail需要安装mailx服务器,最简单用法 mail -s 主题用户

4. <<EOF
xxx
EOF:它的作用就是将两个 EOF 之间的内容(Here Document Content 部分) 传递给cmd 作为输入参数

6. 脚本生成一个 100 以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了,

猜小了或猜大了,直至用户猜对脚本结束。

7. 检测本机当前用户是否为超级管理员,如果是管理员,则使用 yum 安装 vsftpd,如果不

是,则提示您非管理员(使用字串对比版本)

8. 检测本机当前用户是否为超级管理员,如果是管理员,则使用 yum 安装 vsftpd,如果不

是,则提示您非管理员(使用 UID 数字对比版本)

9. 编写脚本:提示用户输入用户名和密码,脚本自动创建相应的账户及配置密码。如果用户

不输入账户名,则提示必须输入账户名并退出脚本;如果用户不输入密码,则统一使用默

认的 123456 作为默认密码

10. 依次提示用户输入 3 个整数,脚本根据数字大小依次排序输出 3 个数字

11. 编写脚本,实现人机<石头,剪刀,布>游

12. 编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机

状态(for 版本

13. 编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机

状态(while 版本

14. 编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机

状态(多进程版

15. 编写脚本,显示进度

16. 进度条,动态时针版

17. 9*9 乘法表(编写 shell 脚本,打印 9*9 乘法表

18. 使用死循环实时显示 eth0 网卡发送的数据包流

19. 使用 user.txt 文件中的人员名单,在计算机中自动创建对应的账户并配置初始密

20. 编写批量修改扩展名脚本,如批量将 txt 文件修改为 doc 文档

21. 使用 expect 工具自动交互密码远程其他主机安装 httpd 软件

22. 一键部署 LNMP(源码安装版本)

23. 编写脚本快速克隆 KVM 虚拟

24. 编写一个点名器脚

25. 查看有多少远程的 IP 在连接本机(不管是通过 ssh 还是 web 还是 ftp 都统计

26. 对 100 以内的所有正整数相加求和(1+2+3+4...+100)

27. 统计 13:30 到 14:3 所有访问 apache 服务器的请求有多少

28. 统计 13:30 到 14:3 所有访问本机 Aapche 服务器的远程 IP 地址是什

29. 打印国际象棋棋盘,效果如下图

30. 统计每个远程 IP 访问了本机 apache 几次?

31. 统计当前 Linux 系统中可以登录计算机的账户有多少

32. 统计/var/log 有多少个文件,并显示这些文件

33. 自动为其他脚本添加解释器信息#!/bin/bash,如脚本名为 test.sh 则效果如下

#./test.sh  abc.sh    自动为 abc.sh 添加解释器信息 

#./test.sh  user.sh   自动为 user.sh 添加解释器信息

34. 自动化部署 varnish 源码包软

35. 编写 nginx 启动脚

36. 自动对磁盘分区、格式化、挂载

37. 自动优化 Linux 内核参数

38. 切割 Nginx 日志文件(防止单个文件过大,后期处理很困难

39. 检测 MySQL 数据库连接数

40. 根据 md5 校验码,检测文件是否被修

41. 检测 MySQL 服务是否存

42. 备份 MySQL 的 shell 脚本(mysqldump 版本)

43. 将文件中所有的小写字母转换为大写字

44. 非交互自动生成 SSH 密钥文

45. 检查特定的软件包是否已经安

46. 监控 HTTP 服务器的状态(测试返回码)

47. 自动添加防火墙规则,开启某些服务或端口(适用于 RHEL7)

48. 使用脚本自动创建逻辑卷

49. 显示 CPU 厂商信息

50. 删除某个目录下大小为 0 的文件     #自己创建文件完成模拟

51. 查找 Linux 系统中的僵尸进程

52. 提示用户输入年份后测试判断是否为闰年

53. 生成随机密码(urandom 版本)

54. 生成随机密码(字串截取版本)

55. 生成随机密码(UUID 版本,16 进制密码)

56. 生成随机密码(进程 ID 版本,数字密码)

57. 测试用户名与密码是否正确

58. 循环测试用户名与密码是否正确

59. Shell 脚本的 fork 炸弹

60. 批量下载有序文件(pdf、图片、视频等等)

61. 显示当前计算机中所有账户的用户名称

62. 制定目录路径,脚本自动将该目录使用 tar 命令打包备份到/data 目录

63. 显示进度条(回旋镖版)

64. 安装 LAMP 环境(yum 版本)

65. 循环关闭局域网中所有主机

66. 获取本机 MAC 地址

67. 自动配置 rsynd 服务器的配置文件 rsyncd.conf

69. 设置 Python 支持自动命令补齐功能

70. 自动修改计划任务配置文件

71. 使用脚本循环创建三位数字的文本文件(111-999 的文件)

72. 找出/etc/passwd 中能登录的用户,并将对应在/etc/shadow 中第二列密码提出处理

73. 统计/etc/passwd 中 root 出现的次数

74. 统计 Linux 进程相关数量信息

75. 从键盘读取一个论坛积分,判断论坛用户等级

76. 判断用户输入的数据类型(字母、数字或其他)

77. 显示进度条(数字版)

78. 打印斐波那契数列(该数列的特点是后一个数字,永远都是前 2 个数字之和)

79. 判断用户输入的是 Yes 或 NO

80. 显示本机 Linux 系统上所有开放的端口列表

81. 将 Linux 系统中 UID 大于等于 1000 的普通用户都删除

82. 使用脚本开启关闭虚拟机

83. 调整虚拟机内存参数的 shell 脚本

84. 查看 KVM 虚拟机中的网卡信息(不需要进入启动或进入虚拟机)

85. 不登陆虚拟机,修改虚拟机网卡 IP 地址、

86. 破解虚拟机密码,无密码登陆虚拟机系统

87. Shell 脚本对信号的处理,执行脚本后,按键盘 Ctrl+C 无法终止的脚本

88. 一键部署 memcached

89. 一键配置 VNC 远程桌面服务器(无密码版本)

90. 关闭 SELinux

91. 查看所有虚拟机磁盘使用量以及 CPU 使用量信息

92. 使用 shell 脚本打印如下图形

93. 根据计算机当前时间,返回问候语,可以将该脚本设置为开机启动

94. 读取用户输入的账户名称,将账户名写入到数组保存

95. 判断文件或目录是否存在

96. 打印各种时间格式

97. 使用 egrep 过滤 MAC 地址

98. 统计双色球各个数字的中奖概率

99. 生成自签名私钥和证书

100. 使用 awk 编写的 wc 程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值