[测试]测试题

yum源的配置与使用
1) 创建一个本地yum源
base源指向https://mirrors.aliyun.com/centos/7/os/x86_64/
epel源指向https://mirrors.aliyun.com/epel/7Server/x86_64/
2) 安装开发包组

#移动/etc/yum.repos.d/* 至 ./back 文件夹然后创建文件 bash.repo
#vim /etc/yum.repos.d/bash.repo
#bash.repo内容如下
    [base]
    name=base
    baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/
    gpgcheck=0

    [epel]
    name=epel
    baseurl=https://mirrors.aliyun.com/epel/7Server/x86_64/
    gpgcheck=0

#清空缓存 
    yum clean all
#获取新的repo数据yum repolist
    yum repolist

#使用 yum groups list 查看包组信息
#安装开发包组
    如果是中文环境:
        yum groups install 开发包组
    如果是英文环境:
        yum groups install Development Tools

复制/etc/ssh/sshd_config 到/tmp/中并更名为sshd_config.bak。将/tmp/sshd_config.bak文件中所有以非#号开头与包含空白字符的行保存至/tmp/sshd_config中

#复制文件
cp /etc/ssh/sshd_config  /tmp/sshd_config.bak
#将文件中的行保存到/tmp/sshd_config
cat /tmp/sshd_config.bak  |grep -Ev '^#|^[[:space:]]*$'>/tmp/sshd_config

编写脚本/root/bin/sysinfo.sh显示当前主机系统信息,包括主机名,操作系统版本,内核版本,CPU型号,内存大小,硬盘分区。

#!/bin/bash
#script_name : ceshi3
#script_revision : 2.81
#script_date : 2017-06-15-17:11:58
#author : chuixue-ximen
#email : 泥到楼下喊俺名
#
echo "=======hostname====== "
hostname
echo -e "\n=======release====== "
cat /etc/centos-release
echo -e "\n=======kernel====== "
uname -r
echo -e "\n=======cpuinfo====== "
cat /proc/cpuinfo|grep 'model name'                                             
echo -e "\n=======free====== "
free                 
echo -e "\n=======disk====== "
df
echo "==========end========== "

给root用户定义别名命令vimnet,相当于vim /etc/sysconfig/network-scripts/ifcfg-ens33,并使root执行history命令时,显示每个命令执行的具体时间。

#定义别名,此配置只在当前登录有效
    alias vimnet='vim /etc/sysconfig/network-scripts/ifcfg-ens33'
#定义变量
    export HISTTIMEFORMAT="%Y%m%d-%H%M%S:
#长期生效写入文件 
    只针对于root用户,写入/root/.bashrc
    全局生效写入文件,/etc/bashrc

指出软链接与硬链接的异同之处:

    软链接是在目录数据块中创建一个地址指向(指向新的inode),inode寻址索引放入的是 被链接文件的地址; 硬链接是在目录数据块中直接引用被链接文件的inode
软链接可以跨分区,硬链接不可以
软链接删除可不影响目标文件(特殊参数除外),硬链接链接次数归零则删除
硬链接不占用inode 软链接占用

下载编译安装httpd 2.4最新版本,写出安装过程

#下载源码
    官方网站:http://www.apache.org/
#解压缩包 (使用tar命令)
    tar xvf /httpd.2.4.**.tar.bz2 
#准备开发环境,没有安装使用命令yum 命令进行安装 
    yum groups install Development Tools
#进入目录,并使用configure生成配置文件,具体参数可以查看INSTALL 或./configure --help
    ./configure  --prefix="/app/apache"
#编译,安装
    make && make install

过滤ifconfig命令结果中所有大于0且小于255的三位数

大于0 小于255的数
ifconfig |grep -E '\b(([1-9])|([1-9][0-9])|(1[0-9][0-9])|(2[0-4][0-9])|(25[0-4]))\b'
大于0小于255的三位数
ifconfig |grep -E '\b((1[0-9][0-9])|(2[0-4][0-9])|(25[0-4]))\b'

将用户mage被误删除的的家目录恢复,复制/etc/shadow到mage家目录中。并设置只有用户wang可以读取/home/mage/shadow

#复制模版文件
    cp -r /etc/skel /home/mage
#更改权限 属主组
    chown -R  mage.mage /home/mage   
    chmod -R 700 /home/mage

#复制文件
    cp /etc/shadow /home/mage/shadow
#更改权限两种方法,基本的属主属组或ACL
    #基本的属主方法,将wang用户加入到mage组,设置mage家用户组有读权限,使wang可以访问mage家用户
    groupmems -a wang -g mage
    chmod g+r /home/mage
    chown  wang /home/mage/shadow   
    chmod -R 400 /home/mage/shadow
    #acl方法,确保挂载时开启了acl功能。
    setfacl -m u:wang:rx /home/mage/
    chown root /home/mage/shadow
    setfacl -m u:wang:r /home/mage/shadow

统计/var/log/httpd/access.log日志访问频繁前十的地址,并从大到小排序

#输出排序,
cat /var/log/httpd/access.log |cut -d" " -f1|sort |uniq -c|sort -nr|head
       1220 192.168.1.117
       1134 192.168.1.31
        583 192.168.1.113
        204 172.16.100.76
        112 172.16.233.133
        110 192.168.1.118
         83 192.168.1.110
         68 192.168.1.107
         68 172.16.250.227
         42 192.168.6.1

开启两个终端,将终端1 中输入命令的执行结果输出,并同时输出到终端2

#确定终端设备名称
    在任意一终端使用 w 查看
        root     pts/0    172.17.252.191   17:00   49:41   0.09s  0.09s -bash
        root     pts/1    172.17.252.191   17:04    5.00s  0.25s  0.01s w

    tty 查看,需要在接收信息终端察看
###_________________________错误答案_____________________###
发送信息
    echo "`date`" >/dev/pts/0
    Last login: Thu Jun 15 17:04:11 2017 from 172.17.252.191
###_________________________正确答案____________________###
发送信息
     ttt=`date` ;echo "$ttt";echo "$ttt">/dev/pts/2
     date|tee /dev/pts/2

误删除/lib64/libc.so.6系统库文件,如何恢复之,实验说明

#删除libc.so.6
1. ldd `which ls`
2. rm /lib64/libc.so.6 
#恢复
3. 直接关闭电源,然后重起
4. 可以开机进入固件,或开机时 按1次esc 键,设置从光盘引导启动
5. 进入光盘救援模式,6 7进入的界面选项根据实际情况选择。
6. 复制/lib64/libc.so.6 到 /mnt/sysimge/lib64
7. 关闭selinux ,设置/etc/sysconfig/selinux中为disabled
8. 重起,

误删除rpm包命令,如何恢复之,实验说明

#恢复
1。同样进入安全模式 
2。在/mnt目录下创建目录 cdrom
3。挂载安装光盘到cdrom mount /dev/sr0 /mnt/dcrom
4。安装 rpm 软件 ,rpm -ivh /mnt/cdrom/Packges/rpm.*****.rpm --force --root=/mnt/sysimge
5。重起

计算2+4+6+…+96+98+100之和。

#bc 实现
    echo {2..100..2} |tr " " "+" |bc
#循环实现 
    let sum=0
    for i in `seq 2 2 100` ;do
        let sum+=i
    done
    echo "$sum"

取/etc/sysconfig/network-scripts/ifcfg-ens33基名,用两种方法实现。

echo "/etc/sysconfig/network-scripts/ifcfg-ens33" |grep '[^/]*$' -o
    ifcfg-ens33
echo "/etc/sysconfig/network-scripts/ifcfg-ens33" |rev|cut -d"/" -f1|rev
    ifcfg-ens33

对/etc/目录,分别执行命令,实现以下功能

#将当前的工作目录设置成为 /etc
    cd /etc
#显示目录下的文件(大小排序)
    ls -lS
#显示目录下的隐藏文件
    显示目录下所有的隐藏文件,及隐藏目录中的隐藏文件
        ll -a .[^.]*
    显示目录下的隐藏文件及文件夹
        ls -A |grep -E "^\."
    只显示目录下的隐藏文件
        find ./ -maxdepth 1 -mindepth 1 -name ".*" -type f      
#只显示目录
    ls -l |grep ^d
    ls ./*/ -d
    find ./ -maxdepth 1 -mindepth 1  -type d
#按mtime 时间排序
    ls -l -t
#按atime时间排序
    ls -l -u

编写/root/bin/excute.sh,实现与用户交互,判断用户给予的参数是否可读,可写,可执行。

#!/bin/env bash
#script_name : excure.sh
#script_revision : 2.45
#script_date : 2017-06-15-20:00:04
#author : chuixue-ximen
#email : 泥到楼下喊俺名
#--------创建变量-----#
r_test="-"
w_test="-"
x_test="-"
#--------测试---------#
[ "${1}" ] || { echo "参数为空" ; exit 5 ; }
[ -r "${1}" ] && r_test="r"
[ -w "${1}" ] && w_test="w"
[ -x "${1}" ] && x_test="x"
#---------结果输出----#
echo "${1} 权限为:${r_test} ${w_test} ${x_test}"

编写/root/bin/create.sh可以生成新的脚本包括作者、联系方式、版本、时间和描述等,并且可以直接对其进行编辑,编辑完后自动加上执行权限。

    #!/bin/env bash
    #
    #检测是否传入脚本名称。
    script=$1
    if [[ $script == "" ]];then       
        read -p":请输入脚本名称:" script
    fi
    #检测创建目录是否存在 
    dir_path="/script/`date +%F`/" 
    [[ -d "${dir_path}" ]] || mkdir -p ${dir_path} 
    #检测脚本文件名称是否已存在
    script_name="${dir_path}${script}"
    #   ls "${script_name}" && { echo "文件名称已存在"&&exit; }
        while [[ -a "${script_name}" ]] ; do
            read -p"文件已存在,请重新输入:" new_script
            script_name="${dir_path}${new_script}"
        done
    #输入脚本描述信息
    echo "#!/bin/env bash
    #script_name : ${script}
    #script_revision : 2.$((RANDOM%100))
    #script_date : `date +%F-%T`
    #author : chuixue-ximen
    #email : 泥到楼下喊俺名
    #">"${script_name}"
    #打开脚本文件编辑
    chmod u+rx "${script_name}"
    vim +$ "${script_name}"

写一个脚本,让它可以传递两个参数后,实现对该参数的加、减、乘、除运算并输出运算后的值。

    #!/bin/env bash
    #script_name : two_number.sh
    #script_revision : 2.83
    #script_date : 2017-06-15-18:50:18
    #author : chuixue-ximen
    #email : 泥到楼下喊俺名
    #
    #_____参数检测_________#
    [[ "${1}" ]] || { echo "参数为空" ; exit 2 ; }
    [[ "${2}" ]] || { echo "参数为空" ; exit 3 ; }
    [[ "${1}" =~ ^[0-9]*$ ]] || { echo "参数非数字" ; exit 4 ; } 
    [[ "${2}" =~ ^[0-9]*$ ]] || { echo "参数非数字" ; exit 4 ; } 
    #_____数值计算________#
    echo "=======加======="
    echo "${1}+${2}=$(($1+$2))"

    echo "=======减======="
    echo "${1}-${2}=$(($1-$2))"

    echo "=======乘======="
    echo "${1}*${2}=$(($1*$2))"

    echo "=======除======="
    echo "${1}/${2}=$(($1/$2))"

编写/root/bin/wcfile.sh统计/etc目录中的目录的个数,文件的个数,并求出/etc/目录中的目录和文件个数的总和

#!/bin/env bash
#script_name : wcfile.sh
#script_revision : 2.4
#script_date : 2017-06-15-19:17:07
#author : chuixue-ximen
#email : 泥到楼下喊俺名
#
dri_name=`find /etc -maxdepth 1 -mindepth 1 -type d |wc -l`
file_name=`find /etc -maxdepth 1 -mindepth 1 -type f |wc -l`
nodri_name=`find /etc -maxdepth 1 -mindepth 1 ! -type d |wc -l`
#结果输出
echo "文件夹数量为:${dri_name}"
echo "普通文件的数量为:${file_name}"
echo "文件的数量为:${nodri_name}"
echo "相加结果数为:$((${dri_name}+${nodri_name}))"

编写/root/bin/baketc.sh 查找/etc/目录中超过1天未修改的文件,将其压缩备份至/bakup目录。若之前没有备份过则备份之,若存在的备份文件超过了2分钟则备份之,否则退出。备份的格式为YYYY-MM-DD-hh-mm-ss.xz

脚本1

#!/bin/env bash
#script_name : baketc.sh
#script_revision : 2.46
#script_date : 2017-06-15-19:33:45
#author : chuixue-ximen
#email : 泥到楼下喊俺名
#
#文件备份函数
bakup_file() 
{
    file_name="/bakup/`date "+%F-%H-%M-%S"`"
    find /etc -mtime +1 -type f |xargs tar -Jcf "${file_name}.tar.xz"
}

#文件夹测试
[ -a /bakup ] || mkdir /bakup
[ -d /bakup ] || { echo "/bakup 非目录请手动处理" ; exit 3 ; }


#没有备份,则备份。
ls /bakup/*.tar.xz &>/dev/unll || { echo "没有发生过任何备份"; bakup_file ;exit 0 ; }
#文件超过两分钟则备份
file_y=`ls /bakup |sort -nrt "-" -k "1" |cut -d "-" -f"1"|head -1`
file_m=`ls /bakup |grep "${file_y}"|sort -nrt "-" -k "2" | cut -d "-" -f "2"|head -1`
file_d=`ls /bakup |grep "${file_m}"|sort -nrt "-" -k "3" | cut -d "-" -f "3"|head -1`
file_h=`ls /bakup |grep "${file_d}"|sort -nrt "-" -k "4" | cut -d "-" -f "4"|head -1 `
file_fen=`ls /bakup |grep "${file_h}"|sort -nrt "-" -k "5" | cut -d "-" -f "5"|head -1 `
file_s=`ls /bakup |grep "${file_fen}"|sort -nrt "-" -k "6" | cut -d "-" -f "6"|cut -d "." -f "1"|head -1`
#测试状态输出 echo "$file_y $file_m $file_d $file_h $file_fen $file_s "
time_y="`date +%Y`"
time_m="`date +%m`"
time_d="`date +%d`"
time_h="`date +%H`"
time_fen="`date +%M`"
time_s="`date +%M`"
test_file=$(($file_fen*60+$file_s))
test_time=$((${time_fen}*60+${time_s}))
#测试状态输出 echo "${test_file} ${test_time}"
[[ "${time_y}" -gt "${file_y}" ]] && { bakup_file ; exit 0 ; }
[[ "${time_m}" -gt "${file_m}" ]] && { bakup_file ; exit 0 ; }
[[ "${time_d}" -gt "${file_d}" ]] && { bakup_file ; exit 0 ; }
[[ "${time_h}" -gt "${file_h}" ]] && { bakup_file ; exit 0 ; }
#测试状态输出 echo "$(($test_time-$test_file))"
[[ "$(($test_time-$test_file))" -gt 120 ]] && { bakup_file ; exit 0 ; }

echo "文件是最新的"

脚本 2

#!/bin/env bash
#script_name : baketc1.sh
#script_revision : 2.56
#script_date : 2017-06-15-23:20:21
#author : chuixue-ximen
#email : 泥到楼下喊俺名
#
#
#文件备份函数
bakup_file() 
{
    file_name="/bakup/`date "+%F-%H-%M-%S"`"
    find /etc -mtime +1 -type f |xargs tar -Jcf "${file_name}.tar.xz "
}

#文件夹测试
[ -a /bakup ] || mkdir /bakup
[ -d /bakup ] || { echo "/bakup 非目录请手动处理" ; exit 3 ; }


#没有备份,则备份。
ls /bakup/*.tar.xz &>/dev/unll || { echo "没有发生过任何备份"; bakup_file &>/dev/null ;exit 0 ; }
#文件超过两分钟则备份
test=`find /bakup  -mindepth 1 -name "*.tar.xz" -mmin -2`
[ "${test}" ] && echo "文件是最新的" || bakup_file &>/dev/null
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值