week 6

1.每12小時備份並壓縮/etc/目錄至/backup目錄中,保存文件名稱格式爲,"etc-年-月-日-時-分.tar.gz"

tar zcfP /backup/$(date +%F-%H-%M).tar.gz /etc/

2.rpm包管理功能總結以及實例應用演示

rpm命令按照用途可以分爲 安裝、升級、卸載、查詢、校驗、數據庫維護六個區塊,

rpm命令:rpm  [OPTIONS][PACKAGE_FILE]
    安裝:-i, --install
    升級:-U, --update, -F, --freshen
    卸載:-e, --erase
    查詢:-q, --query
    校驗:-V, --verify
    數據庫維護:--builddb, --initdb

1) 安裝

rpm {-i|--install} [install-options] PACKAGE_FILE ...

    rpm  -ivh  PACKAGE_FILE ...
        GENERAL OPTIONS:
        -v:verbose,詳細信息
        -vv:更詳細的輸出

        [install-options]:
        -h:hash marks輸出進度條;每個#表示2%的進度;
        --test:測試安裝,檢查並報告依賴關係及衝突消息等;
        --nodeps:忽略依賴關係;不建議;
        --replacepkgs:重新安裝
        --nosignature:不檢查包簽名信息,不檢查來源合法性;
        --nodigest:不檢查包完整性信息;
        # rpm -i example.rpm 安裝example.rpm包;
        # rpm -iv example.rpm 安裝example.rpm包並在安裝過程中顯示正在安裝的信息;
        # rpm -ivh example.rpm 安裝example.rpm包並在安裝過程中顯示正在安裝的信息及安裝進度;

2)升級

rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
    --oldpackage: 降級;
    --force: 強制升級;

# rpm -Uvh example.rpm 升級example.rpm包

注意:(1) 不要對內核做升級操作;Linux支持多內核版本並存,因此,直接安裝新版本內核;
     (2) 如果某原程序包的配置文件安裝後曾被修改過,升級時,新版本的程序提供的同一個配置文件不會覆蓋原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)後提供;

3)卸載

rpm {-e|--erase} [--allmatches][--nodeps] [--noscripts][--test] PACKAGE_NAME ...
    --allmatches:卸載所有匹配指定名稱的程序包的各版本;
    --nodeps:忽略依賴關係
    --test:測試卸載,dry run模式

# rpm -e example  卸載軟件example,注意:只輸入軟件包名即可,而不是文件名

4)查詢

rpm {-q|--query} [select-options] [query-options]

    [select-options]
        PACKAGE_NAME:查詢指定的程序包是否已經安裝,及其版本;
        -a, --all:查詢所有已經安裝過的包;
        -f  FILE:查詢指定的文件由哪個程序包安裝生成;
        -p, --package PACKAGE_FILE:用於實現對未安裝的程序包執行查詢操作;
        --whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個程序包提供;
        --whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴;

    [query-options]
        --changelog:查詢rpm包的changlog;
        -l, --list:程序安裝生成的所有文件列表;
        -i, --info:程序包相關的信息,版本號、大小、所屬的包組,等;
        -c, --configfiles:查詢指定的程序包提供的配置文件;
        -d, --docfiles:查詢指定的程序包提供的文檔;
        --provides:列出指定的程序包提供的所有的CAPABILITY;
        -R, --requires:查詢指定的程序包的依賴關係;
        --scripts:查看程序包自帶的腳本片斷;
    用法:
        -qi  PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE
        -qpi  PACKAGE_FILE, -qpl PACKAGE_FILE, -qpc PACKAGE_FILE, ... 

#rpm -q example 查詢example軟件包

5)校驗軟件包

rpm {-V|--verify} [select-options] [verify-options] 
rpm -V pkg 校驗軟件包

6)數據庫重建

通過rpm 命令查詢一個rpm 包是否安裝了,也是要通過rpm 數據庫來完成的;有時rpm 系統出了問題,不能安裝和查詢,可能會是數據庫出現問題,可以使用下面命令重建

rpm管理器數據庫路徑:/var/lib/rpm/
    查詢操作:通過此處的數據庫進行;

獲取幫助:
    CentOS 6:man rpm
    CentOS 7:man rpmdb  

rpm {--initdb|--rebuilddb} [--dbpath DIRECTORY] [--root DIRECTORY]
    --initdb:初始化數據庫,當前無任何數據庫可實始化創建一個新的;當前有時不執行任何操作;
    --rebuilddb:重新構建,通過讀取當前系統上所有已經安裝過的程序包進行重新創建;

3.yum的配置和使用總結以及yum私有倉庫的創建

yum(yellow dog, Yellowdog Update Modifier)程序包管理器的前端工具,是一個在Fedora、RedHat、SUSE中的前端軟件包管理器。基於rpm包管理,能夠從指定服務器自動下載rpm包並且安裝,可以自動處理依賴性關係,並且一次性安裝所有依賴的軟件包

客戶端配置文件指定對應服務器訪問方式如下幾種:

ftp://
http://
nfs://
file:///

配置文件:

/etc/yum.conf:爲所有倉庫提供公共配置
/etc/yum.repos.d/*.repo:爲倉庫的指向提供配置

    倉庫指向的定義:
    [repositoryID]
    name=repo_name                    #顯示的名稱
    baseurl=url://path/to/repository/   #路徑可以是網絡上的也可以是本地訪問路徑
    enabled={1|0}                     #是否啓用包來源合法性驗證
    gpgcheck={1|0}                    #是否啓用倉庫
    gpgkey=URL                        #公鑰文件
    enablegroups={1|0}
    failovermethod={roundrobin|priority}   默認爲:roundrobin,意爲隨機挑選;
    cost=1000   #倉庫開銷,用來做優先級,數值越小,優先級越大默認爲1000

yum的常用命令

yum insatll  package  安裝軟件包
yum list              列出所有可用的package和package組
yum clean all         清除所有緩衝數據
yum deplist  package  列出一個包所有依賴的包
yum remove   package  卸載一個包

yum創建私有倉庫

創建yum倉庫:
createrepo [options] <directory>

4.寫一個腳本實現列出一下菜單給用戶:

(1)disk:show disk info信息

(2)mem:show memory info信息

(3)cpu:show cpu info信息

(*)quit

#!/bin/bash
cat << EOF
(1)disk:show disk info信息
(2)mem:show memory info信息
(3)cpu:show cpu info信息
(*)quit
EOF
read -p "請輸入OPTION:" option
case $option in
1)
    fdisk -l /dev/[hs]d[a-z]
    ;;
2)
    free -m
    ;;
3)
    lscpu
    ;;
*)
    echo "quit"
    exit
    ;;
esac

5.sed用法總結並結合實例演示

sed是一種在線編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩衝區中,稱爲“模式空間”(pattern space),接着用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往屏幕。接着處理下一行,這樣不斷重複,直到文件末尾。文件內容並沒有改變,除非你使用重定向存儲輸出。sed主要用來自動編輯一個或多個文件;簡化對文件的反覆操作;編寫轉換程序等。

sed用法格式:

sed [OPTION]...  'script'  [input-file] ...
    script:地址定界編輯命令

sed常用選項:

 -n:不輸出模式空間中的內容至屏幕;
 -e script, --expression=script:多點編輯;能指定多個編輯命令
 -f  /PATH/TO/SED_SCRIPT_FILE每行一個編輯命令;
 -r, --regexp-extended:支持使用擴展正則表達式;
 -i[SUFFIX], --in-place[=SUFFIX]:直接編輯原文件 ;

地址定界:

    (1) 空地址:對全文進行處理;
    (2) 單地址:
        #:指定行;
        /pattern/:被此模式所匹配到的每一行;
    (3) 地址範圍
        #,#:  指定行到指定行
        #,+#: 從指定數字行加上指定數字,例如3,+8 ,從第三行開始到第十行(包括第三行)
        #,/pat1/  從指定行到第一次匹配到的pat結束
        /pat1/,/pat2/  從第一次匹配到的pat到第二次匹配到的pat
        $:最後一行;
    (4) 步進:~
        1~2:所有奇數行
        2~2:所有偶數行

編輯命令:

d:刪除;
p:顯示模式空間中的內容;
a  \text:在行後面追加文本“text”,支持使用\n實現多行追加; 
i  \text:在行前面插入文本“text”,支持使用\n實現多行插入; 
c  \text:把匹配到的行替換爲此處指定的文本“text”;
w /PATH/TO/SOMEFILE:保存模式空間匹配到的行至指定的文件中;
r  /PATH/FROM/SOMEFILE:讀取指定文件的內容至當前文件被模式匹配到的行後面;文件合併;
=:爲模式匹配到的行打印行號;
!:條件取反;
    地址定界!編輯命令;
s///:查找替換,其分隔符可自行指定,常用的有s@@@, s###等;
    替換標記:
        g:全局替換;
        w /PATH/TO/SOMEFILE:將替換成功的結果保存至指定文件中;
        p:顯示替換成功的行;

示例:

1) -n與p合用

查看/etc/passwd文件的1-3行

[root@www ~]# cat -n /etc/passwd|sed -n '1,3p'
     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

打印/etc/passwd文件的奇數行

[root@www ~]# cat -n /etc/passwd|sed -n 'p;n'
     1  root:x:0:0:root:/root:/bin/bash
     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
     5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
     7  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
     9  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    11  operator:x:11:0:operator:/root:/sbin/nologin
    13  gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
    15  nobody:x:99:99:Nobody:/:/sbin/nologin
    17  vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
    19  abrt:x:173:173::/etc/abrt:/sbin/nologin
    21  nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
    23  ntp:x:38:38::/etc/ntp:/sbin/nologin
    25  postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    27  oprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologin
    29  test:x:500:500::/home/test:/bin/bash

2)d刪除

刪除第一行

[root@www ~]# cat -n a|sed '1d'
     2  Kernel \r on an \m
     3

刪除/etc/fstab文件中以#開頭的行

[root@www ~]# sed '/^#/d' /etc/fstab

/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
UUID=a237ccf4-03c2-44e2-aa7d-b793d08d8fef /boot                   ext4    defaults        1 2
/dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

取/etc/fstab最後一行

[root@www ~]# sed '$!d' /etc/fstab
proc                    /proc                   proc    defaults        0 0

3)s查找替換

替換/etc/passwd文件裏root爲大寫ROOT

[root@www ~]# sed 's/root/ROOT/' /etc/passwd         ##默認會替換行裏第1個匹配
ROOT:x:0:0:root:/root:/bin/bash
[root@www ~]# sed 's/root/ROOT/g' /etc/passwd        ##加g選項會全局替換
ROOT:x:0:0:ROOT:/ROOT:/bin/bash

輸出一個絕對路徑給sed命令,取出其目錄,其行爲類似於dirname;

echo "/var/log/messages/" | sed 's@[^/]\+/\?$@@'

6.用bash實現統計訪問日誌文件中狀態碼大於等於400的IP數量並排序

sed -n -r '/\<40[0-9]\>/p' /var/log/httpd/access_log|cut -d" " -f1 |sort|uniq -c

7.使用自制的yum源安裝ftp、openssh、curl、wget、tcpdump等軟件包

使用光盤鏡像中的包模擬創建本地倉庫

[root@www ~]# mount -r -t iso9660 /dev/cdrom /media/cdrom/
[root@www ~]# mkdir -p /yumrepo/Packages            ###創建本地packages目錄
###將需要的Packages拷貝到本地目錄
cp /media/cdrom/Packages/ftp-0.17-67.el7.x86_64.rpm /yumrepo/Packages/
cp /media/cdrom/Packages/openssh-* /yumrepo/Packages/
cp /media/cdrom/Packages/curl-7.29.0-35.el7.centos.x86_64.rpm /yumrepo/Packages/
cp /media/cdrom/Packages/wget-1.14-13.el7.x86_64.rpm /yumrepo/Packages/
cp /media/cdrom/Packages/tcpdump-4.5.1-3.el7.x86_64.rpm /yumrepo/Packages/
###使用createrepo命令創建本地yum源(如果沒有此命令可以使用yum -y install createrepo安裝)

[root@www yumrepo]# createrepo /yumrepo/
Spawning worker 0 with 15 pkgs
Workers Finished
Gathering worker results

Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

修改yum配置文件,將倉庫指向本地源

[root@www ~]# cd /etc/yum.repos.d/
[root@www yum.repos.d]# vim local.repo
    [yumrepo]
    name=yumrepo
    baseurl=file:///yumrepo
    enabled=1
    gpgcheck=0
[root@www yum.repos.d]# yum repolist         #######查看yum倉庫
已加載插件:fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: mirror.lzu.edu.cn
 * extras: mirror.lzu.edu.cn
 * updates: mirrors.cqu.edu.cn
倉庫標識                                 倉庫名稱                                   狀態
base                                     CentOS-6 - Base                         6,713
extras                                   CentOS-6 - Extras                       35
updates                                  CentOS-6 - Updates                      251
yumrepo                                  yumrepo                                 15
repolist: 7,014

安裝ftp、openssh、curl、wget、tcpdump等軟件包

yum install -y ftp openssh curl wget tcpdump
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章