第二周作业

  1. 总结vim的三种模式切换,配置vimrc实现写脚本自动生成注释。

vim三种模式

  • 命令/普通模式(默认)
  • 插入模式
  • 扩展模式
set ts=4
set expandtab
set ignorecase
set shiftwidth=4
autocmd BufNewFile *.sh exec ":call SetTitle()"
func SetTitle()
    if expand("%:e") == 'sh'
        call setline(1,"#!/bin/bash")
        call setline(2,"#")
        call setline(3,"#*****************************************************************")
        call setline(4,"#Author:            zhangwanye")
        call setline(5,"#QQ:                          ")
        call setline(6,"#Date:              ".strftime("%Y-%m-%d"))
        call setline(7,"#FileName:          ".expand("%"))
        call setline(8,"#URL:               https://www.cblogs.top")
        call setline(9,"#Description        The test script")
        call setline(10,"#Copyright (C):     ".strftime("%Y")." All rights reserved")
        call setline(11,"#*****************************************************************")
        call setline(12,"")
    endif
endfunc
auto BufNewFile * normal G
  1. 使用grep/sed实现获取/etc/sysconfig/network-script/ifcfg-eth0目录的/etc/sysconfig/network-script/。或获取目录的ifcfg-eth0
[root@rocky3 ~]#echo /etc/sysconfig/network-scripts/ifcfg-eth0| sed -rn 's#(.*)/([^/]+)/?#\2#p'
ifcfg-eth0
[root@rocky3 ~]#echo /etc/sysconfig/network-scripts/ifcfg-eth0 | sed -rn 's#(.*)/([^/]+)/?#\1#p'
/etc/sysconfig/network-scripts
  1. 完成编程题,可以让用户选择当前主机的所有网卡,选中网卡后,获取ip,网段,掩码。
   ETH=`ifconfig | grep flags | cut -d":" -f1 | tr '\n' ' '`
   
   ip_netmask(){
   
       echo "ip: `ifconfig ${MENU} | grep -Eo '([0-9]{1,3}.){3}[0-9]{1,3}' |head -n1`"
       #echo "netmask: `ifconfig ${MENU} | sed -nr 's/.*netmask (.*) broadcast.*/\1/p'`"
       echo "netmask: `ifconfig ${MENU} | grep -Eo '([0-9]{1,3}.){3}[0-9]{1,3}' |head -2 | tail -1`"
       echo "segment:`hostname -I | cut -d. -f1-3`"
   }
   
   PS3="请选择网卡:"
   select MENU in $ETH;do
   case $REPLY in
   1)
       ip_netmask
       ;;
   2)
       ip_netmask
       ;;
   3)
       echo "退出"
       break
       ;;
   *)
       echo "输入错误,请重新输入!"
       ;;
   esac
   done

通过ping命令检测在线的主机,打印在线的主机,写入一个文件中。当ip的结尾是奇数时,在目标主机或当前主机,批量添加user1到user100用户,否则添加group1到group100,并生成对应的用户user1到user100,让用户的过期时间在1天之后。

#用户
USER=root
#登录密码
PASS=123456
#网段开始
BEG=3
#网段结束
END=254

#查询本机IP
localIp=`hostname -I|awk '{print $1}'`
#网段
NET=${localIp%.*}.

yum -y install expect &> /dev/null

#记录在线主机
for((i="$BEG";i<="$END";i++));do
 ping -c 1 -w 1 ${NET}$i &> /dev/null && echo "${NET}$i" >> ScanIp.log &
done
wait
unset i

AliveIP=(`cat ScanIp.log`)
for ip in ${AliveIP[*]};do
 lastNum=`echo ${ip} | cut -d. f4`
 if [ $((lastNum%2)) -eq 1 ];then
     expect <<EOF
spawn ssh $USER@$ip
expect {
     "yes/no" { send "yes\n";exp_continue }
     "password" { send "$PASS\n" }
}
expect "#" { send "echo user{1..100}| xargs -n1 useradd\n" }
expect "#" { send "exit\n" }
expect eof
EOF
 else
     expect <<EOF
spawn ssh $USER@$ip
expect {
     "yes/no" { send "yes\n";exp_continue }
     "password" { send "$PASS\n" }
}
expect "#" { send "for i in {1..100};do groupadd group$i &>/dev/null;useradd user$i -g group$i -e `date +%F -d +1day` &>/dev/null;done\n" }
expect "#" { send "exit\n" }
expect eof
EOF
 fi
done
  1. 总结分区,格式化,挂载命令的使用。

    创建分区命令

    fdisk	管理MBR分区
    gdisk	管理GPT分区
    parted	高级分区操作,可以交互式或非交互式
    

    重新设置内存中的内核分区表版本,适用于除了Centos 6外的版本

    partprobe
    

    fdisk

    fdisk -l [-u] [device...]		查看分区
    fdisk	[device]				管理MBR分区
    gdisk	[device]				类fdisk的GPT分区工具
    

    子命令

    p	分区列表
    t	更改分区类型
    n	创建新分区
    d	删除分区
    v	检验分区
    u	转换单位
    w	保存并退出
    q	不保存并退出
    

    创建文件系统管理工具

    mkfs.ext4	/dev/sdc
    	 xfs
    	 btrfs
    	 vfat
    mkfs -t 文件系统类型 /dev/DEVICE
    	-L 'LABEL' 设定卷标
    mke2fs	ext系列文件系统专用管理工具
    

    选项

    -t {ext2|3|4|xfs}		指定系统文件类型
    -b {1024|2048|4096}		指定块block大小
    -L 'LABEL'				设置卷标
    -j
    -i # 					为数据空间中每多少个字节创建一个inode;不应小于block块
    -N #					指定分区中创建多少个inode
    -I						一个inode记录占用预留空间占总空间的百分比
    -m #					默认5%,为管理人员预留空间占总空间的百分比
    

    挂载文件系统mount

    mount [-fnrsvw] [-t vfstype] [-o options] device dir
    

    同一个设备可以同时挂载到多个挂载点,一个挂载点不能同时挂载多个设备

    卸载文件系统 umount

    umount	设备名|挂载点
    

    查看挂载

     #通过查看/etc/mtab文件显示当前已挂载的所有设备
     mount 
    #查看内核追踪到的已挂载的所有设备
     cat /proc/mounts 
    

    查看挂载点情况

    findmnt 挂载点|device
    

    查看正在访问指定文件系统的进程

     lsof 挂载点 
     fuser -V 挂载点
     fuser -v /mnt
    

    终止所有在正访问指定的文件系统的进程

     fuser -km 挂载点
    
  2. 总结RAID特性,LVM特性。

    RAID每个等级特性:

    RAID等级 最少硬盘 最大容错 可用容量 安全性 目的
    0 1 0 n 一个硬盘异常所有都异常 最大容量、最大速度
    1 2 n-1 n-1 高,一个正常即可 最大安全性
    5 3 1 n-1 最大容量、最小预算
    6 4 2 n-2 较RAID5高 同RAID5,较安全
    10 4 综合RAID 0/1优点
    50 6 提升数据安全
    60 8 提升数据安全

    LVM特性:

    LVM( Logical Volume Manager)逻辑卷管理,是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。管理员利用LVM可以在磁盘不用重新分区的情况下动态调整文件系统的大小,并且利用LVM管理的文件系统可以跨越磁盘,当服务器添加了新的磁盘后,管理员不必将原有的文件移动到新的磁盘上,而是通过LVM可以直接扩展文件系统跨越磁盘

  3. 准备20G/30G的2个分区,生成VG,并创建10G的mylv, 基于LVM,将10G的LV格式化挂载分区到/data/mysql, 添加gentoo用户,指定家目录为/data/mysql,确保/data/mysql的权限是gentoo用户,并切换确保gentoo用户家目录正常,之后复制/etc/sysconfig到gentoo家目录。 此时扩容mylv到20G,确保数据不丢失。 之后缩容mylv到5G确保数据不丢失。 现在基于mylv生成快照,修改或删除原卷中的数据,基于快照卷还原数据。

#创建物理卷
[root@centos ~]#pvcreate /dev/sd{b,c}
  Physical volume "/dev/sdb" successfully created.
  Physical volume "/dev/sdc" successfully created.
#创建卷组
[root@centos ~]#vgcreate vg0 /dev/sd{b,c}
  Volume group "vg0" successfully created
#创建逻辑卷
[root@centos ~]#lvcreate -L 10G -n mylv vg0
  Logical volume "mylv" created.
[root@centos ~]#lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- <17.00g                                                    
  swap centos -wi-ao----   2.00g                                                    
  mylv vg0    -wi-a-----  10.00g  
#创建文件系统
[root@centos ~]#mkfs.ext4 /dev/vg0/mylv
[root@centos ~]#mkdir -p /data/mysql
#开机自动挂载
[root@centos ~]#vim /etc/fstab
UUID=a045e059-1a68-42b5-83fd-5f5e3f18afe8 /data/mysql             ext4    defaults        0 0
#手动挂载
[root@centos ~]#mount -a
[root@centos ~]#df -h
/dev/mapper/vg0-mylv     9.8G   37M  9.2G   1% /data/mysql
#创建gentoo用户
[root@centos ~]#useradd gentoo -d /data/mysql
[root@centos ~]#chown -R gentoo. /data/mysql
[root@centos ~]#cp -r /etc/sysconfig /data/mysql
#扩容
[root@centos ~]#lvextend -r -L +10G /dev/vg0/mylv
#缩减
[root@centos ~]#umount /data/mysql 
#检测文件系统
[root@centos ~]#fsck -f /dev/vg0/mylv
#缩减文件系统为5G
[root@centos ~]#resize2fs /dev/vg0/mylv 5G
#缩减逻辑卷为5G
[root@centos ~]#lvreduce -L 5G /dev/vg0/mylv
#挂载
[root@centos ~]#mount -a
[root@centos ~]#lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert                           mylv vg0    -wi-ao----   5.00g   
#创建快照
[root@centos ~]#lvcreate -L 1G -n mylv-snapshot -s -p r /dev/vg0/mylv
#创建挂载点
[root@centos ~]#mkdir /mnt/mylvsnap
#挂载
[root@centos ~]#mount /dev/vg0/mylv-snapshot /mnt/mylvsnap/
#恢复快照
[root@centos ~]#lvconvert --merge /dev/vg0/mylv-snapshot
posted @ 2022-09-13 10:14  zwy07  阅读(90)  评论(0)    收藏  举报