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
相关推荐
ltl2 小时前
大多数「无锁」代码其实不是无锁的
linux
ltl2 小时前
Linux 内核的内存屏障:一个让我调了三天的 bug
linux
Dontla4 小时前
预置known_hosts如何防止中间人攻击(MITM)?(服务器公钥、服务器私钥)Runner、DNS污染、BGP劫持、同网络ARP欺骗、SSH握手
服务器·网络·ssh
Lonely 净土5 小时前
Rocky Linux 安装教程
linux·运维·服务器
光影少年5 小时前
RN的Fabric 渲染流程
运维·前端·javascript·react native·react.js·fabric
A 糖醋排骨5 小时前
grafana loki alloy轻量级日志采集
运维·grafana·loki
林间码客8 小时前
从DevOps到DevSecOps:构建现代软件交付的基石与护城河
大数据·运维·devsecops·devops
李白你好9 小时前
Windows 离线 Linux 提权辅助查询工具
linux
Lust Dusk9 小时前
记一次Linux应急响应题目解析
linux·运维·服务器·网络·安全·网络安全
ShineWinsu10 小时前
对于Linux:五种IO模型以及非阻塞IO的详细解析
linux·c++·面试·io·阻塞·非阻塞·fcntl