标签:homework
本周作业内容:
1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;
[root@captain ~]# sed ‘/^[[:space:]]\+/s/\(.*\)/#\1/‘ /etc/rc.d/rc.sysinit > /tmp/rc.sysinit
[root@captain ~]# diff /tmp/rc.sysinit /etc/rc.d/rc.sysinit #对比原文件
13c13
< # . /etc/sysconfig/network
---
> . /etc/sysconfig/network
16c16
< # HOSTNAME=localhost
---
> HOSTNAME=localhost
20,21c20,21
< # mount -n -t proc /proc /proc
< # mount -n -t sysfs /sys /sys >/dev/null 2>&1
---
> mount -n -t proc /proc /proc
> mount -n -t sysfs /sys /sys >/dev/null 2>&1
24c24
< # modprobe usbcore >/dev/null 2>&1 && mount -n -t usbfs /proc/bus/usb /proc/bus/usb
---
> modprobe usbcore >/dev/null 2>&1 && mount -n -t usbfs /proc/bus/usb /proc/bus/usb
26c26
< # mount -n -t usbfs /proc/bus/usb /proc/bus/usb
---
> mount -n -t usbfs /proc/bus/usb /proc/bus/usb
42,47c42,47
< # if [ -r "/selinux/enforce" ] ; then
< # SELINUX_STATE=$(cat "/selinux/enforce")
< # else
< # # assume enforcing if you can‘t read it
< # SELINUX_STATE=1
< # fi
---
> if [ -r "/selinux/enforce" ] ; then
> SELINUX_STATE=$(cat "/selinux/enforce")
> else
> # assume enforcing if you can‘t read it
> SELINUX_STATE=1
> fi
#####ommited####
661,667c661,667
< # if strstr "$cmdline" netprofile= ; then
< # for arg in $cmdline ; do
< # if [ "${arg##netprofile=}" != "${arg}" ]; then
< # /usr/sbin/system-config-network-cmd --profile ${arg##netprofile=}
< # fi
< # done
< # fi
---
> if strstr "$cmdline" netprofile= ; then
> for arg in $cmdline ; do
> if [ "${arg##netprofile=}" != "${arg}" ]; then
> /usr/sbin/system-config-network-cmd --profile ${arg##netprofile=}
> fi
> done
> fi
680c680
< # touch /var/run/confirm
---
> touch /var/run/confirm
685c685
< # /bin/plymouth --sysinit
---
> /bin/plymouth --sysinit2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符;
[root@captain ~]# sed ‘s/^[[:space:]]\+//‘ /boot/grub/grub.conf > /tmp/grub.conf [root@captain ~]# diff /boot/grub/grub.conf /tmp/grub.conf 15,17c15,17 < root (hd0,0) < kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=VolGroup/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet vga=0x340 < initrd /initramfs-2.6.32-504.el6.x86_64.img --- > root (hd0,0) > kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=VolGroup/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet vga=0x340 > initrd /initramfs-2.6.32-504.el6.x86_64.img
3、删除/tmp/rc.sysinit文件中的以#开头,且后面跟了至少一个空白字符的行
[root@captain ~]# sed ‘/^#[[:space:]]\+/d‘ /tmp/rc.sysinit #!/bin/bash # # # HOSTNAME=$(/bin/hostname) set -m if [ -f /etc/sysconfig/network ]; then fi if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then fi if [ ! -e /proc/mounts ]; then fi if [ ! -d /proc/bus/usb ]; then else fi #remount /dev/shm to set attributes from fstab #669700 mount -n -o remount /dev/shm >/dev/null 2>&1 #remount /proc to set attributes from fstab #984003 mount -n -o remount /proc >/dev/null 2>&1 ###ommited### [ "$PROMPT" != no ] && plymouth --ignore-keystroke=Ii if strstr "$cmdline" confirm ; then fi if [ -x /bin/plymouth ]; then fi
4、为/tmp/grub.conf文件中前三行的行首加#号;
[root@captain ~]# sed ‘1,3s/^/#/‘ /tmp/grub.conf | diff - /boot/grub/grub.conf 1,3c1,3 < ## grub.conf generated by anaconda < ## < ## Note that you do not have to rerun grub after making changes to this file --- > # grub.conf generated by anaconda > # > # Note that you do not have to rerun grub after making changes to this file 15,17c15,17 < root (hd0,0) < kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=VolGroup/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet vga=0x340 < initrd /initramfs-2.6.32-504.el6.x86_64.img --- > root (hd0,0) > kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=VolGroup/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet vga=0x340 > initrd /initramfs-2.6.32-504.el6.x86_64.img
5、将/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改为1;
[root@captain ~]# sed ‘/\<gpgcheck\>\|\<enabled\>/s/0/1/‘ /etc/yum.repos.d/CentOS-Media.repo # CentOS-Media.repo # # This repo can be used with mounted DVD media, verify the mount point for # CentOS-6. You can use this repo and yum to install items directly off the # DVD ISO that we release. # # To use this repo, put in your DVD and use it with the other repos too: # yum --enablerepo=c6-media [command] # # or for ONLY the media repo, do this: # # yum --disablerepo=\* --enablerepo=c6-media [command] [c6-media] name=CentOS-$releasever - Media baseurl=file:///media file:///media/cdrom/ file:///media/cdrecorder/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
6、每4小时执行一次对/etc目录的备份,备份至/backup目录中,保存的目录名为形如etc-201608300202
通过crontab -e命令,添加
* */4 * * * /home/shell/backupetc.sh
[root@captain shell]# cat backupetc.sh
#!/bin/bash
readonly bakupdir=/backup
if [ ! -d "$bakupdir" ]; then
mkdir $bakupdir
fi
daybakupdir="${bakupdir}/etc-`date +"%Y%m%d%H%M"`"
if [ ! -d "$daybakupdir" ]; then
mkdir "$daybakupdir"
fi
/bin/cp -ru /etc/* "$daybakupdir"7、每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中,保存的文件名形如messages-20160830
通过crontab -e命令,添加 0 0 * * 2,4,6 /home/shell/backuplogs.sh [root@captain shell]# cat backuplogs.sh #!/bin/bash readonly bakupdir=/backup/messages_logs if [ ! -d "$bakupdir" ]; then mkdir -p $bakupdir fi /bin/cp /var/log/messages $bakupdir/messages-`date +%Y%m%d`
8、每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中
通过crontab -e命令,添加 0 */2 * * * grep ‘^S‘ /proc/meminfo > /stats/memory.txt
9、工作日的工作时间内,每两小时执行一次echo "howdy"
通过crontab -e命令,添加 0 */2 * * 1-5 echo "howdy" # 查看邮件,有howdy输出 [root@captain ~]# mail Heirloom Mail version 12.4 7/29/08. Type ? for help. "/var/spool/mail/root": 2 messages 2 new >N 1 Cron Daemon Fri Sep 9 08:00 22/734 "Cron <root@captain> echo "howdy"" N 2 Cron Daemon Fri Sep 9 10:00 22/734 "Cron <root@captain> echo "howdy"" & 1 Message 1: From root@captain.localdomain Fri Sep 9 08:00:01 2016 Return-Path: <root@captain.localdomain> X-Original-To: root Delivered-To: root@captain.localdomain From: root@captain.localdomain (Cron Daemon) To: root@captain.localdomain Subject: Cron <root@captain> echo "howdy" Content-Type: text/plain; charset=UTF-8 Auto-Submitted: auto-generated X-Cron-Env: <LANG=en_US.UTF-8> X-Cron-Env: <SHELL=/bin/sh> X-Cron-Env: <HOME=/root> X-Cron-Env: <PATH=/usr/bin:/bin> X-Cron-Env: <LOGNAME=root> X-Cron-Env: <USER=root> Date: Fri, 9 Sep 2016 08:00:01 +0800 (CST) Status: R howdy & 2 Message 2: From root@captain.localdomain Fri Sep 9 10:00:02 2016 Return-Path: <root@captain.localdomain> X-Original-To: root Delivered-To: root@captain.localdomain From: root@captain.localdomain (Cron Daemon) To: root@captain.localdomain Subject: Cron <root@captain> echo "howdy" Content-Type: text/plain; charset=UTF-8 Auto-Submitted: auto-generated X-Cron-Env: <LANG=en_US.UTF-8> X-Cron-Env: <SHELL=/bin/sh> X-Cron-Env: <HOME=/root> X-Cron-Env: <PATH=/usr/bin:/bin> X-Cron-Env: <LOGNAME=root> X-Cron-Env: <USER=root> Date: Fri, 9 Sep 2016 10:00:02 +0800 (CST) Status: R howdy & q Held 2 messages in /var/spool/mail/root
脚本编程练习
10、创建目录/tmp/testdir-当前日期时间;
11、在此目录创建100个空文件:file1-file100
12、显示/etc/passwd文件中位于第偶数行的用户的用户名;
13、创建10用户user10-user19;密码同用户名;
14、在/tmp/创建10个空文件file10-file19;
15、把file10的属主和属组改为user10,依次类推。
[root@captain shell]# cat practice1.sh
#!/bin/bash
. /etc/init.d/functions
readonly pwdfile=/etc/passwd
readonly basedir=/tmp
datadir=""
function task1()
{
set $(date +"%F %T")
local dvar=$1
local tvar=$2
datadir=${datadir:="testdir-$dvar $tvar"}
echo "==> executing task1: creating directory $basedir/$datadir"
mkdir -pv "$basedir/$datadir" >/dev/null 2>&1
local ret=$?
if [ "$ret" -ne 0 ]; then
action "making directory $basedir/$datadir" /bin/false
action "task1" /bin/false
else
action "task1" /bin/true
fi
}
function task2()
{
if [ ! -d "$basedir/$datadir" ]; then
echo "the dirctory that we need is not there!"
echo "task2 can not be exectued"
else
echo "==> executing task2: touching 100 empty files now"
touch "$basedir/$datadir"/file{1..100} >/dev/null 2>&1
local ret=$?
if [ "$ret" -ne 0 ]; then
action "touching 100 empty files" /bin/false
action "task2" /bin/false
else
action "task2" /bin/true
fi
fi
}
function task3()
{
echo "==> executing task3: display username in even rows of /etc/passwd file"
awk -F‘:‘ ‘{if (NR % 2 == 0) print $1}‘ $pwdfile
# or: sed -n ‘n;p‘ /etc/passwd
action "task3" /bin/true
}
function task4()
{
echo "==> executing task4: add 10 users, using the user name as their password"
for user in user{10..19}
do
useradd $user >/dev/null 2>&1
local ret=$?
if [ "$ret" -eq 0 ]; then
action "add user $user" /bin/true
echo "$user" | passwd --stdin "$user" >/dev/null
else
action "add user $user" /bin/false
fi
done
}
function task5()
{
echo "==> executing task5: touching 10 empty files"
touch "$basedir"/file{10..19}
local ret=$?
if [ "$ret" -ne 0 ]; then
action "touching 10 empty files" /bin/false
action "task5" /bin/false
else
action "task5" /bin/true
fi
}
function task6()
{
echo "==> executing task6: chage ownership of files"
local usrlist=(user{10..19})
local grplist=(${usrlist[*]})
local filelist=(file{10..19})
local arrlen=$[${#filelist[@]}-1]
local ret
for i in `seq 0 1 $arrlen`
do
chown ${usrlist[i]}:${grplist[i]} $basedir/${filelist[i]} >/dev/null 2>&1
ret=$?
if [ "$ret" -eq 0 ]; then
action "change ownship of file $basedir/${filelist[i]} to ${usrlist[i]}:${grplist[i]}" /bin/true
else
action "change ownship of file $basedir/${filelist[i]} to ${usrlist[i]}:${grplist[i]}" /bin/false
fi
done
}
function main()
{
task1
task2
task3
task4
task5
task6
}
main
[root@captain shell]# sh practice1.sh
==> executing task1: creating directory /tmp/testdir-2016-09-11 08:49:36
task1 [ OK ]
==> executing task2: touching 100 empty files now
task2 [ OK ]
==> executing task3: display username in even rows of /etc/passwd file
bin
adm
sync
halt
uucp
games
ftp
dbus
rpc
rpcuser
haldaemon
saslauth
sshd
oprofile
dhcpd
icheck
named
mysql
slackware
MySQL
test1
hadoop
testbash
nologin
task3 [ OK ]
==> executing task4: add 10 users, using the user name as their password
add user user10... [ OK ]
add user user11... [ OK ]
add user user12... [ OK ]
add user user13... [ OK ]
add user user14... [ OK ]
add user user15... [ OK ]
add user user16... [ OK ]
add user user17... [ OK ]
add user user18... [ OK ]
add user user19... [ OK ]
==> executing task5: touching 10 empty files
task5 [ OK ]
==> executing task6: chage ownership of files
change ownship of file /tmp/file10 to user10:user10 [ OK ]
change ownship of file /tmp/file11 to user11:user11 [ OK ]
change ownship of file /tmp/file12 to user12:user12 [ OK ]
change ownship of file /tmp/file13 to user13:user13 [ OK ]
change ownship of file /tmp/file14 to user14:user14 [ OK ]
change ownship of file /tmp/file15 to user15:user15 [ OK ]
change ownship of file /tmp/file16 to user16:user16 [ OK ]
change ownship of file /tmp/file17 to user17:user17 [ OK ]
change ownship of file /tmp/file18 to user18:user18 [ OK ]
change ownship of file /tmp/file19 to user19:user19 [ OK ]
检查结果
# task1, task2
[root@captain ~]# tree /tmp/testdir-2016-09-11\ 09\:02\:10/
/tmp/testdir-2016-09-11 09:02:10/
├── file1
├── file10
├── file100
├── file11
├── file12
├── file13
├── file14
├── file15
├── file16
├── file17
├── file18
├── file19
├── file2
###ommited###
├── file96
├── file97
├── file98
└── file99
0 directories, 100 files
#task3
[root@captain ~]# cat -n /etc/passwd
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
### ommited ###
44 hadoop:x:1001:1001::/home/hadoop:/bin/bash
45 bash:x:3007:3007::/home/bash:/bin/bash
46 testbash:x:3008:3008::/home/testbash:/bin/bash
47 basher:x:3009:3009::/home/basher:/bin/bash
48 nologin:x:3010:3010::/home/nologin:/sbin/nologin
#task4
[root@captain ~]# tail -10 /etc/passwd
user10:x:3011:3011::/home/user10:/bin/bash
user11:x:3012:3012::/home/user11:/bin/bash
user12:x:3013:3013::/home/user12:/bin/bash
user13:x:3014:3014::/home/user13:/bin/bash
user14:x:3015:3015::/home/user14:/bin/bash
user15:x:3016:3016::/home/user15:/bin/bash
user16:x:3017:3017::/home/user16:/bin/bash
user17:x:3018:3018::/home/user17:/bin/bash
user18:x:3019:3019::/home/user18:/bin/bash
user19:x:3020:3020::/home/user19:/bin/bash
#task5, task6
[root@captain ~]# ll /tmp/file{10..19}
-rw-r--r--. 1 user10 user10 0 Sep 11 08:49 /tmp/file10
-rw-r--r--. 1 user11 user11 0 Sep 11 08:49 /tmp/file11
-rw-r--r--. 1 user12 user12 0 Sep 11 08:49 /tmp/file12
-rw-r--r--. 1 user13 user13 0 Sep 11 08:49 /tmp/file13
-rw-r--r--. 1 user14 user14 0 Sep 11 08:49 /tmp/file14
-rw-r--r--. 1 user15 user15 0 Sep 11 08:49 /tmp/file15
-rw-r--r--. 1 user16 user16 0 Sep 11 08:49 /tmp/file16
-rw-r--r--. 1 user17 user17 0 Sep 11 08:49 /tmp/file17
-rw-r--r--. 1 user18 user18 0 Sep 11 08:49 /tmp/file18
-rw-r--r--. 1 user19 user19 0 Sep 11 08:49 /tmp/file19本文出自 “睿宝宝的半熟芝士” 博客,谢绝转载!
标签:homework
原文地址:http://zzzzzzzz.blog.51cto.com/1052601/1851532