shell 脚本基础练习

简介: 创建`sysinfo.sh`脚本,显示主机名、IPv4、OS版本、内核、CPU、内存和硬盘信息;`backup.sh`用于每日备份`/etc/`至 `/backup`目录,日期格式为`YYYY-mm-dd`;`disk.sh`找出硬盘最高利用率;`links.sh`显示并按连接数排序远程主机IPv4地址;`repo.sh`搭建本地YUM仓库并安装软件。使用命令包括`echo`、`hostname`、`ifconfig`、`cat`、`awk`、`tar`、`df`、`uniq`等,实现系统管理和维护功能。
  1. 编写脚本 sysinfo.sh,显示当前主机系统信息,包括:主机名,IPv4地址,操作系统版本,内核版 本,CPU型号,内存大小,硬盘大小

tr命令用于替换或删除字符。

cut命令用于从文件或标准输入中提取列

[root@admin ~]# vim sysinfo.sh 
echo  -e  "hostname  \c"    // -e 解释转义字符 \c不换行下一个命令的结果会接着这一行输出
hostname                 //主机名
echo -e  "ip  \c"
ifconfig ens160 | grep mask | tr -s " " | awk -F " " '{print $2}'  
//tr  -s “ ” 把连续的空格压缩为单个空格
echo -e "os  \c"
cat /etc/redhat-release | awk -F " " '{printf $6}'
echo -e "kernel \c"
uname -a | awk -F " " '{print $3}'
echo    -e "cpu \c"
cat /proc/cpuinfo  | grep   "model name"  | cut -d " " -f4-  
//-d" "表示使用空格作为字段分隔符。-f4-表示提取从第4个字段开始直到结束。
echo -e "RAM \c "
free -h | grep ^Mem 
echo -e "disk size \c"
lsblk  | grep "^nvme0n1" | awk -F " " '{print$4}'

2、编写脚本 backup.sh,可实现每日将 /etc/ 目录备份到 /backup/etcYYYY-mm-dd中

root@admin ~]# vim backup.sh 
dateback=$(date +%F)   //变量今天日期
back_dir="/backup/etc$dateback"     
mkdir -p $back_dir
tar -cvzf  "$back_dir/etc_backup_$dateback.tar.gz" /etc/
echo     "save a backup"

sort用于对文本文件的行进行排序

  • -n:按数字顺序排序。
  • -r:反向排序(即从大到小或从 Z 到 A)。
  • -f:忽略大小写。
  • -k:按指定字段排序。
  • -t:指定字段分隔符。
  • -u:去除重复行。

3、编写脚本 disk.sh,显示当前硬盘分区中空间利用率最大的值

df -h | awk '$NF {print $5}' | sort -nr | head -n 1

4、 编写脚本 links.sh,显示正连接本主机的每个远程主机的IPv4地址和连接数,并按连接数从大到小排序

uniq 命令通常与 sort 命令结合使用,因为 uniq 需要输入数据是已排序的才能正确工作。

  • -c--count:在每行前加上该行在文件中出现的次数。
  • -d--repeated:仅显示重复的行。
  • -u--unique:仅显示不重复的行。
  • -i--ignore-case:在比较行时忽略大小写。
  • -f--skip-fields=N:忽略每行的前 N 个字段。
  • -s--skip-chars=N:忽略每行的前 N 个字符。
  • -w--check-chars=N:仅比较每行的前 N 个字符。

5、编写脚本 repo.sh ,搭建本地yum仓库,并安装软件测试

tar -czvf /repo.bak.tar.gz /etc/yum.repos.d/*   //备份
rm -rf /etc/yum.repos.d/*
mount /dev/sr0 /mnt/
touch /etc/yum.repos.d/server.repo
cat  >  /etc/yum.repos.d/server.repo  <<EOF
[aa]
name=a
baseurl=file:///mnt/AppStream
gpgcheck=0
enabled=1
[bb]
name=b
baseurl=file:///mnt/BaseOS
gpgcheck=0
enabled=1
EOF
yum clean all >> /dev/null && yum makecache  >>/dev/null
yum -y install net-tools
目录
相关文章
|
1天前
|
分布式计算 Hadoop Shell
使用shell脚本实现自动SSH互信功能
使用shell脚本实现自动SSH互信功能
11 1
|
1天前
|
Unix Shell Linux
轻松编写 AIX Shell 脚本
轻松编写 AIX Shell 脚本
14 1
|
1天前
|
监控 关系型数据库 Shell
Shell脚本入门:从基础到实践,轻松掌握Shell编程
Shell脚本入门:从基础到实践,轻松掌握Shell编程
|
1天前
|
关系型数据库 MySQL Shell
在Centos7中利用Shell脚本:实现MySQL的数据备份
在Centos7中利用Shell脚本:实现MySQL的数据备份
|
1天前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
30 5
|
1天前
|
Shell 程序员 数据安全/隐私保护
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
|
1天前
|
存储 Shell C语言
shell脚本 编程 变量 基本入门(详解)
shell脚本 编程 变量 基本入门(详解)
|
1天前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
16 3
|
1天前
|
弹性计算 运维 监控
|
1天前
|
存储 弹性计算 运维
自动化收集员工信息的Shell脚本
【4月更文挑战第30天】
13 0
http://www.vxiaotou.com