shell 脚本基础练习

  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地址和连接数,并按连接数从大到小排序

复制代码
netstat -tn | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr

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
相关推荐
xlp666hub19 小时前
Leetcode第五题:用C++解决盛最多水的容器问题
linux·c++·leetcode
张宏23620 小时前
原子操作 (基于Linux 应用层 C 语言)
linux
kymjs张涛1 天前
OpenClaw 学习小组:初识
android·linux·人工智能
程序设计实验室2 天前
经历分享,发现挖矿木马后,服务器快速备份与重装(腾讯云平台)
linux
Miku162 天前
OpenClaw-Linux+飞书官方Plugin安装指南
linux·人工智能·agent
Miku162 天前
OpenClaw 接入 QQ Bot 完整实践指南
linux·人工智能·agent
Yogurt_cry2 天前
[树莓派4B] 闲置近10年的爱普生 L310 打印机爆改无线打印机
linux·物联网·树莓派
爱吃橘子橙子柚子3 天前
3CPU性能排查总结(超详细)【Linux性能优化】
运维·cpu
Johny_Zhao3 天前
OpenClaw中级到高级教程
linux·人工智能·信息安全·kubernetes·云计算·yum源·系统运维·openclaw
Sheffield3 天前
Docker的跨主机服务与其对应的优缺点
linux·网络协议·docker