1. 程式人生 > 實用技巧 >網路班第五週

網路班第五週

1.編寫指令碼 createuser.sh,實現如下功能:使用一個使用者名稱做為引數,如果 指定引數的使用者存在,就顯示其存在,否則新增之;顯示新增的使用者的id號等資訊

[root@centos7 ~]# 
[root@centos7 ~]# cd /data/script/
[root@centos7 script]# ls
createuser.sh
[root@centos7 script]# cat createuser.sh 
#!/bin/bash
#使用一個使用者名稱做為引數,如果指定引數的使用者存在,就顯示其存在,否則新增之;顯示新增的使用者的id號等資訊
#日期2020-12-22
#
/data/scipts/createuser.sh read -p "請輸入一個使用者名稱:" USERNAME if `id $USERNAME &> /dev/null`;then echo "使用者存在,使用者的ID資訊為:`id $USERNAME`" else PASSWORD=`cat /dev/urandom | tr -cd A-Za-z0-9| head -c6` `useradd $USERNAME &> /dev/null` `echo "$PASSWORD" | passwd --stdin $USERNAME &> /dev/null` echo "
使用者名稱:$USERNAME 密碼:$PASSWORD" >> /data/user.txt `chage -d 0 $USERNAME` echo "使用者已新增,使用者的ID資訊為:`id $USERNAME` 密碼為:$PASSWORD" fi [root@centos7 script]# ll /home total 0 drwx------ 2 mageia mageia 62 Dec 10 19:08 linux drwx------ 2 1005 distro 62 Dec 10 19:07 mandriva drwx------ 2 slackware distro 62
Dec 10 19:14 slackware drwx------ 2 user1 user1 83 Dec 10 19:51 user1 drwx------ 2 user2 user2 62 Dec 10 19:35 user2 drwx------ 2 user3 user3 62 Dec 10 19:35 user3 drwx------ 2 wang wang 62 Dec 22 16:23 wang drwx------. 2 wukui wukui 83 Nov 25 10:16 wukui [root@centos7 script]# bash createuser.sh 請輸入一個使用者名稱:wang 使用者存在,使用者的ID資訊為:uid=2007(wang) gid=2007(wang) groups=2007(wang) [root@centos7 script]# bash createuser.sh 請輸入一個使用者名稱:zhang 使用者已新增,使用者的ID資訊為:uid=2008(zhang) gid=2008(zhang) groups=2008(zhang) 密碼為:6VZxTs [root@centos7 script]# bash createuser.sh 請輸入一個使用者名稱:li 使用者已新增,使用者的ID資訊為:uid=2009(li) gid=2009(li) groups=2009(li) 密碼為:lmdgH0 [root@centos7 script]#

2.編寫生成指令碼基本格式的指令碼,包括作者,聯絡方式,版本,時間,描述等

# 編輯~/.vimrc配置檔案
[root@centos7 ~]# cat ~/.vimrc
set tabstop=4
[root@centos7 ~]# vim ~/.vimrc
[root@centos7 ~]# vim ~/.vimrc
[root@centos7 ~]# vim
[root@centos7 ~]# cat ~/.vimrc
set tabstop=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:                          N51045")
         call setline(5,"#QQ:                              1467551834")
         call setline(6,"#version:                         1.0")
         call setline(7,"#Date   :                         ".strftime("%Y-%m-%d"))
         call setline(8,"#FileName:                        ".expand("%"))
         call setline(9,"#URL:                             http://www.magedu.com")
         call setline(10,"#Description:                     The test script")
         call setline(11,"#Copyright (C):                  ".strftime("%Y")." All rights reserved")
         call setline(12,"#************************************************************************************")
         call setline(13,"")
      endif
 endfunc
 autocmd  BufNewFile  * normal G

[root@centos7 ~]# 
# 新建測試指令碼檔案test.sh
[root@centos7 ~]# ls
anaconda-ks.cfg  f1.txt
[root@centos7 ~]# vim test.sh
[root@centos7 ~]# ls
anaconda-ks.cfg  f1.txt  test.sh
[root@centos7 ~]# cat test.sh 
#!/bin/bash
#
#*************************************************************************************
#Author:                          N51045
#QQ:                              1467551834
#version:                         1.0
#Date   :                         2020-12-22
#FileName:                        test.sh
#URL:                             http://www.magedu.com
#Description:                     The test script
#Copyright (C):                  2020 All rights reserved
#************************************************************************************

[root@centos7 ~]#

3.查詢/etc目錄下大於1M且型別為普通檔案的所有檔案

# 方法一
[root@centos7 ~]# find /etc/ -size +1M -a -type f -exec ls -lhS {}   \+;
-r--r--r--. 1 root root 8.0M Nov 25 06:40 /etc/udev/hwdb.bin
-rw-------. 1 root root 3.8M Apr  1  2020 /etc/selinux/targeted/active/policy.kern
-rw-r--r--. 1 root root 3.8M Apr  1  2020 /etc/selinux/targeted/policy/policy.31
-rw-r--r--. 1 root root 1.4M Apr  1  2020 /etc/selinux/targeted/contexts/files/file_contexts.bin
[root@centos7 ~]#
# 方法二
[root@centos7 ~]# find /etc/ -size +1M -a -type f | xargs ls -lhS
-r--r--r--. 1 root root 8.0M Nov 25 06:40 /etc/udev/hwdb.bin
-rw-------. 1 root root 3.8M Apr  1  2020 /etc/selinux/targeted/active/policy.kern
-rw-r--r--. 1 root root 3.8M Apr  1  2020 /etc/selinux/targeted/policy/policy.31
-rw-r--r--. 1 root root 1.4M Apr  1  2020 /etc/selinux/targeted/contexts/files/file_contexts.bin
[root@centos7 ~]#

4.打包/etc/目錄下面所有conf結尾的檔案,壓縮包名稱為當天的時間,並拷貝到/usr/local/src目錄備份。

[root@centos7 ~]# 
[root@centos7 ~]# ll /usr/local/src/
total 0
[root@centos7 ~]# find /etc/ -name "*.conf" | xargs tar -cpf `date +%F`.tar && cp -a `date +%F`.tar /usr/local/src/
tar: Removing leading `/' from member names
[root@centos7 ~]# date
Tue Dec 22 20:17:28 CST 2020
[root@centos7 ~]# ll -h 2020-12-22.tar  /usr/local/src/2020-12-22.tar
-rw-r--r-- 1 root root 190K Dec 22 20:16 2020-12-22.tar
-rw-r--r-- 1 root root 190K Dec 22 20:16 /usr/local/src/2020-12-22.tar
[root@centos7 ~]#

5.查詢當前系統上沒有屬主或屬組,且最近一個周內曾被訪問過的檔案或目錄

[root@centos7 ~]# find / \( -nouser -o -nogroup \) -atime +7 \( -type f -o -type d \) | xargs ls -lh
find: ‘/proc/2113/task/2113/fdinfo/6’: No such file or directory
find: ‘/proc/2113/fdinfo/5’: No such file or directory
-rw-r--r-- 1 1005 distro  18 Apr  1  2020 /home/mandriva/.bash_logout
-rw-r--r-- 1 1005 distro 193 Apr  1  2020 /home/mandriva/.bash_profile
-rw-r--r-- 1 1005 distro 231 Apr  1  2020 /home/mandriva/.bashrc
-rw-rw---- 1 1005 mail     0 Dec 10 19:07 /var/spool/mail/mandriva
[root@centos7 ~]#

6.查詢/etc目錄下至少有一類使用者沒有執行許可權的檔案

[root@centos7 ~]# find /etc -not -perm -111 | wc -l
2040
[root@centos7 ~]# find /etc ! -perm -111 | wc -l
2040
[root@centos7 ~]#