- 编写脚本 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