马哥第三次作业

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了马哥第三次作业相关的知识,希望对你有一定的参考价值。

1、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello();


答:

[[email protected] ~]# egrep -o "[[:alpha:]]+\(\)" /etc/rc.d/init.d/functions 

checkpid()

run()

pidof()

daemon()

killproc()

pidfileofproc()

pidofproc()

status()

success()

failure()

passed()

warning()

stage()

success()

failure()

passed()

warning()

action()

strstr()

file()

true()

false()

sysctl()


2、使用echo命令输出一个绝对路径,使用grep取出其基名;


答:


[[email protected] ~]# echo /etc/rc.d/init.d/ | egrep -o "[^/]+/?$" | cut -d"/" -f1 

init.d


扩展:取出其路径名


[[email protected] ~]# echo /etc/rc.d/init.d/functions | egrep -o "/.*/" 

/etc/rc.d/init.d/


3、找出ifconfig命令结果中的1-255之间数字;


答:


[[email protected] ~]# ifconfig | egrep -o "\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>"

192

168

1

10

255

255

255

192

168

1

255

64

29

13

206

145

6

73

127

1

255

1

128


4、查找当前系统上没有属主或属组的文件;


答:


[[email protected] ~]# find / -nouser -o -nogroup 

find: ‘/proc/2554/task/2554/fd/6’: 没有那个文件或目录

find: ‘/proc/2554/task/2554/fdinfo/6’: 没有那个文件或目录

find: ‘/proc/2554/fd/6’: 没有那个文件或目录

find: ‘/proc/2554/fdinfo/6’: 没有那个文件或目录

/var/spool/mail/mandriva

/home/mandriva

/home/mandriva/.bash_logout

/home/mandriva/.bash_profile

/home/mandriva/.bashrc


 进一步:查找当前系统上没有属主或属组,且最近3天内曾被访问过的文件或目录;


[[email protected] ~]# find / -nouser -o -nogroup -a -atime -3

find: ‘/proc/2596/task/2596/fd/6’: 没有那个文件或目录

find: ‘/proc/2596/task/2596/fdinfo/6’: 没有那个文件或目录

find: ‘/proc/2596/fd/6’: 没有那个文件或目录

find: ‘/proc/2596/fdinfo/6’: 没有那个文件或目录

/tmp/test2017-01-04

/var/spool/mail/mandriva

/var/spool/mail/chen

/home/mandriva

/home/mandriva/.bash_logout

/home/mandriva/.bash_profile

/home/mandriva/.bashrc

/home/chen

/home/chen/.bash_logout

/home/chen/.bash_profile

/home/chen/.bashrc

/home/chen/.bash_history


5、查找/etc目录下大于1M,且类型为普通文件的所有文件;


答:


[[email protected] ~]# find /etc/ -size +1M -type f -ls

33975533 6824 -r--r--r--   1 root     root      6984832 6月 20  2016 /etc/udev/hwdb.bin

67851855 3772 -rw-r--r--   1 root     root      3858924 11月 21  2015 /etc/selinux/targeted/policy/policy.29


6、查找/etc/init.d/目录下,所有用户都有执行权限,且其它用户有写权限的文件;


答:


[[email protected] ~]# find /etc/init.d/ -perm -555 -ls

33689619    0 drwxr-xr-x   2 root     root           66 6月 20  2016 /etc/init.d/

33975975    4 -rwxr-xr-x   1 root     root         2989 9月 16  2015 /etc/init.d/netconsole

33975976    8 -rwxr-xr-x   1 root     root         6630 9月 16  2015 /etc/init.d/network


7、查找/etc目录下最近一周内其内容被修改过,且不属于root或hadoop的文件;


答:


[[email protected] ~]# useradd lx

[[email protected] ~]# touch /etc/test

[[email protected] ~]# chown lx.lx /etc/test

[[email protected] ~]# find /etc -mtime -7 -not \( -user root -o -user hadoop \) -ls

34534602    0 -rw-r--r--   1 lx       lx              0 1月  4 21:41 /etc/test


8、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;


答:


(以下实验在CentOS 6中完成,CentOS 7 里没有此文件。)


方法一:使用VIM替换


[[email protected] ~]# cp /etc/rc.d/rc.sysinit /tmp

[[email protected] tmp]# vim rc.sysinit 

%s/^[[:space:]]/#&/

方法二:使用sed替换


[[email protected] tmp]# sed ‘s/^[[:space:]]/#&/‘ /tmp/rc.sysinit 

#!/bin/bash

#

# /etc/rc.d/rc.sysinit - run once at boot time

#

# Taken in part from Miquel van Smoorenburg‘s bcheckrc.

#

HOSTNAME=$(/bin/hostname)


set -m

if [ -f /etc/sysconfig/network ]; then

#    . /etc/sysconfig/network

fi


9、删除/tmp/rc.sysinit文件中的以#开头,且后面跟了至少一个空白字符的行行的#和空白字符


答:


方法一:使用VIM替换

[[email protected] ~]# vim /tmp/rc.sysinit

 %s/^#[[:space:]]\+//


方法二:使用sed替换


[[email protected] ~]# sed ‘s/^#[[:space:]]\+//‘ /tmp/rc.sysinit 

#!/bin/bash

#

/etc/rc.d/rc.sysinit - run once at boot time

#

Taken in part from Miquel van Smoorenburg‘s bcheckrc.

#

HOSTNAME=$(/bin/hostname)


10、将/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改为1;


答:


方法一:使用VIM替换

[[email protected] ~]# cp /etc/yum.repos.d/CentOS-Media.repo /tmp

[[email protected] ~]# vim /tmp/CentOS-Media.repo 

%s/enabled=0/enabled=1/g


方法二:使用sed替换


[[email protected] ~]# sed ‘/^enabled=/{s/=0$/=1/}; /^gpgcheck=/{s/=0$/=1/}‘ /tmp/CentOS-Media.repo

name=CentOS-$releasever - Media

baseurl=file:///media/CentOS/

        file:///media/cdrom/

        file:///media/cdrecorder/

gpgcheck=1

enabled=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6


11、每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中,保存的文件名形如messages-20161202


答:


[[email protected] ~]# mkdir -p /backup/messages_logs

[[email protected] ~]# crontab  -e

# 每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中


0 0 * * 2,4,6 /bin/cp -a /var/log/messages /backup/messages_logs/messages-`date +%Y%m%d`

~                                                                                              

~                                                                                              

~                                                                                              

~                                                                                              

~                                                                                              

"/tmp/crontab.CrVF1F" 3L, 171C



12、每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中


答:


[[email protected] ~]# mkdir /stats

[[email protected] ~]# crontab -e

#每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中

0 */2 * * * /bin/grep ‘^S‘ /proc/meminfo > /stats/memory.txt


13、写一个脚本创建10用户user10-user19;密码同用户名;


答:


vim useradd.sh


#!/bin/bash

#

if [ ! $UID -eq 0 ]; then

       echo "此脚本只允许root管理员执行"

       exit 1

fi

for username in {10..19};do

       if id user$username &> /dev/null; then

               echo "此用户 user$username 已存在"

       else

               useradd user$username &> /dev/null

       if [ $? -eq 0 ]; then

               echo "user$username" | passwd --stdin user$username &>     /dev/null

               echo "新建用户 user$username 成功"

       fi

fi

done

~                                                                                                                                    


[[email protected] ~]# bash -n useradd.sh 


[[email protected] ~]# bash useradd.sh 

新建用户 user10 成功

新建用户 user11 成功

新建用户 user12 成功

新建用户 user13 成功

新建用户 user14 成功

新建用户 user15 成功

新建用户 user16 成功

新建用户 user17 成功

新建用户 user18 成功

新建用户 user19 成功


以上是关于马哥第三次作业的主要内容,如果未能解决你的问题,请参考以下文章

第三次大作业-作业准备

第三次作业

第三次作业

第三次作业

第三次作业

第三次作业