首页 > 代码库 > 全新Linux+Python高端运维班第三次作业
全新Linux+Python高端运维班第三次作业
1、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello();
[root@tom ~]# grep -E -o "[_[:alpha:]]+\(\)" /etc/rc.d/init.d/functions fstab_decode_str() checkpid() __readlink() __fgrep() __kill_pids_term_kill_checkpids() __kill_pids_term_kill() __umount_loop() __source_netdevs_fstab() __source_netdevs_mtab() __umount_loopback_loop() __find_mounts() __pids_var_run() __pids_pidof() daemon() killproc() pidfileofproc() pidofproc() status() echo_success() echo_failure() echo_passed() echo_warning() update_boot_stage() success() failure() passed() warning() action() action_silent() strstr() confirm() get_numeric_dev() is_ignored_file() is_true() is_false() apply_sysctl() key_is_random() find_crypto_mount_point() init_crypto()
2、使用echo命令输出一个绝对路径,使用grep取出其基名;
扩展:取出其路径名
[root@tom ~]# echo /etc/sysconfig/network-scripts/ifcfg-eth0 | grep -E -o "[^/]+$" ifcfg-eth0 #extended# [root@tom ~]# echo /etc/sysconfig/network-scripts/ifcfg-eth0 | grep -E -o "/.*/" /etc/sysconfig/network-scripts/
3、找出ifconfig命令结果中的1-255之间数字;
[root@tom ~]# ifconfig eth0 Link encap:Ethernet HWaddr 08:00:27:DA:EF:CA inet addr:172.18.11.121 Bcast:172.18.11.127 Mask:255.255.255.128 inet6 addr: fe80::a00:27ff:feda:efca/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:21714 errors:0 dropped:0 overruns:0 frame:0 TX packets:915 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1479394 (1.4 MiB) TX bytes:133705 (130.5 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) [root@tom ~]# ifconfig | egrep -o "\<([1-9]|[0-9]{2}|1[0-9]{2}|2[0-5]{2})\>" 08 00 27 172 18 11 121 172 18 11 127 255 255 255 128 64 1 2 1 224 2 127 1 255 1 128 1
4、查找当前系统上没有属主或属组的文件;
进一步:查找当前系统上没有属主或属组,且最近3天内曾被访问过的文件或目录;
[root@tom ~]# find / \( -nouser -o -nogroup \) -a -ls | wc -l find: `/proc/21565/task/21565/fd/5‘: No such file or directory find: `/proc/21565/task/21565/fd/5‘: No such file or directory find: `/proc/21565/task/21565/fdinfo/5‘: No such file or directory find: `/proc/21565/task/21565/fdinfo/5‘: No such file or directory find: `/proc/21565/fd/5‘: No such file or directory find: `/proc/21565/fd/5‘: No such file or directory find: `/proc/21565/fdinfo/5‘: No such file or directory find: `/proc/21565/fdinfo/5‘: No such file or directory 1842 #Next step# [root@tom ~]# find / \( -nouser -o -nogroup \) -a -atime -3 -ls | wc -l find: `/proc/21574/task/21574/fd/5‘: No such file or directory find: `/proc/21574/task/21574/fdinfo/5‘: No such file or directory find: `/proc/21574/fd/5‘: No such file or directory find: `/proc/21574/fdinfo/5‘: No such file or directory 214
5、查找/etc目录下大于1M,且类型为普通文件的所有文件;
[root@tom ~]# find /etc -size +1M -type f -exec ls -lh {} \; -rw-r--r--. 1 root root 8.1M Dec 16 16:43 /etc/selinux/targeted/modules/active/policy.kern -rw-r--r--. 1 root root 8.1M Dec 16 16:43 /etc/selinux/targeted/policy/policy.24 -rw-r--r--. 1 root root 2.2M Dec 16 16:10 /etc/gconf/gconf.xml.defaults/%gconf-tree.xml
6、查找/etc/init.d/目录下,所有用户都有执行权限,且其它用户有写权限的文件;
[root@tom ~]# find /etc/init.d/ -perm 113 [root@tom ~]# ls -lh /etc/init.d/ total 440K -rwxr-xr-x. 1 root root 1.3K May 12 2016 abrt-ccpp -rwxr-xr-x. 1 root root 1.6K May 12 2016 abrtd -rwxr-xr-x. 1 root root 1.7K May 12 2016 abrt-oops -rwxr-xr-x. 1 root root 1.8K Feb 17 2016 acpid -rwxr-xr-x. 1 root root 2.1K Feb 20 2015 atd -rwxr-xr-x. 1 root root 3.5K May 11 2016 auditd -rwxr-xr-x. 1 root root 4.0K Jul 12 2016 autofs -r-xr-xr-x. 1 root root 1.4K Aug 24 02:37 blk-availability -rwxr-xr-x. 1 root root 710 Nov 11 2010 bluetooth -rwxr-xr-x. 1 root root 2.1K May 9 2016 certmonger -rwxr-xr-x. 1 root root 12K Jul 24 2015 cpuspeed -rwxr-xr-x. 1 root root 2.8K Aug 24 02:36 crond -rwxr-xr-x. 1 root root 3.0K May 11 2016 cups -rwxr-xr-x. 1 root root 1.7K May 11 2016 dnsmasq -rwxr-xr-x. 1 root root 3.2K Jul 9 2013 firstboot -rw-r--r--. 1 root root 25K Apr 12 2016 functions -rwxr-xr-x. 1 root root 1.8K Oct 15 2014 haldaemon -rwxr-xr-x. 1 root root 5.9K Apr 12 2016 halt -rwxr-xr-x. 1 root root 2.0K Nov 19 07:49 htcacheclean -rwxr-xr-x. 1 root root 3.5K Nov 19 07:49 httpd -rwxr-xr-x. 1 root root 11K Jul 24 2015 ip6tables -rwxr-xr-x. 1 root root 6.6K May 11 2016 ipsec -rwxr-xr-x. 1 root root 11K Jul 24 2015 iptables -rwxr-xr-x. 1 root root 1.9K Feb 2 2016 irqbalance -rwxr-xr-x. 1 root root 21K Nov 18 23:19 kdump -rwxr-xr-x. 1 root root 652 Apr 12 2016 killall -r-xr-xr-x. 1 root root 2.1K Aug 24 02:37 lvm2-lvmetad -r-xr-xr-x. 1 root root 3.0K Aug 24 02:37 lvm2-monitor -rwxr-xr-x. 1 root root 2.6K Jun 21 2016 mdmonitor -rwxr-xr-x. 1 root root 2.2K Apr 22 2015 messagebus -rwxr-xr-x. 1 root root 6.9K May 11 2016 mysqld -rwxr-xr-x. 1 root root 3.0K Apr 12 2016 netconsole -rwxr-xr-x. 1 root root 5.2K Apr 12 2016 netfs -rwxr-xr-x. 1 root root 6.3K Apr 12 2016 network -rwxr-xr-x. 1 root root 2.2K May 11 2016 NetworkManager -rwxr-xr-x. 1 root root 6.8K Oct 5 04:27 nfs -rwxr-xr-x. 1 root root 3.5K Oct 5 04:27 nfslock -rwxr-xr-x. 1 root root 1.9K May 3 2016 ntpd -rwxr-xr-x. 1 root root 2.0K May 3 2016 ntpdate -rwxr-xr-x. 1 root root 2.3K May 11 2016 oddjobd -rwxr-xr-x. 1 root root 2.5K May 31 2010 openct -rwxr-xr-x. 1 root root 2.2K Jul 24 2015 pcscd -rwxr-xr-x. 1 root root 2.0K May 11 2016 portreserve -rwxr-xr-x. 1 root root 3.9K Nov 10 2015 postfix -rwxr-xr-x. 1 root root 9.5K Nov 5 22:08 postgresql-9.2 -rwxr-xr-x. 1 root root 1.7K May 11 2016 pppoe-server -rwxr-xr-x. 1 root root 1.6K Jul 17 2012 psacct -rwxr-xr-x. 1 root root 2.0K Jan 7 2015 quota_nld -rwxr-xr-x. 1 root root 1.5K Nov 13 2015 rdisc -rwxr-xr-x. 1 root root 1.8K Nov 18 23:30 restorecond -rwxr-xr-x. 1 root root 1.8K Sep 22 2015 rngd -rwxr-xr-x. 1 root root 2.1K May 11 2016 rpcbind -rwxr-xr-x. 1 root root 2.5K Oct 5 04:27 rpcgssd -rwxr-xr-x. 1 root root 2.3K Oct 5 04:27 rpcidmapd -rwxr-xr-x. 1 root root 2.5K Oct 5 04:27 rpcsvcgssd -rwxr-xr-x. 1 root root 2.0K Dec 10 2014 rsyslog -rwxr-xr-x. 1 root root 1.7K Nov 18 23:30 sandbox -rwxr-xr-x. 1 root root 2.1K Feb 27 2015 saslauthd -rwxr-xr-x. 1 root root 647 Apr 12 2016 single -rwxr-xr-x. 1 root root 3.0K Feb 22 2013 smartd -rwxr-xr-x. 1 root root 2.2K Aug 24 02:47 snmpd -rwxr-xr-x. 1 root root 1.7K Aug 24 02:47 snmptrapd -rwxr-xr-x. 1 root root 2.5K May 11 2016 spice-vdagentd -rwxr-xr-x. 1 root root 4.6K May 12 2016 sshd -rwxr-xr-x. 1 root root 2.7K Jul 12 2016 sssd -rwxr-xr-x. 1 root root 1.2K May 11 2016 sysstat -rwxr-xr-x. 1 root root 2.3K Sep 6 22:51 udev-post -rwxr-xr-x. 1 root root 16K Nov 6 16:42 vboxadd -rwxr-xr-x. 1 root root 3.0K Nov 6 16:43 vboxadd-service -rwxr-xr-x. 1 root root 21K Nov 6 16:43 vboxadd-x11 -rwxr-xr-x. 1 root root 3.4K May 11 2016 vsftpd -rwxr-xr-x. 1 root root 1.7K Feb 22 2013 wdaemon -rwxr-xr-x. 1 root root 1.6K Aug 24 02:58 winbind -rwxr-xr-x. 1 root root 1.9K Nov 18 22:26 wpa_supplicant -rwxr-xr-x. 1 root root 5.0K May 11 2016 ypbind
7、查找/etc目录下最近一周内其内容被修改过,且不属于root或hadoop的文件;
[root@tom ~]# find /etc -mtime -7 -a -not \( -user root -o -user hadoop \) [root@tom ~]#
8、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;
[root@tom ~]# cp /etc/rc.d/rc.sysinit /tmp [root@tom ~]# ls -lh /tmp total 24K drwx------. 2 root root 4.0K Dec 11 19:18 pulse-0QUeAoK4lJM6 -rwxr-xr-x. 1 root root 20K Feb 12 17:07 rc.sysinit [root@tom ~]# head -n 20 /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 if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then HOSTNAME=localhost fi if [ ! -e /proc/mounts ]; then mount -n -t proc /proc /proc [root@tom ~]# vim /tmp/rc.sysinit #在末行模式下输入: :%s@^[[:space:]]\+@#&@g [root@tom ~]# head -n 20 /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 if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then # HOSTNAME=localhost fi if [ ! -e /proc/mounts ]; then # mount -n -t proc /proc /proc [root@tom ~]# head -n 20 /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 if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then HOSTNAME=localhost fi if [ ! -e /proc/mounts ]; then mount -n -t proc /proc /proc
9、删除/tmp/rc.sysinit文件中的以#开头,且后面跟了至少一个空白字符的行行的#和空白字符
[root@tom ~]# head -n 20 /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 if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then # HOSTNAME=localhost fi if [ ! -e /proc/mounts ]; then # mount -n -t proc /proc /proc [root@tom ~]# vim /tmp/rc.sysinit #在末行模式下输入: :%s@^#[[:space:]]\+@@g [root@tom ~]# head -n 20 /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 if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then HOSTNAME=localhost fi if [ ! -e /proc/mounts ]; then mount -n -t proc /proc /proc
10、将/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改为1;
[root@tom ~]# cat /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/CentOS/ file:///media/cdrom/ file:///media/cdrecorder/ gpgcheck=1 enabled=0 gpgkey= [root@tom ~]# vi /etc/yum.repos.d/CentOS-Media.repo #在末行模式下输入: :%s/\(enabled\|gpgcheck\)=0/\1=1/g [root@tom ~]# cat /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/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
[root@tom ~]# crontab -e no crontab for root - using an empty one crontab: installing new crontab [root@tom ~]# crontab -l #Backup /var/log/messages to /backup/messages_logs/ at every week 2,4,6 --sam * * * * 2,4,6 cp /var/log/messages backup/messages_logs/messages-$(date +%Y%m%D)
12、每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中
[root@tom ~]# crontab -e crontab: installing new crontab [root@tom ~]# crontab -l #Backup /var/log/messages to /backup/messages_logs/ at every week 2,4,6 --sam * * * * 2,4,6 cp /var/log/messages backup/messages_logs/messages-$(date +%Y%m%D) #每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中 * */2 * * * cat /proc/meminfo | grep "^S" >> /stats/memory.txt
13、写一个脚本创建10用户user10-user19;密码同用户名;
[root@tom bin]# vim uadd #!/bin/bash #add user10-user19. for ((i=10;i<=19;i++));do id user$i &> /dev/null && exit0 || useradd user$i && echo "user$i" | passwd --stdin user$i done [root@tom bin]# ll total 4 -rw-r--r--. 1 root root 155 Feb 12 18:02 uadd [root@tom bin]# chmod 755 uadd [root@tom bin]# ll total 4 -rwxr-xr-x. 1 root root 155 Feb 12 18:02 uadd [root@tom bin]# uadd Changing password for user user10. passwd: all authentication tokens updated successfully. Changing password for user user11. passwd: all authentication tokens updated successfully. Changing password for user user12. passwd: all authentication tokens updated successfully. Changing password for user user13. passwd: all authentication tokens updated successfully. Changing password for user user14. passwd: all authentication tokens updated successfully. Changing password for user user15. passwd: all authentication tokens updated successfully. Changing password for user user16. passwd: all authentication tokens updated successfully. Changing password for user user17. passwd: all authentication tokens updated successfully. Changing password for user user18. passwd: all authentication tokens updated successfully. Changing password for user user19. passwd: all authentication tokens updated successfully. [root@tom bin]# tail /etc/passwd user10:x:3009:3009::/home/user10:/bin/bash user11:x:3010:3010::/home/user11:/bin/bash user12:x:3011:3011::/home/user12:/bin/bash user13:x:3012:3012::/home/user13:/bin/bash user14:x:3013:3013::/home/user14:/bin/bash user15:x:3014:3014::/home/user15:/bin/bash user16:x:3015:3015::/home/user16:/bin/bash user17:x:3016:3016::/home/user17:/bin/bash user18:x:3017:3017::/home/user18:/bin/bash user19:x:3018:3018::/home/user19:/bin/bash
本文出自 “Linux晋级之路” 博客,谢绝转载!
全新Linux+Python高端运维班第三次作业