第五週

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

[root@etcd03 backup]# crontab -l
0 */12 * * * tar -czvf /backup/etc-`date +%Y-%m-%d-%H-%M.tar.gz` /etc

二、rpm包管理功能總結以及實例應用演示。

rpm命令:rpm [OPTIONS] [PACKAGE_FILE]php

安裝:-i, --install
   -v:verbose,詳細信息
   -vv:更詳細的輸出
   -h:hash marks輸出進度條;每一個#表示2%的進度;
   --test:測試安裝,檢查並報告依賴關係及衝突消息等;
   --nodeps:忽略依賴關係;不建議;
   --replacepkgs:從新安裝
   --nosignature:不檢查包簽名信息,不檢查來源合法性;
   --nodigest:不檢查包完整性信息;
   --noscripts:不帶腳本信息前端

升級:-U, --update, 升級或安裝
   -F, --freshen 純粹升級,必須存在老版本,不支持安裝操做
   --oldpackage:降級;
   --force:強制升級;
卸載:-e, --erase
   --allmatches:卸載全部匹配指定名稱的程序包的各版本;
   --nodeps:忽略依賴關係
   --test:測試卸載,dry run模式
查詢:-q, --query
   -qi PACKAGE --info:查詢程序包相關的信息,版本號、大小、所屬的包組等
   -qf FILE   查詢指定的文件由哪一個程序包安裝生成
   -qc PACKAGE  --configfiles:查詢指定的程序包提供的配置文件
   -ql PACKAGE  --list:查詢程序安裝生成的全部文件列表
   -qd PACKAGE   --docfiles:查詢指定的程序包提供的文檔
   -qR PACKAGE   --requires: 查詢指定的程序包的依賴關係
   -qpi PACKAGE_FILE  查詢未安裝的程序包的相關信息
   -qpl PACKAGE_FILE   查詢未安裝的程序若安裝生成的全部文件列表
   -qpc PACKAGE_FILE  查詢未安裝的程序若安裝生成的全部文件列表
   -q --changelog: 查詢rpm包的changlognode

[root@zabbix-mysql ~]# rpm -ql mariadb
/etc/my.cnf.d/client.cnf
/usr/bin/aria_chk
/usr/bin/aria_dump_log
/usr/bin/aria_ftdump
/usr/bin/aria_pack
/usr/bin/aria_read_log
/usr/bin/msql2mysql
/usr/bin/my_print_defaults
/usr/bin/mysql
/usr/bin/mysql_find_rows
/usr/bin/mysql_waitpid
/usr/bin/mysqlaccess
/usr/bin/mysqladmin
/usr/bin/mysqlbinlog
/usr/bin/mysqlcheck
/usr/bin/mysqldump
/usr/bin/mysqlimport
/usr/bin/mysqlshow
/usr/bin/mysqlslap
/usr/share/doc/mariadb-5.5.56
/usr/share/doc/mariadb-5.5.56/COPYING
/usr/share/doc/mariadb-5.5.56/COPYING.Google
/usr/share/doc/mariadb-5.5.56/COPYING.Percona
/usr/share/doc/mariadb-5.5.56/README
/usr/share/doc/mariadb-5.5.56/README.mysql-docs
/usr/share/doc/mariadb-5.5.56/README.mysql-license
/usr/share/man/man1/aria_chk.1.gz
/usr/share/man/man1/aria_dump_log.1.gz
/usr/share/man/man1/aria_ftdump.1.gz
/usr/share/man/man1/aria_pack.1.gz
/usr/share/man/man1/aria_read_log.1.gz
/usr/share/man/man1/my_print_defaults.1.gz
/usr/share/man/man1/mysql.1.gz
/usr/share/man/man1/mysql_find_rows.1.gz
/usr/share/man/man1/mysql_waitpid.1.gz
/usr/share/man/man1/mysqlaccess.1.gz
/usr/share/man/man1/mysqladmin.1.gz
/usr/share/man/man1/mysqldump.1.gz
/usr/share/man/man1/mysqlshow.1.gz
/usr/share/man/man1/mysqlslap.1.gz

[root@zabbix-mysql ~]# rpm -qi mariadb
Name        : mariadb
Epoch       : 1
Version     : 5.5.56
Release     : 2.el7
Architecture: x86_64
Install Date: Wed 21 Nov 2018 08:25:42 PM CST
Group       : Applications/Databases
Size        : 50858223
License     : GPLv2 with exceptions and LGPLv2 and BSD
Signature   : RSA/SHA256, Fri 11 Aug 2017 02:17:53 AM CST, Key ID 24c6a8a7f4a80eb5
Source RPM  : mariadb-5.5.56-2.el7.src.rpm
Build Date  : Sat 05 Aug 2017 05:01:21 AM CST
Build Host  : c1bm.rdu2.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://mariadb.org
Summary     : A community developed branch of MySQL
Description :
MariaDB is a community developed branch of MySQL.
MariaDB is a multi-user, multi-threaded SQL database server.
It is a client/server implementation consisting of a server daemon (mysqld)
and many different client programs and libraries. The base package
contains the standard MariaDB/MySQL client programs and generic MySQL files.

三、yum的配置和使用總結以及yum私有倉庫的建立。

YUM: Yellowdog Update Modifier,完成RHEL系列前端自動解決依賴關係安裝工具,依賴rpm存在。mysql

YUM配置文件路徑

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

/etc/yum.conf 主配置定義

[root@zabbix-mysql ~]# cat /etc/yum.conf
[main]      # 通用主配置段
cachedir=/var/cache/yum/x86_64/$releasever      # 緩存文件文件路徑
keepcache=1     # 緩存到本地的文件是否保存 
debuglevel=2    # 調試級別   
logfile=/var/log/yum.log    # 安裝的日誌文件
exactarch=1     # 精確嚴格的平臺 release 匹配
obsoletes=1
gpgcheck=1      # 檢測來源合法性和完整性
plugins=1       # 支持插件機制
installonly_limit=5     同時安裝多少程序包
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release     #當前發行版本號從哪兒獲取

[root@zabbix-mysql ~]# ll /var/cache/yum/x86_64/7
total 28
drwxr-xr-x 4 root root 4096 May 21 23:09 aliyun
drwxr-xr-x 4 root root 4096 Nov 21 18:50 base
drwxr-xr-x 4 root root 4096 Apr 16  2018 centos7-yum
drwxr-xr-x 4 root root 4096 Nov 21 18:50 extras
drwxr-xr-x 4 root root  132 Nov 20  2018 mysql57-community
drwxr-xr-x 4 root root  132 Nov 20  2018 mysql-connectors-community
drwxr-xr-x 4 root root  132 Nov 20  2018 mysql-tools-community
-rw-r--r-- 1 root root  183 May 21 23:09 timedhosts
-rw-r--r-- 1 root root    0 May 21 23:09 timedhosts.txt
drwxr-xr-x 4 root root 4096 Nov 21 18:50 updates
drwxr-xr-x 4 root root 4096 Nov 22 18:16 zabbix
drwxr-xr-x 4 root root   73 Nov 22 18:16 zabbix-non-supported

[root@zabbix-mysql ~]# tail /var/log/yum.log
Feb 14 17:33:08 Installed: apr-util-1.5.2-6.el7.x86_64
Feb 14 17:33:08 Installed: httpd-tools-2.4.6-88.el7.centos.x86_64
Mar 28 09:52:05 Installed: 2:nmap-ncat-6.40-16.el7.x86_64
Apr 08 10:55:19 Installed: libcgroup-0.41-20.el7.x86_64
Apr 08 10:55:19 Installed: libcgroup-tools-0.41-20.el7.x86_64
Apr 08 16:00:21 Updated: 14:libpcap-1.5.3-11.el7.x86_64
Apr 08 16:00:21 Installed: 14:tcpdump-4.9.2-3.el7.x86_64
Apr 28 21:52:15 Installed: iotop-0.6-4.el7.noarch
May 08 18:03:45 Installed: sysstat-10.1.5-17.el7.x86_64
May 21 23:09:34 Installed: 2:nmap-6.40-16.el7.x86_64

**yum倉庫(*.repo)配置文件定義**

[root@zabbix-mysql yum.repos.d]# cat aliyun.repo
[aliyun]        # 倉庫ID
name=aliyun     
baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64    # yum 倉庫指定的訪問路徑(阿里源)
enabled=1   # 啓用此倉庫
gpgcheck=0  # 檢查完整性和來源合法性

YUM 經常使用命令

  • yum repolist 顯示倉庫列表
  • yum list 顯示程序包
  • yum search 模糊查找程序包
  • yum install 安裝程序包
  • yum remove 卸載程序包
  • yum update [package1] [package2] [...] 升級操做
  • yum downgrade package1 [package2] [...] 降級操做
  • yum info [package1] [package2] [...] 查看程序包簡要信息
  • yum provides | whatprovides feature1 [feature2] [...] 查看指定的特性(能夠是某文件)是由哪一個程序包所提供
  • yum clean <packages | metadata | expire-cache | rpmdb | plugins | all > 清理本地緩存
// 查看yum倉庫
[root@zabbix-mysql yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id                                                repo name                                             status
!aliyun                                                aliyun                                                10,019
repolist: 10,019

// 模糊查詢安裝包
[root@zabbix-mysql yum.repos.d]# yum search ftp
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
================================================ N/S matched: ftp =================================================
ftp.x86_64 : The standard UNIX FTP (File Transfer Protocol) client
lftp-scripts.noarch : Scripts for lftp
syslinux-tftpboot.noarch : SYSLINUX modules in /var/lib/tftpboot, available for network booting
tftp.x86_64 : The client for the Trivial File Transfer Protocol (TFTP)
tftp-server.x86_64 : The server for the Trivial File Transfer Protocol (TFTP)
vsftpd.x86_64 : Very Secure Ftp Daemon
vsftpd-sysvinit.x86_64 : SysV initscript for vsftpd daemon
curl.x86_64 : A utility for getting files from remote servers (FTP, HTTP, and others)
lftp.i686 : A sophisticated file transfer program
lftp.x86_64 : A sophisticated file transfer program
wget.x86_64 : A utility for retrieving files using the HTTP or FTP protocols

  Name and summary matches only, use "search all" for everything.

// 查詢已安裝與未安裝的匹配我包
[root@zabbix-mysql yum.repos.d]# yum list *ftp*
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Installed Packages
ftp.x86_64                                               0.17-67.el7                                   @centos7-yum
Available Packages
lftp.i686                                                4.4.8-11.el7                                  aliyun
lftp.x86_64                                              4.4.8-11.el7                                  aliyun
lftp-scripts.noarch                                      4.4.8-11.el7                                  aliyun
syslinux-tftpboot.noarch                                 4.05-15.el7                                   aliyun
tftp.x86_64                                              5.2-22.el7                                    aliyun
tftp-server.x86_64                                       5.2-22.el7                                    aliyun
vsftpd.x86_64                                            3.0.2-25.el7                                  aliyun
vsftpd-sysvinit.x86_64                                   3.0.2-25.el7                                  aliyun

建立私有 yum 倉庫

  • 第一種:使用發行光盤做爲yum倉庫linux

    • 掛載光盤或ISO文件到某一掛載點
    mkdir /mnt/cdrom        
    mount /dev/sr0 /mnt/cdrom
    • 備份原來的yum源:
    mkdir /etc/yum.repos.d/bak       
    mv /etc/yum.repos.d/* /etc/yum.repos.d/bak/
    • 增長一個光盤的yum源
    #vi /etc/yum.repos.d/mybase.repo        
    [mybase]        
    name=LocalYum        
    baseurl=file:///mnt/cdrom        
    gpgcheck=0        
    enabled=1
  • 第二種,使用本地或網絡rpm包手動建立nginx

    • 第一步:安裝createrepo
    • 第二步:肯定repository輸出方式:有兩種,本地輸出與網絡輸出。
      本地輸出:提供一個放置rpm包的本地路徑
      網絡輸出 :提供一個文件服務器,配置好ftp服務或http服務(注意防火牆要開放對應端口)

    ​ ftp服務:正則表達式

    ​ 安裝程序包:vsftpdsql

    ​ 文件存放路徑:/var/ftp/pubshell

    啓動服務:service vsftpd start
    
      http服務:

    ​ 安裝程序包:httpdexpress

    ​ 文件存放路徑:/var/ftp/pub

    ​ 啓動服務:service httpd start

    • 第三步:把rpm 程序包文件放入準備好的目錄中,能夠從光盤複製rpm 包過去。
    • 第四步:對此目錄運行 createrepo 命令便可,到此就完成了本地倉庫的建立。
    • 測試所建立的yum 倉庫是否可用
  • 在/etc/yum.repos.d/ 目錄下建立一個以repo結尾的文件,示例以下:

[root@localhost yum.repos.d]# yum info createrepo   //查看已安裝的createrepo信息
[root@localhost yum.repos.d]# mkdir -p /yumtest/Packages    
[root@localhost yum.repos.d]# cp /media/cdrom/Packages/* /yumtest/Packages/     //下載所須要的全部文件到本地某個路徑
[root@localhost yum.repos.d]# createrepo /yumtest/   //建立關聯關係,完成後生成repodata
root@localhost yum.repos.d]# cat Local.repo    //配置yum源文件
[Local]
name=Local Yum
baseurl=file:///yumtest/
#baseurl=http://<repo_host>/Packages     //當爲http網絡輸出時,用此配置。<repo_host>倉庫主機IP,Packages爲http發佈目錄下的軟件包目錄
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
enabled=1

[root@localhost yum.repos.d]# yum repolist       //查看配置好的yum倉庫

四、寫一個腳本實現列出如下菜單給用戶:

(1)disk:show disk info信息

(2)mem: show memory info信息

(3)cpu: show cpu info信息

(*)quit

[root@etcd03 tmp]# cat test1.sh
#!/bin/bash
read -p "Your choice:" choice
case $choice in
disk)
        fdisk -l;;
mem)
        cat /proc/meminfo;;
cpu)
        lscpu;;
*)
        exit;;
esac

五、sed用法總結並結合實例演示

  • 經常使用選項
-n:不輸出模式空間中的內容至屏幕;
-e script, --expression=script:多點編輯;
-f  /PATH/TO/SED_SCRIPT_FILE   : 每行一個編輯命令;
-r, --regexp-extended:支持使用擴展正則表達式;
-i[SUFFIX], --in-place[=SUFFIX]:直接編輯原文件 ;
  • 地址定界
1)空地址:什麼都不填寫時,表示對全文進行處理
2)單地址
     #:表示對指定的行
   /pattern/:被此模式所匹配到的每一行,其中模式兩邊的/不能省略
  • 地址範圍(#表示任意數字)
#,#:從某行到某行,第二個#大於第一個#
#,+#:從某行開始加多商行
#,/pattern1/:從某行開始到第一次配到模式的行
/pattern1/,/pattern2/:從第一次匹配到的模式1到第二次匹配到哦的模式2

步進:~,#~#   從第幾行
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:顯示替換成功的行;
  • 字符串替換匹配模式
#替換/etc/passwd中的:分割符爲- UID:字符
cat /etc/passwd | cut -d : -f1,3 | sed 's/:/ - UID: /'
root - UID: 0
bin - UID: 1
  • 直接修改後的數據替換原始文件
sed -i 's/text/replace/g' file

#/3g標記替換第3次出現後的匹配:
echo "thisthisthisthisthis" | sed 's/this/THIS/3g'
thisthisTHISTHISTHIS
  • 已匹配字符串標記 &
#經過正則表達式\w\+匹配每個單詞,而後用[&]替換它。&對應於以前所匹配到的單詞。
echo "this is an example" | sed 's/\w\+/[&]/g'
[this] [is] [an] [example]
  • 子串匹配標記 (\1)
echo "sever EIGHT" | sed 's/\([a-z]\+\) \([A-Z]\+\)/\2 \1/g'
EIGHT sever

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

#!/bin/bash
nginx_log='/usr/local/nginx/logs/host.access.log'
code_400_count=$(awk '($9 >= 400) {print $1}' ${nginx_log} | sort -rn | uniq -c)
echo $code_400_count

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

**關閉其它非自制yum源,設置*.repo文件中相應的enabled=0**

yum install -y ftp --enablerepo=Local Yum
yum install -y openssh --enablerepo=Local Yum
yum install -y curl --enablerepo=Local Yum
yum install -y wget --enablerepo=Local Yum
yum install -y tcpdump --enablerepo=Local Yum
相關文章
相關標籤/搜索