你來抓我啊

網絡基礎:

電腦參數:
cpu:品牌:inter 、ADM.型號:酷睿core i3 i5 i7,奔騰pentium DEG.
內存:類型:DDR3DDR3L(低壓)、DDR4.
硬盤:500G、1TB.轉速:5400~7200/.接口:SATA(電腦)、SAS(服務器).
BISO:系統啓動時,BISO程序對計算機硬件檢查,是一個只讀芯片,寫入的內容保存在cmos中,由一個鈕釦電池供電.
	
服務器參數:
cpu型號:inter至強xeon e3、e5、e7.E5-2603)
品牌:dell R6300、聯想x365等,服務器性能評價指標“RASMU.
cpu:XEon(至強)E5-2603.
硬盤:scsi接口,現在SAS接口,10k~15k轉/分
內存:Ecc校驗技術、
虛擬機軟件:VMware Workstation、VMware vSphere(ESXI)KVM、docker()
虛擬機運行模式:寄居架構和原生架構

OSI七層模型:

①應用層:網絡服務與用戶的一個接口,實現用戶的各種應用或功能.
②表示層:數據的表示、安全、壓縮.
③會話層:建立、管理、終止會話.
④傳輸層:實現可靠或不可靠的傳輸.
⑤網絡層:添加ip地址,實現不同網絡的路徑選擇.
⑥數據鏈路層:添加物理地址,實現鏈路通信.
⑦物理層:建立、維護、斷開物理連接.

還有兩種說法:

TCP/IP五層:應用層、傳輸層、網絡層、數據鏈路層、物理層.
TCP/IP四層:應用層、傳輸層、網絡層、網絡接口層.

各層的協議:

應用層:
FTP(文件傳輸協議) 20 21/TCPSSH 22/TCPTELNET 23/TCPSMTP(簡單郵件傳輸協議) 25/TCPDNS(域名解析) 53/TCP UDPDHCP 67 68/UDPTFTP(簡單文件傳輸協議) 69/UDPHTTP(超文本傳輸協議) 80/TCPHTTPS443/TCPPOP3 110/TCPIMAP 143/TCPNTP(網絡時間協議) 123/UDPSNMP(簡單網絡管理協議) 161/UDPRPC(遠程過程控制協議)111/UDPMYSQL 3306/TCPORACLE(數據庫) 1521/TCP,
squid 3128,fpm 9000,zabbix 10051,zmoeba 8066改爲3306.
傳輸層:
TCP(面向連接的可靠的傳輸層協議)大數據、大報文;UDP(無連接的不可靠的傳輸層協議)小報文
網絡層:
ICMP(診斷網絡故障ping、traceroute)IPARP(已知ip獲取mack地址)
雙絞線顏色順序(超5類線):
T568A:白綠、綠、白橙、藍、白藍、橙、白棕、棕
T568B:白橙、橙、白綠、藍、白藍、綠、白棕、棕
接口規範相同的用交叉線(除交換機),不同的用直通線(交換機)
WAN:    廣域網,一般由電信部門管理
LAN:    局域網,企業內部
網絡拓撲:(分層,接入層,匯聚層,核心層)
星型:    中心節點壓力大,易於實現,易於網絡排查
網型:    可靠性高,成本也高

交換機原理:交換機根據數據幀的原MACT地址生成MACT地址表,根據數據幀的目標MACT地址表進行發,目標MACT未知
廣播,目標MACT已知單播.端口號是應用層程序的地址,被封裝在傳輸層報文的頭部.

 IP地址分類:A類:1-126B類:128-191C類:192~223
 私有地址三類:10.0.0.0-10.255.255.255172.16.0.0-172.31.0.0192.168.0.0~192.168.255.255
LINUX操作系統 遵循GPL協議,可運行在pc上
Redhat:RHEL(企業版),收費、提供服務的.
CentOS是Red Hat重編譯版,是免費的,Debian系列,Ubuntu系列,SUSE系列
UNIX操作系統:IBM-AIXHP-UXSUN-Solaris(也有pc版本)、FreeBSD(學術派)
/dev/sda1,邏輯分區第一個爲sda5

分區方式fdisk和parted,fdisk單個分區小於2T
硬盤接口:
SATSASISAS接口規範都稱爲sd

文件系統:

ext4,xfs管理普通分區;swap交換分區(windows中的虛擬內存)

目錄:/root(管理員宿主目錄)  /bin(普通用戶可以使用的命令目錄)  /boot(內核以及啓動文件)  /dev(設備文目錄) 
	 /etc(配置文件目錄)     /home(普通用戶默認的宿主目錄)    /var(可變的文件目錄,如日誌、郵件等)  
	 /lib(庫文件)          /usr(用戶安裝軟件的目錄)        /media(掛載移動設備的文件)
簡單常用命令:
退出當前操作系統:		exit
查看內核版本:			uname -r (2.10),  linux7.0以上是3.6
查看系統發行版本:		lsb_release -a,  linux7.0以上版本:
查看系統版本:			cat /etc/centos-release
查看cpu型號信息:		cat /proc/cpuinfo
查看cpu(系統)負載信息	uptime,top
查看cpu的使用情況:	mpstat
查看內存:			cat /proc/meminfo,free -m
查看主機名:			hostname
查看ip地址:			ifconfig eth0
查看卡類信息:			lspci
查看磁盤使用情況:		df -hT,查看磁盤文件數使用信息:df -i,節點使用
查看進程:		   	 ps ax或ps -ef 關機:		shutdown -h now或power off或init 0,  shutdown -h +10,十分鐘後關機  重啓:		shutdown -r now或reboot或init 6.
查看文件的具體儲存信息和時間等信息:	 stat 文件名

shell命令:

某些命令忘記使用格式:例如 ls --help,man file 獲得幫助
ls -a			(顯示所有文件)
ls -ld			(顯示文件屬性)
ls -lh			(以更易讀的方式顯示)
ls -r			(遞歸查看)
du -sh 			(統計文件大小)  (-sh更易讀的方式顯示)
cp -r			(複製,連同目錄)
cp -p			(複製,連同文件屬性)
rm -rf			(遞歸刪除)
userdel -r u1	 刪除u1時連同目錄一塊刪除
rename  .txt  .log  *.txt                       //不使用 mv ,把 a.txt 改名爲 a.log

數據遷移:數據佔用空間太多,將數據遷移到新的磁盤
①對新磁盤分區、創建文件系統,並掛載到新掛載點,如/dir1
②將舊目錄中的數據複製到新的掛載點目錄,如cp -p /home /dir1
③將舊目錄中的數據刪除,如rm -rf /home
④將磁盤從新掛載點解除 ,並掛載到舊目錄
which 查看PATH變量中特定位置下的命令文件,查找命令,PATH用於指定命令搜索路徑.
find以各種形式查找文件,看test.conf文件
find /etc -name test.conf -type f | mor
find -atime (根據訪問時間查找) +3(三天前)
find -ctime (根據創建時間查找) -3(三天之內創建的)
find -mtime	(根據更改時間查找) +n -n
查看文件內容:cat,more,less,head,tail,nl
檢索文件內容:wc -l,grep -v(翻轉查找) ^$,除去空格顯示其他
處理文件或文件夾:
打包:tar  zcf  aaaa.tar.gz  aaaa
解包:tar  zxf  aaaa.tar.gz
rm -rf `find / -name httpd`OK
查看軟件版本:		rpm -qi
卸載軟件:		rpm -e
查看軟件是否在:	rpm -qa
查看軟件安在哪裏:	rpm -ql
安裝rpm包的軟件:	rpm -ivh xxx.rpm  (--force  強制安裝)
更新一個軟件:		rpm -Uvh xxx.rpm
--nodeps 如果該RPM包的安裝依賴其它包,即使其它包沒裝,也強迫安裝

賬號與權限管理:

添加用戶:useradd, 刪除 userdel,修改usermod.  passwd 修改口令
添加組: groupadd, 刪除 groupdel, 作爲用戶基本組的組無法刪除
gpasswd -a 用戶名 組名,已有的用戶放到組中
useradd u1 -g group1: u1加到grou1中,作爲基本組,-G,作爲附加組
id u1:	查看用戶u1屬於哪組
users: 	查看當前登陸的用戶哪些、(who,w)都可以
groups u1:查看用戶u1屬於哪個組
last: 查看最近登陸的用戶
lastb:查看最近登陸失敗的用戶
/etc/passwd: 保存用戶名稱、宿主目錄、登陸shell等基本信息
/etc/shadow: 保存用戶密碼、賬號有效期等信息
/etc/group:存放組相關的文件
添加賬戶(使用之前用戶的密碼):
useradd -p '$6$lq/7KOsV$packR6fzEcDo2.cOpRSKtKgsZZaSF5.DCwCiq5T46pU1P.LSo.UhomjEgCjRRpmeVYi5LMWhTW7xx7ESWyEsF/' hezhifang
passwd命令,任何用戶使用時都可以臨時切換到root來使用此命令
passwd -d:清空密碼
passwd -l:鎖定用戶;passwd -u:解鎖用戶
passwd -S:查看用戶狀態(是否被鎖定)
~/.bash_profile:	指定用戶登錄時執行的文件.
/etc/profile:		全局的對任何用戶登錄時執行的文件 
/etc/rc.local:		用於定義用戶自定義的隨機啓動時執行的命令
/etc/fstab:			用於記錄開機後自動掛載的文件系統記錄(固化掛載)
用戶權限管理:
基本權限(rwx)設置,針對於屬主,屬組,chmod,chown
附加權限,粘滯位,o+-t(任何用戶可以寫入,不可以改別人的);
suid u+-s(用戶執行次命令時,臨時切換成這個命令的權限);
sgid g+-s
ls -alR / | grep ^-..s  查找所有執行權限爲s的命令
權限(文件ACL),設置擴展權限setfacl,查看擴展權限getfacl,不針對於屬主屬組,對任意用戶設置
設置權限:
chmod -R 1777 (1代表粘滯位附加權限,777代表全部)
chmod  u、g、o、a +- (rwx) 文件名, u() g() o(其他) a(所有用戶)
也可=(rwx)忽略原權限,直接改成現在的.
  
設置文件目錄和歸屬chown -R 主:組 文件名
chattr +i /etc/resolv.conf                  //使得該文件成爲只讀
chattr -i /etc/resolv.conf                  //解除只讀權限

磁盤和文件管理系統(兩個工具)

fdisk(管理<2T的文件),分區表在MBR中,最大支持4個主分區;
parted(管理>2T的文件),分區表在GPT中,最大支持128個主分區;
創建文件系統(格式化)mkfs -t ext4,mkfs -t xfs(速度快些)
邏輯磁盤管理,lvm邏輯卷管理,可以動態調整容量,沒有冗餘性(可靠性)
Raid管理,有冗餘性,可以提升性能.
掛載光盤鏡像:mount -o loop ISO鏡像文件 掛載點目錄(/dir1),解除umount
LVM機制:PV(物理卷,,VG(卷組)LV(邏輯卷)
磁盤配額:限制用戶在文件系統上空間或文件數的大小限制

進程和計劃任務

查看進程:ps -ef, netstat -antp, netstat -lntp(去重查詢)
查看所有:ps ax,(a:查看所有進程,u:列出執行用戶,f:列出父子關係) 或 ps -ef
顯示動態排名:top(包括系統負載,cpu空閒率,IO數據輸入輸出等待)
pgrep -l 進程名
ps tree (顯示進程樹)
結束進程:ctrl C,kill 進程號,killall 進程名字,pkill 進程名字.都可以加-9,強制結束
計劃任務:
一次性的at  週期性地crontab,編輯計劃任務 -e,查看-l,刪除-r
0 17 * * 1-5		 週一到週五每天17:00 
30 8 * * 1,3,5	     每週一、三、五的8300 8-18/2 * * *		 8點到18點之間每2小時
0 5 */3 * *3天的5
日誌:
計劃任務中打包備份時加日期,tar zcvf etc.`date +%Y%m%d-%H%M%S`.tar.gz  /etc
系統故障分析排查:(查找日誌)日誌:記錄系統、程序中發生的事件
內核和系統日誌,由一個服務rsyslog服務統一管理,配置文件/etc/rsyslog.conf
主日誌文件:/var/log/messages. 
apachede配置文件:httpd.conf      訪問日誌文件:access.log和error_log
日誌切割:
方法一,mv移走日誌,重載服務
方法二,不允許重載服務,寫腳本,內容:複製日誌並統計日誌行數;用sed -i -c對原文件刪除相應行數
腳本如下
date=`/bin/date +%Y%m%d`
a=`/bin/cat /tmp/access_log | wc -l`
/bin/cp -p /var/log/httpd/access_log /tmp.${date}
/bin/sed -i -c “1,${a}d” /var/log/httpd/access_log   做成計劃任務
最近登陸用戶事件:/var/log/lastlog 
用戶登錄註銷及系統開關機事件:/var/log/wtmp
當前登錄的每個用戶的詳細信息:/var/run/utmp
與用戶驗證相關的安全性事件:/var/log/secure
日誌消息級別:七個級別.
0EMERG(緊急) 1ALERT(警告) 2CRIT(嚴重)3ERR(錯誤)4WARNING(提醒)
5NOTICE(注意)6INFO(信息)7DEBUG(調試)
系統啓動:①開機自檢(BISO)→硬盤,引導記錄②MBR主引導記錄(③分區表,結束)→④內核→⑤init→⑥各種服務
Init有七個運行級別0-6;
0:關機狀態,1:單用戶模式,2:不支持網絡的多用戶字符模式,3:完全多用戶字符模式,4:保留未用的,5:圖形模式.
網絡基礎設置:
查看ip:	ifconfig eth0
		ip a
查看網關:route -n
查看DNS:cat  /etc/resolv.conf
測試網絡通信:
	ping -c 5 目標主機ip,   traceroute 目標主機ip  (追蹤錯誤點)
	nslookup 解析DNS是否可以,或者host
查看網絡連接狀態:
		netstat (-antp.......) | grep EST | wc -l,統計運行的進程數
查看正在監聽的進程:netstat -nltu
設置ip:ifconfig eth0 192.168.1.10/24
設網關:
	route add default gw 下一跳,route  add  -net  1.0/24  gw 下一跳,
	route add -host  ip,  刪除時route del +... 除了gw之後的.
FTP服務
控制連接21/tcp發送FTP命令和數據連接20/tcp,上傳下載數據
數據連接分爲主動和被動:
	主動:服務端的20號端口主動向客戶端發起連接。
	被動:服務端指定範圍內某個端口等待客戶端發起請求.
常見的FTP服務器程序:vsftpd,工作中常用:SSHSCPSFTP、rsycn.
DNS服務:
正向解析(根據主機名查找IP地址)和反向解析.
服務器給客戶端提供解析的時候,一種是遞歸,一種是迭代.
遞歸:當無解析記錄時,服務器與其他服務器進行交互,將最終結果響應給客戶端,一般在企業內網中使用.
迭代:本服務器不能完成解析時會返回下一個服務器ip,由客戶端再向其他服務器發出查詢,公網中服務器一般使用迭代
dns 53/udp、tcp,tcp主要用於主從複製,udp用於小的數據包查詢
LAMP環境:
httpd:2.2.32版本,mysql:5.6版本,php:5.6版本.
Httpd:使用prefork模塊,幾個設置
錯誤代碼:
	    403(禁止)服務器拒絕請求, 404-請求的網頁不存在, 503-服務器超時, 
	    502(錯誤網關)服務器作爲網關或代理,從上游服務器收到無效響應。
httpd配置文件:httpd.conf,mysql配置文件:my.cnf,php配置文件:php.ini
安裝apache時,解包、配置、編譯、安裝、優化執行路徑、添加系統服務
參數:--prefix:指定安裝路徑、--enable-so:支持動態模塊、--enable-rewrite:支持url重寫功能、
--enable-charset-lite:支持各種字符集、--enable-cgi:支持腳本功能
	Httpd的全局配置參數,Timeout網絡連接超時設爲60s;http是否開啓了保持連接,每次連接最多請求
	連接文件數爲100,保持連接狀態時的超時時間5s.
Mysql:還有oracle數據庫,IBM-DB2,微軟-sqlserver,mariaDB數據庫
mysql:
安裝mysql後,設置數據庫用戶密碼,mysqladmin -u root -p password 123456  
查看所有數據庫:	    show databases;
查看數據庫中所有表:	use 表名; show tables;
顯示數據庫表結構:   	describe 數據庫名.表名;
查看數據庫表結構:		show create table 表名;
***
創建新的數據庫:   	create database 數據庫名;
創建新的數據表(創建標頭):
create table users(user_name char(16) not null,user_passwd char(48) default123456,primary key (user_name));
***
刪除數據庫:          drop table 數據庫名.表名;
刪除數據庫:          drop database 數據庫名;
***
向表中插入新的記錄:   insert into 表名(字段1,字段2,..) values (字段1的值,....);
例如:insert into 表名(user_name,user_password) values(‘lisi’,123456);
從表中查找記錄:
	查看全部記錄:  select  *  from 表名;
	查看符合條件的:select user_name,user_password from 表名 where 條件;
	例如:select user_name,user_password from 表名 where user_name=’lisi’;
***
修改表中的記錄(將lisi的密碼改爲123):
update 庫名.表名 set user_password=password(123) where user_name=’lisi’;
將root的密碼改爲655521:
update mysql.user set password=password(655521) where user=’root’;
flush privileges; 更新數據庫
刪除表中指定的記錄:刪除zhangsan
delete from 庫名.表名 where user_name=’zhangsan’;
***
設置用戶權限(用戶不存在時,新建用戶):
grant select(all) on 庫名.*  to  ‘用戶名’@’來源地址’ identified by ‘密碼’;
查看用戶權限:show grants for ‘用戶名’@’來源地址’;
撤銷用戶權限:revoke all on 庫名.* from ‘用戶名’@’表名’;
***
備份數據庫與恢復:xtrabackup備份工具,數據庫超過50G,備份效率高;
①、直接備份目錄:tar zcfp /usr/local/mysql/data 包名 /usr/local/mysql/data/
	使用時解包到相應位置;
②、使用備份工具mysqldump
***
mysqldump -u 用戶名 -p 庫名 表名 > /opt/備份的名
mysqldump -u root -p auth users > /opt/mysql-user.sql          		備份表
mysqldump -u root -p --databases db1 db2 > /opt/mysql-auth.sql      備份庫
mysqldump -u root -p --all-databases > /opt/all-data.sql            備份所有
恢復操作:  mysql -uroot -p 庫名 < /路徑/文件名
授權遠程登錄:grant all privileges on *.* to root@'172.16.6.249' identified by '123';
	FLUSH PRIVILEGES;												刷新權限表
客戶端登錄時:mysql -uroot -p123 -hmysql客戶端ip
my.cnf中加入	skip-grant-tables								重啓數據庫,不用再輸-h127.0.0.1
php修改幾個配置:
	default_charset = "utf-8”   設定字符集爲utf8
	file_uploads = On           允許上傳文件
	upload_max_filesize = 2M    允許上傳文件的大小
	max_file_uploads = 20       允許上傳文件數量

Shell腳本:

編寫腳本時流程控制分三種,順序結構、分支結構、循環結構.
正則表達式,grep、sed、awk的使用.
腳本執行時:
	①加上執行權限  執行 . /腳本路徑  .代表當前路徑.
	②bash /腳本文件路徑
	③. /腳本路徑,.代表當前shell,②和③可不加執行權限.
腳本第一行:#!/bin/bash(/bin/bash來解釋下面的語句)
變量的作用:爲了增加系統管理和腳本執行的靈活性
預定義變量:$0:腳本名,$1~$9:通過執行腳本時未知參數的位置給變量賦值,稱爲位置變量
.$#:參數個數,$*:參數列表,$?:上條命令結束返回值.
Linux中變量#,@,0,1,2,*,$$,$?的含義:
{
 $# 是傳給腳本的參數個數
 $0 是腳本本身的名字
 $1 是傳遞給該shell腳本的第一個參數
 $2 是傳遞給該shell腳本的第二個參數
 $@ 是傳給腳本的所有參數的列表
 $* 是以一個單字符串顯示所有向腳本傳遞的參數,與位置變量不同,參數可超過9個
 $$ 是腳本運行的當前進程ID號
 $? 是顯示最後命令的退出狀態,0表示沒有錯誤,其他表示有錯誤
}
定義變量時不以數字開頭,常用_開頭
賦值時使用符號:
雙引號“”:通過$引用其他變量
單引號’’:禁止引用其他變量
反撇號``:命令替換,提取命令執行後的輸出結果
$():    命令嵌套時替換反撇號
${}:    引用變量,用於區分變量名和緊跟其後的字符
運算:expr 變量1 運算符 變量2+  -  \*()  /  %(取餘)
條件測試操作:
文件測試:[ 操作符 ],-e:是否存在,d:是否爲目錄,-f:是否爲文件,-r(),-w(),-x(執行)
整數值比較:-eq、-ne、-gt(大於)-ge(大於等於)-lt(小於)-le(小於等於)
邏輯比較:[ 字符串 操作符 字符串 ]  字符串:=,  !=
for循環和while循環比較:
for循環可以根據一個值列表控制循環次數.
while通過控制變量控制循環次數,也可以通過交互式賦值控制循環.
wc -l 只顯示行數
wc -w 只顯示單詞數
wc -c 只顯示字節數

正則表達式:

1.代表任意單個字符, 如:/l..e/與包含一個l,後跟兩個字符,然後跟一個e的行相匹配
2^代表行的開始. ^love 如:與所有love開頭的行匹配
3、$代表行的結束.love$ 如:與所有love結尾的行匹配
4[]匹配括號中的字符之一
   [0-9a-zA-Z]匹配任意英文字母或數字之一
5*表示前導字符出現0次或任意多次,'a*d'匹配所有0個或多個a後緊跟d的行
6、\?用於修飾前導字符,表示前導字符出現01, a\? 匹配01個a
7、\+ 用於修飾前導字符,表示前導字符出現1或多次, a\+ 匹配1或多個a
8、\{n,m\}  #用於修飾前導字符,表示前導字符出現n至m次(n和m都是整數,且n<m)a\{3,5\} 匹配35個連續的a,\跟在}前面轉義,
   \{n\}  連續的n個前導字符,  \{n,\}  連續的至少n個前導字符
9、\  用於轉義緊跟其後的單個特殊字符,使該特殊字符成爲普通字符
	如:^\.[0-9][0-9] 對以一個句點和兩個數字開始
10、|表示或 , 如:a|b|c 匹配a或b或c
***	
grep命令用法(對行過濾):
grep -A 1 panda file (從file中搜尋有panda樣式的行,並顯示該行的後1)
grep -B 1 panda file (從file中搜尋有panda樣式的行,並顯示該行的前1)
grep -C 2 panda file (從file中搜尋有panda樣式的行,並顯示該行的前後各2)
grep -c, 不顯示符合樣式的行,只顯示符合的總行數
grep -i,  --ignore-case   		忽略大小寫差別
grep -n,  --line-number   		在匹配的行前面打印行號
grep -v,  --revert-match  		反檢索,只顯示不匹配的行
grep -E "douyu|panda|tiger",	檢索包含douyu、panda、tiger的行
#### sed基本命令: -i(改變原文件)
-s替換:
sed 's/day/night/' file,將文件中的每一行第一次出現的 day替換成night,
sed 's/day/night/g' file,將文件中的每一行出現的所有的day替換成night, 
sed '1,3s/day/night/' file,將文件中的第一三行第一次出現的 day替換成night
-d 刪除:sed ‘/how/d’ file,將文件中包含how的所有行刪除,
-a 增加行(在指定行後):sed ‘2a hello’ file,在第二行後增加一行hello,多行用\隔開
-i 增加行(在指定行前):sed ‘2i hello’ file,在第二行前增加一行hello,多行用\隔開
-c 取代:sed ‘2,5c welcome’ file,用welcome來取代文件中第25,
-p 打印(輸出):sew
sed '/north/p' datafile 默認輸出所有行,找到north的行重複打印
sed -n '/north/p' datafile 禁止默認輸出,只打印找到north的行
sed -n '5,7p' /etc/passwd僅列出/etc/passwd文件中的第57行內容
sed -n '1p;3p;5p;7p;10p;15p' /etc/passwd顯示/etc/passwd的1,3,5,7,10,15行
#取出"***"字符串裏 error:: 之間的子字符串,並消除空格
echo "src/network/misc/nv_net_udp.c:17: fatal error: nv_net_tools.h: No such file or directory" | sed -r 's/.*error\:(.*)\:.*/\1/' | sed s/[[:space:]]//g

awk命令:

cut -d: -f2 == awk -F: '{print $2}'
awk -F : '{print $1,$7}' /etc/password,顯示/etc/passwd文件中的用戶名和登錄shell
  ...'{print $1 "," $7}' /etc/pqssaord, 顯示用戶名和shell,之間用逗號隔開
awk ‘NR==1,NR==3,NR==5’
echo "123abc" | awk '{print substr($0,4,1)}'		截取123abc字符串中,第四個字符開始長度爲1的部分
###先執行BEGING,然後讀取文件,讀入有/n換行符分割的一條記錄,然後將記錄按指定的域分隔符劃分域,填充域,最後執行END操作
cat /etc/passwd |awk  -F ':'  'BEGIN {print "name,shell"}  {print $1","$7} END {print "blue,/bin/nosh"}'
awk -F: '/root/' /etc/passwd						搜索/etc/passwd有root關鍵字的所有行
awk -F: '/root/{print $7}' /etc/passwd				搜索/etc/passwd有root關鍵字的所有行,並顯示對應的shell
###統計/etc/passwd:文件名,每行的行號,每行的列數,對應的完整行內容
awk -F: '{print "filename:" FILENAME,"linenum:" NR,"columns:" NF,"main:" $0}' /etc/passwd
awk -F: '{printf("filename:%s,linenumber:%s,columns:%s,linecontent:%s\n",FILENAME,NR,NF,$0)}' /etc/passwd  與上一行一樣
###下面統計/etc/passwd的賬戶人數
awk '{count++;print $0;} END{print "user count is ", count}' /etc/passwd
awk 'BEGIN {count=0;print "[start]user count is:",count} {count++;print $0} END{print "[end]user count is:",count}' /etc/passwd
###統計某個文件夾下的文件佔用的字節數
ls -l | awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is:",size/1024/1024,"M"}'
###統計某個文件夾下的文件佔用的字節數(過濾掉文件夾-大小爲4096)
ls -l | awk 'BEGIN {size=0;print "[start]size is:",size} {if($5!=4096){size=size+$5;}} END {print "[end]size is:",size/1024/1024,"M"}'
###顯示/etc/passwd文件中的賬戶
awk -F: 'BEGIN {count=0;} {name[count] = $1;count++;} END{for (i=0;i<count;i++) print i,name[i]}' /etc/passwd
	
awk的內建函數:
(substr截取、split初始化和類型強制、length字符串長度、gsub函數)
①substr用法:echo "123abc" | awk '{print substr($0,4,1)}'	 截取123abc字符串中,第二個字符開始長度爲1的部分:  a
②split用法:echo "12:34:56" | awk '{split($0,a,":");print a[1],a[2],a[3]}'		得到:12 34 56
	或
echo "12:34:56" | awk -F: '{split($0,a);print a[1],a[2],a[3]}'					得到:12 34 56
③length用法:echo "19960226" | awk '{print length}'   							得到:8
基本腳本:(在常用腳本中)
1、監控服務狀態(mysql、httpd、nginx、tomcat...2、檢查主機存活性(服務器IP有列表文件,用for循環實現)
	ping -c 3 -i 0.2 -W 1 IP地址
3、服務啓動控制腳本(nginx、PHP-fpm)
4、批量添加用戶(用戶有列表文件,用for循環實現)
	useradd 用戶名
	echo "用戶名" | chpasswd
	chage -d 0 用戶名
5、檢查主機性能(cpu使用率、cpu負載、內存使用率、磁盤使用率、登錄用戶數、進程數...)
	超過閾值郵件告警
	對多臺主機監控如何實現?
	(提示:ssh root@主機IP uptime,對目標主機先實現免交互登錄)
6、定期備份數據庫(計劃任務)
	date=`date +%Y%m%d`
	tar zcf mysql-$date.tar.gz  /usr/local/mysql/data/
7、定期備份日誌
	date=`date +%Y%m%d`
	tar zcf nginx-$date.tar.gz  /usr/local/nginx/logs/access.log
8、rsync+inotify遠程實時同步腳本
遠程ssh登錄驗證慢的問題,修改/etc/ssh/sshd_config配置文件
GSSAPIAuthentication no
UseDNS no
改完兩行,重啓ssh服務,/etc/init.d/ssh restart
系統加固:
①、使用SUDO給某些用戶授權,避免所有管理員都以root用戶登錄;
②、清理系統用戶(如刪除、禁用、更改程序用戶的登錄shell爲/sbin/nologin);
③、關閉不必要端口(如web服務器只開放80和 遠程登錄的端口22);
④、開機及安全登錄配置BISO:設置密碼和設置以硬盤啓動;GRUB:設置密碼,關閉單用戶登錄,禁用CTRL-ALT-DEL熱鍵;
⑤、修改SSH端口,關閉ROOT用戶登錄;改成3333了
⑥、配置防火牆策略;
⑦、服務升級,apachectl升級到2.2.31以上,SSH升級到6.67.3;綠盟漏掃
⑧、修改文件及目錄權限(很細化,參照文檔);
關閉不必要的端口:netstat -antup;killall 進程名;
系統賬號用戶清理:
將非登錄用戶的Shell設爲/sbin/nologin:usermod -s /sbin/nologin
鎖定長期不使用的賬號:passwd  -l  用戶名
刪除無用的賬號:userdel  -r 用戶名
鎖定賬號文件  passwd、shadow: chattr +i /etc/passwd /etc/shadow
查看文件狀態:lsattr /etc/passwd /etc/shadow
解鎖賬號文件:chattr -i /etc/passwd /etc/shadow
密碼安全控制:
設置密碼有效期:vim /etc/login.defs 
(30天有效期)     PASS_MAX_DAYS  30       (適用於新建用戶)
			   chage -M 30 lisi        (適用於已有用戶)
強制在下次登錄時更改密碼:chage -d 0 zhangsan 
閒置600秒後自動註銷:  vim  ~/.bash_profile
						export TMOUT=600
減少記錄的命令條數:   vim /etc/profile
(限制200條保留)         HISTSIZE=200
註銷時自動清空命令歷史:vim  ~/.bash_logout
						history -c
						clear
限制使用su命令的用戶:
①、啓用pam_wheel認證模塊:
	vim  /etc/pam.d/su 
	#%PAM-1.0
	auth        sufficient  pam_rootok.so
	auth        required   pam_wheel.so use_uid
②、將允許使用su命令的用戶加入wheel組
	gpasswd -a zhangsan wheel:將zhangsan加到wheel組中,使用su命令.
使用su命令時:帶 - 選項表示將使用目標用戶的登錄Shell環境
	sudo:以其他用戶的身份執行授權的命令,避免都登陸root操作.
	visudo或vim /etc/sudoers       (用戶   主機名列表=命令程序列表)
		  %wheel	         ALL=NOPASSWD: ALL
		  jerry	             localhost=/sbin/ifconfig
查看sudo操作記錄:
需先啓用 Defaults logfile 配置:visudo
Defaults logfile = "/var/log/sudo"
再查看:tail /var/log/sudo    (默認日誌文件:/var/log/sudo)
查詢授權的sudo操作:sudo -l
調整BIOS引導設置:
將第一引導設備設爲當前系統所在硬盤
禁止從其他設備(光盤、U盤、網絡)引導系統
將安全級別設爲setup,並設置管理員密碼
禁用重啓熱鍵Ctrl+Alt+Del:
	vim /etc/init/control-alt-delete.conf
	#start on control-alt-delete
	#exec /sbin/shutdown -r now “Control-Alt-Delete pressed”,然後重啓生效.
GRUB限制的實現:
使用grub-md5-crypt獲得加密字串
grub-md5-crypt
Password:
Retype password:
$1$Kndw50$wRW2w1v/jbZ8n5q2fON4y/
改配置vim /boot/grub/grub.conf
Password --md5 $1$Kndw50$wRW2w1v/jbZ8n5q2fON4y/
title Red Hat Enterprise Linux  (2.6.32-431.el6.x86_64)
將密碼加在第一個title之前(全局部分),未經授權禁止修改啓動參數
將密碼放在每一個title之後(系統引導),未經授權禁止進入指定系統
禁用終端:(禁用tty1,tty2,tty3三個終端)
	vim  /etc/init/start-ttys.conf
   	      env ACTIVE_CONSOLES=/dev/tty[456]
	vim  /etc/sysconfig/init
	      ACTIVE_CONSOLES=/dev/tty[456]    更改完重啓生效
限制root只在安全終端登錄:  (只在終端123上可以登錄root)
	vim /etc/securetty
		tty1
		tty2
		tty3
***
禁止普通用戶登錄:
	建立/etc/nologin文件,              touch /etc/nologin
	刪除nologin文件或重啓後即恢復正常, rm -rf /etc/nologin
NMAP端口掃描:
	nmap  127.0.0.1       檢測tcp端口
	nmap  -sU  127.0.0.1  檢測udp端口
	nmap -p 21 192.168.4.0/24 檢測192.168.4.0/24網段有哪些主機提供FTP服務
	nmap -n -sP 192.168.4.0/24 檢測192.168.4.0/24網段有哪些存活主機
防火牆:
Netfilter,位於Linux內核中的包過濾功能體系,稱爲Linux防火牆的“內核態”.
Iptables,位於/sbin/iptables,用來管理防火牆規則的工具,稱爲Linux“用戶態”.
規則的作用:對數據包進行過濾或處理
鏈的作用:容納各種防火牆規則, 鏈的分類依據:處理數據包的不同時機
表的作用:容納各種規則鏈, 表的劃分依據:防火牆規則的作用相似
5個規則鏈:INPUT:入站,OUTPUT:出站,FORWARD:轉發數據包,路由前→FORWARD→路由後,PREROUTING:路由前處理包,POSTROUTING:路由後處理包.
raw表:	 是否對該數據包進行狀態跟蹤.策略設置需要在數據包剛剛觸發防火牆的位置添加,PREROUTING(進本機的數據包)和OUTPUT(出本機的數據包)
mangle表:爲數據包設置標記,任何一個位置都可實現
nat表:	 修改數據包中的源,目標IP地址和端口.所對應的鏈3;POSTROUTING用於轉換源地址,PREROUTING用於轉換目標址,OUTPUT也可以實現本機發出數據包的源地址轉換.
filter表:包過濾,確定是否放行該數據包,包含三個鏈,INPUTOUTPUTFORWARDESTABLISHED:代表響應報文或已建立連接的報文
製作本地YUM源:(安裝光盤)
掛載光盤到/var/ftp/centos      mount  /dev/cdrom  /var/ftp/centos
mv /etc/yum.repos.d/* /tmp
vim /etc/yum.repos.d/test.repo
	[test]
	name=centos
	baseurl=file:///var/ftp/centos
	enabled=1
	gpgcheck=0
yum -y install ..............(可以使用了,爲本機提供yum服務)
若給別的主機提供yum服務,掛載完以後,先安裝vsftpd
rpm -ivh /var/ftp/centos/Packages/vsftpd-2.2.2...64.rpm(本機)
客戶端執行vim /etc/yum.repos.d/test.repo時,baseurl=ftp://var/ftp/centos,...不變
yum時出現以下報錯的,解決如下: rm -f /var/run/yum.pid
yum uptime,與網絡yum源比較,更新本機上所有包更新爲最新的的版本
yum install mongodb-org		安裝mongo
***
#### pxe裝機批量部署:
①、搭建dhcp服務,用來分配地址、定位引導程序
②、運行TFTP服務器,提供引導程序下載
③、FTP服務
④、安裝system-config-kickstart,進行無人值守自動安裝

rsync遠程同步:

遠程主機10.2/var/www/html下的文件同步到本地:
rsync -azv --delete root@192.168.10.2:/var/www/html /var/www/html/
本地/var/www/html/下的文件同步到遠程主機10.2下:
rsync -azv --delete /var/www/html root@192.168.10.2:/var/www/html/
rsync時過濾掉某個文件夾
rsync -azv --exclude 'logs' /data0/realCompute/goods2kafka/ root@10.10.1.39:/data0/realCompute/goods2kafka/

實現免交互式登錄:

客戶端(a):
ssh-keygen -t rsa      //按四下回車              或者:ssh-keygen -t rsa -P ""
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.91.135(b)
將公鑰寫入遠程服務器的~/.ssh/authorized_keys(b),
客戶端就可免密碼登錄服務端(b)

實現遠程時時同步:

先實現免交互式登錄,在安裝inotify-tools工具,監控文件
cp  /media/2017.../Y2c/inotify...gz  /usr/src
cd /usr/src,   tar zxf inotify...gz,   cd inotify-tools-3.14
./configure && make && make install(安裝完成)
inotifywait -mrq -e create,delete,modify,attrib /var/www/html & (監控文件html)
若報錯沒有加載環境變量:
	export LD_LIBRARY_PATH=/usr/local/inotify/lib:$LD_LIBRARY_PATH
	
寫腳本:
vim /root/rsync.sh
	inotify_cmd=”inotifywait -mrq -e create,delete,modify,attrib /var/www/html”
	rsync=“rsync -azv --delete /var/www/html root@192.168.10.2:/var/www/html/”
	$inotify_cmd | while read a b c
	do
		$rsync
	done
chmod +x /root/rsync.sh
/root/rsync.sh &  (執行並放在後臺,所有新產生的文件都可以實時同步)

Squid緩存代理:端口3128

作用:加快重複訪問的效率,正向代理(傳統,透明),反向代理
***
Aapche:多進程的web服務,適合cpu密集型業務,如數據庫的查詢、計算等
Nginx:單進程的web服務,適合io密集型的業務,併發能力強於apache10倍
LNMP環境建立:安裝php時,--enable-fpm:讓php支持nginx解析,fpm端口9000.
Tomcat版本:Apache-tomcat-7.0.54,JDK:Java Development Kit-jdk-7u65-linux-x64.
nginx反向代理負載均衡,使用epoll模型,session sticky模塊,健康檢查模塊,
Upstream(負載均衡)模塊幾個參數:
interval=3000:每個節點3秒檢測一次;
rise=2:請求2次正常則標記節點狀態爲up;
all=5:檢測 5 次都失敗,則標記節點的狀態爲down;
timeout=1000:節點健康請求的超時時間爲1;
type=http:檢查包的類型爲http;
port=8080:指定檢查節點的端口號爲8080;
Nginx優化調整,進程數量調整,io事件模型epoll,每個進程連接數量的調整,8192,六核的話達到50000的併發量
三個web服務器:apache,nginx,tomcat比較
Apache和nginx支持html,php;tomcat支持jsp動態頁面。Apache多進程,cpu密集型業務,數據庫查詢等;nginx單進程,適合io密集型業務,視頻音頻發佈.
Nginx和apache結合,利用nginx的併發能力強.
Nginx和tomcat結合,tomcat併發能力不強,多用戶同時訪問時負載高,靜態頁面處理能力較弱,利用nginx的高併發能力以及高速處理靜態頁面的能力.

KVM部署:

virsh shutdown centos6.5-01   關機
virsh destroy   centos6.5-01  強制關機
virsh start     centos6.5-01  開機
virsh list --all              查看所有虛擬機
virsh snapshot-create centos6.5-01   創建快照
virsh snapshot-create-as centos6.5-01 centos6.5-01-init0(快照名字)   創建快照
virsh snapshot-list centos6.5-01                   查看虛擬機快照信
virsh snapshot-current centos6.5-01                查看虛擬機快照版本信息
virsh snapshot-revert centos6.5-01 1502107121(快照id)  恢復到某個快照狀態
virsh snapshot-delete centos6.5-01 1502107121(快照id)  刪除快照
virt-clone -o centos6.5-01 -n centos6.5-02 -f /data_kvm/store/centos6.5-02.qcow2
克隆之後的虛擬機,rm -rf /etc/udev/rules.d/70-persistent-net.rules,重啓
LVS負載均衡:
羣集:多臺主機構成,對外表現爲一個整體
羣集類型:
①負載均衡羣集(LB),提高系統的響應能力
②高可用羣集(HA),確保可靠性,達到高可用的容錯效果
③高性能運算全集(HPC負載均衡三層:前端調度器,服務器池,共享存儲(NAS)NFS協議實現
公司中用到的中間件:apache,nginx,otmcat
共享存儲NAS,NFS協議共享目錄、掛載實現的:
查看本機發布了哪些NFS共享目錄:showmount -e
客戶端查詢NFS服務器共享的目錄:showmount -e (服務器ip)
更好的分步式共享存儲MFS

負載均衡中三種模式:NAT模式;TUN模式;DR模式.
NAT(地址轉換)模式:調度器處於網關位置。優點:服務器處於內網中,比較安全,配置簡單。缺點:環境小,訪問量比較大時,調度器可能會成爲瓶頸。
TUN模式(IP隧道模式):調度器和真實服務器分佈在互聯網的不同位置,調度器與真實服務器之間通過構建隧道相互通信
DR模式(直接路由模式):調度器與真實服務器位於同一物理網絡,客戶端請求被調度器分配到不同真實服務器後,通信過程不再經過調度器,調度器負擔較輕,適用於訪問量較大的環境,安全性比NAT模式稍差。可以通過前端再部署一個NAT設備,增加安全性。
	
LVS羣集屬於第四層的負載均衡機制,通過識別IP地址及端口號進行調度,內核模塊ip_vs,查看節點狀態:ipvsadm -ln
Nginx(haproxy)反向代理屬於第七層(osi七層)負載均衡機制,通過url進行調度.
LVS四種調度算法:
①輪詢(Round Robin)將請求按順序分配,均等對待每臺服務器。
②加權輪詢(Weighted Round Robin)根據真實服務器的負載能力,輪流分配請求,適用於服務器性能不同的環境。
③最少連接(Least Connections)根據真實服務器已建立的連接數進行分配,連接數少的優先分配請求,服務器性能差不多。
④加權最少連接(Weighted Least Connections)在服務器性能節點差異較大的情況下爲真實的服務器自動調整權重.

NGINX三種調度算法:
①輪詢,②加權輪詢,③ip_hash,服務器負載重,實現同一客戶端訪問同一個服務器
haproxy使用的調度算法:
①輪詢RR,②最少連接LC,③根據來源進行調度SH(同nginx的ip_hash類似)
keepalived熱備:
keepalived雙機熱備:(高可用)
keepalived通過VRRP協議進行故障切換的,爲故障切換和節點健康檢查設計,也可獨立實現,一秒發一次,發三次不迴應就認爲節點壞掉了.
keepalived爲lvs實現節點健康檢查和故障切換
haproxy搭建web羣集:
作用:負載均衡調度和爲後端的節點進行健康檢查
mysql羣集:主從複製,讀寫分離
主端開啓二進制日誌記錄功能,對從端授權;從端開啓兩個線程,I/O線程從主端二進制日誌中讀取,SQL線程從中繼日誌讀取,重放執行事件到從端
    
主從不同步的原因:
	網絡延遲,服務器其外斷電、宕機
	配置時候的參數錯誤
	主從兩臺機器負載不一致
	mysql本身的bug引起的主從不同步
	版本不一致,特別是高版本是主,低版本爲從的情況下,主上面支持的功能,從上面不支持該功能。
  
解決:
	數據相差不太大,數據要求不嚴格時,可以忽略錯誤,
	先鎖定主端數據庫,鎖表,可以把主端數據庫完整備份到從端,進行恢復
負載均衡的:F5(負載均衡的硬件設備並具有對節點健康檢查的功能)LVS,Nginx
監控軟件:cacti,nagios,zabbix比較
cacti和nagios相比,cacti側重於監控流量和性能,圖形界面友好,主要使用SNMP協議來收集數據,nagios主要監控服務和性能好,報警功能很強大.
zabbix特點是具有以前監控軟件的優點,如圖形界面友好,報警功能強大,服務器性能、服務、流量均可監控,並支持分步式部署(適用於大環境).
ntpdate cn.pool.ntp.org //同步系統時間
yum時出現以下報錯的,解決如下:
 rm -f /var/run/yum.pid
MFS分步式文件系統:
    MFS分步式文件系統,可以提供PB級別的共享存儲(1PB=1024GB),擁有冗餘功能和動態擴容功能,保證數據安全性.
	MFS原理: 把數據分散在多個物理服務器上,呈現給用戶統一的資源
	組成:    元數據服務器(master)、元數據日誌服務器、數據存儲服務器、客戶端
	分步式文件系統作用: 集中訪問、簡化操作、數據容災、提高文件存取性能
	客戶端需要裝包:    mfs、fuse
RAID對比:
類型 中文名稱 速度(性能) 容量 安全性、冗餘性 數量
RAID0 條帶卷 爲單個磁盤的N倍 爲單個磁盤的N倍 單塊磁盤損壞,數據不可恢復 最少兩塊
RAID1 鏡像卷 爲單個磁盤的N/2倍 爲單個磁盤的N/2倍 一半數量的磁盤用於備份 最少兩塊
RAID3 有單塊磁盤存儲校驗信息的條帶卷 小於單塊磁盤的N-1倍 等於單塊磁盤的N-1倍 單塊磁盤損壞,數據可恢復 最少三塊
RAID5 分佈式存儲奇偶校驗信息的條帶卷 小於單塊磁盤的N-1倍 等於單塊磁盤的N-1倍(單塊容量存儲校驗信息) 單塊磁盤損壞,數據可恢復 最少三塊
RAID6 有兩份校驗信息的條帶卷 比RAID5慢N-2 兩塊磁盤損壞,數據可恢復 ----- -----
RAID1/10,前爲底層 混合型 爲單個磁盤的N/2倍 爲單個磁盤的N/2倍 一半數量的磁盤用於備份 最少四塊
LVM與RAID比較:
1、容量比單個磁盤更大,動態調整磁盤
2RAID從性能、安全性更好

三種監控軟件:

cacti:使用SNMP協議,161/udp,安裝lamp環境,管理環境添加設備、生成圖像,添加圖形樹,執行腳本收集數據添加過數據庫模板插件,還添加過功能插件。
nagios:分爲服務器端程序和被監控端程序,被監控端安裝nrpe插件。
Zabbix:使用snmp協議,客戶端安裝客戶端軟件,要求php版本爲5.4。Zabbix中導入監控nginx模板,編寫監控nginx各種狀態的腳本(存活性、活躍連接數、處理的連接數、握手數、總共處理的請求數量等),修改被監控端配置文件,針對於腳本定義鍵值,添加nginx主機並連接nginx模板。
SAN (ipsan):要求高速光纖通道,對速率、冗餘要求高,使用iscsi存儲協議,塊級
傳輸,文件系統管理在客戶端
NAS:支持普通以太網,對速率、冗餘無特別要求使用NFSCIFS共享協議,文件級傳輸網絡附加存儲(NFSMFS)
DAS:本地附加存儲
CentOS7.2:
關防火牆:	systemctl stop firewalld.service
		 	systemctl disable firewalld.service

Saltstack自動化運維工具

常用操作命令:
測試客戶端的聯通性:salt "*" test.ping  “*”是對所有電腦,’ip1’是對ip1主機操作
萬能命令 cmd.run
萬能命令查看磁盤使用情況:salt “*” cmd.run ‘df -hT’
萬能命令查看內存使用情況:salt “*” cmd.run ‘free -m’
萬能命令安裝軟件:salt -L 192.168.217.130 cmd.run ‘yum -y install httpd’
	
分發目錄:(提前將數據包放在salt的根目錄下)mkdir -p /src/salt/base/packages
	salt -L '192.168.32.136' cp.get_dir salt://packages/  /usr/src/
分發文件:
	salt -L '192.168.32.136' cp.get_file salt://web/test2  /tmp/test2
查詢計劃任務:salt  “*”  cron.raw_cron  root
添加計劃任務:
	salt “*” cron.set_job root ‘*/5’ ‘*’ ‘*’ ‘*’ ‘*’ “/usr/sbin/ntpdate -u cn.pool.ntp.org”
刪除計劃任務:
	salt “*” cron.rm_job root ‘*/5’ ‘*’ ‘*’ ‘*’ ‘*’ “/usr/sbin/ntpdate -u cn.pool.ntp.org”
改變文件的屬主屬組:
	salt 192.168.217.130 file.chown /tmp/test2 uu uu        //將屬主屬組改爲uu
設置文件權限:
	salt 192.168.217.130 file.set_mode /tmp/test2 0755      //改爲0755權限
查看文件權限:salt 192.168.217.130 cmd.run ‘stat /tmp/test2’
複製文件:	salt “*” file.copy /tmp/test2 /opt/test2         //從源目錄到目的目錄
查詢目錄是否存在: salt “*” file.diretcory_exits /test      //回覆True或False
創建多級目錄:	salt “*” file.mkdir /usr/locla/nginx/nginx   //創建多級目錄
刪除目錄:		salt “*” file.remove /usr/local/nginx/nginx      //只能一級一級刪除
追加內容到文件:   salt “*” file.append /tmp/test2 baogeedu
查看域名的信息:   salt “*” network.dig www.baidu.com
測試連通性:      salt “*” network.ping www.baidu.com
查看網卡mac地址:  salt “*” network.hwaddr eno16777736
查看指定網卡的信息:salt “*” network.interface eno16777736
獲取ip:          salt “*” network.interface_ip eno16777736
獲取子網掩碼:     salt ”*” network.subnets eno16777736

pkg.install: centos調用的是yum ,ubuntu調用的是apt-get
安裝telnet包:salt “*” pkg.install telnet
卸載telnet包:salt ”*” pkg.remove telnet

ansible自動化運維工具:

使用ssh協議,只需要在控制端安裝ansible,200臺以下服務器數量比較合適,大量服務器使用saltstack合適。開始前對受控主機進行定義
默認定義主機的文件爲/etc/ansible/hosts:
	10.10.1.134 ansible_ssh_user="root" ansible_ssh_pass="qAXAbU8B9ecJzR0g"
	10.10.1.39  ansible_ssh_user="root" ansible_ssh_pass="cine123456"
	10.10.1.17  ansible_ssh_user="root" ansible_ssh_pass="qAXAbU8B9ecJzR0g"
	10.10.1.18  ansible_ssh_user="root" ansible_ssh_pass="qAXAbU8B9ecJzR0g"
	[db]
	10.10.1.134
	10.10.1.39
	[bi]
	10.10.1.17
	10.10.1.18
	[bigdata:children]
	db
	bi
各種模塊,shell、command等,shell支持及管道,還有編寫劇本。
Ping模塊驗證與目標主機的連通性:ansible webservers -m ping
萬能命令:ansible webservers -m command -a 'df -hT'
拷貝文件:ansible webservers -m copy -a 'src=/tmp/cpu_idle.sh dest=/tmp owner=lishang group=lishang mode=0644'
yum安裝: ansible webservers -m yum -a 'name=telnet state=removed' //state=removed:如果包不存在,則返回telnet is not installed;否則返會將包卸載。
yum卸載: ansible webservers -m yum -a 'name=telnet state=absent' 
開啓服務:ansible webservers -m service -a 'name=httpd state=started enabled=yes'
添加計劃任務:ansible webservers -m cron -a "name='time sync' minute=*/5 weekday=1 job='/usr/sbin/ntpdate cn.pool.ntp.org'"
修改已存在目錄或者文件的屬主、屬組、權限
ansible webservers -m file -a 'dest=/tmp/test mode=777 owner=root group=root'

網絡基礎擴展部分:

交換機:連接多個主機的設備,連接路由器與其它網絡通信
交換機的配置:
VLAN:
中文名稱:虛擬局域網;
作用:邏輯分割廣播域;
原理:劃分VLAN,將不同接口劃給不同VLAN;
優勢:控制廣播,增強網絡安全性,簡化網絡管理;

分爲靜態VLAN和動態VLAN
VLAN可用的範圍:
04095:保留,僅限系統使用,用戶不能查看和使用這些VLAN
1:      正常,Cisco默認VLAN,用戶能夠使用該VLAN,但不能刪除它
2-1001: 正常,用於以太網的VLAN,用戶可以創建、使用和刪除這些VLAN
直接連接PC的交換機爲接入層交換機,往上爲匯聚層交換機,往上爲核心層
Trunk:
中文名稱:中繼
作用:通過一條鏈路跨交換機實現相同VLAN通信
原理:通過VLAN標識區分不同VLAN數據,一條鏈路承載多個VLAN
交換機之間的鏈路中繼鏈路
給交換機添加VLAN:全局模式下:vlan 2...
將接口加入VLAN中:int f0/1
			    switchport access vlan 2
不同VLAN組相互通信: int f0/3
				   switchport mode trunk
在以太網上實現中繼,有兩種封裝類型
ISL(Cisco私有標準)(思科設備私有)
IEEE 802.1q,2960交換機只支持802.1q(公有協議)
Trunk的模式 是否協商
接入 (Access) 中繼關,不協商,連接主機的
幹道 (Trunk) 中繼開,主動協商
動態企望 (Dynamic desirable) 主動協商
動態自動 (Dynamic auto) 被動協商
非協商 (Nonegotiate) 不協商
EthernetChannel:
中文名稱:以太通道(一般先配中繼),端口聚合或鏈路匯聚
作用:增大帶寬,備份線路
原理:將多條物理鏈路捆綁成一條邏輯鏈路;
單臂路由
作用:實現不用VLAN間通信
原理:通過子接口區分不同VLAN
缺點:“單臂”爲網絡骨幹鏈路,容易形成網絡瓶頸
子接口依然依託於物理接口,應用不靈活
VLAN間轉發需要查看路由表,嚴重浪費設備資源
VTP 思科獨有的協議
中文名稱:VLAN中繼協議
作用:統一管理VLAN,在一個交換機上操作,其他交換機學習VLAN信息
VTP域的組成,交換機間有相同域名並通過Trunk相連
VTP的運行模式:服務器模式(默認),客戶端模式,透明模式(關閉VTP)
服務器模式:學習、轉發相同域名的VTP消息,可增、刪、改VLAN
客戶端模式:學習、轉發相同域名的VTP消息,不可增、刪、改VLAN
透明模式:  不學習、不提供VTP消息,可以轉發,可以配置VLAN
VTP配置時,先配中繼再配VTP域名
VTP可自動更新:域名(其他交換機域名爲)、版本配置編號,VLAN編號,VLAN
名稱、修剪也可自動更新
不能自動更新的信息:模式、密碼
VTP自動更新時間300s
三層交換:
主要功能是交換,同時具備某些路由功能,它出現的背景就是爲了替代單臂路由,作用:實現不同VLAN間通信
工作原理:一次路由(三層),多次交換(二層)
生成樹協議(STP)---Spanning Tree Protocol
中文名稱:生成樹協議
作用:邏輯上斷開環路,防止廣播風暴的產生;備份線路
原理:通過生成樹算法確定阻塞接口
生成樹算法分爲三個步驟:(網橋—交換機)
選擇根網橋:選擇一個基準點,只有一個
選擇根端口:每個非根網橋上選擇一個到根網橋最優路徑的接口
選擇指定端口:每條線上選擇一個指定端口
選擇根網橋:比較網橋ID,先看優先級,再看MAC地址,誰小誰優
選擇跟端口:
①到根網橋最低的根路徑成本(網橋到根網橋的路徑上所有鏈路的成本之和)
②直連的網橋ID最小(看對端的)
③端口ID(端口優先級+端口編號)最小(看對端的)
選擇指定端口:
①根路徑成本較低,(根網橋上的端口全是指定端口)
②所在的交換機的網橋ID的值較小(看自己的)
③端口ID的值較小(看自己的)
生成樹發送的報文BPDU(橋協議數據單元)
Switch(config)#spanning-tree vlan vlan-list root { primary|secondary }
配置速端口:連接主機的接口無需參與生成樹計算,可配置爲速端口,接口連接後燈的顏色直接變爲綠色,無需等待30S
switch(config-if)#spanning-tree portfast
熱備份路由選擇協議(HSRP)
中文名稱:熱備份路由選擇協議
作用:網關冗餘
原理:通過一個虛擬ip實現設備故障切換
HELLO時間:3;保持時間:10VRRP協議,internet 任務組指制定
活躍端一般配置4條命令(加入組,更改優先級,佔先權,端口跟蹤)
備份端配兩條命令(加入組,佔先權)
子網劃分
128 64 32 16 8 4 2 1				       如:10110111=128+32+16+7=183
128 192 224 240 248 252 254 255	(子網掩碼) 如:11110000=240
255 127 63 31 15 7 3 1	        (廣播地址) 如:00001111=15

概念:從主機位中借位充當網絡位,網絡數更多,網段更小
1IP地址:是一個32位二進制數的點分十進制數表示
   192.168.1.1	--11000000.10101000.00000001.00000001
2、子網掩碼:IP地址中網絡部分全1,主機部分全032位二進制數的點分十進制數表示
   255.255.255.0	--11111111.11111111.11111111.00000000
3、網絡IDIP地址中網絡部分不變,主機部分全0
   192.168.1.0	--11000000.10101000.00000001.00000000IP地址和掩碼做“與運算”)
4、廣播地址:IP地址中網絡部分不變,主機部分全1
   192.168.1.255	--11000000.10101000.00000001.11111111(網絡地址+主機位全1)
5、網絡中可用IP範圍:除去網絡地址及廣播地址
   192.168.1.1-192.168.1.254
動態路由協議(RIP爲主,OSPF爲輔)
	優點:減少管理任務;缺點:佔用網絡帶寬
	泛洪:將自己的路由信息發出來
	收斂:使所有路由表都達到一致狀態的過程→收斂成功
	定期更新:30S更新一次;
	廣播更新:版本一;組播更新:版本二
	全路由表更新:整表更新
	RIP度量值最大跳數爲15跳,520/udp端口發送,最多並不是15個,只要兩個設備之間不超過15個路由就可以
	水平分割可以阻止路由環路的發生
	原理:從一個接口學習到路由信息,不再從這個接口發送出去
	廣播:目標是全體,且進行分析處理
	組播:目標是部分人,部分人進行分析處理,效率更高
	RIP v1有類路由協議,不識別子網;自動路由彙總,不可關閉;不支持VLSM
	RIP v2無類路由協議,識別子網;自動彙總可關閉,可手工彙總;支持VLSM
	OSPF路由協議
	三個表,路由表,鄰居表,鏈路結構表,無條數限制,支持大環境
IPv6:
	相對於IPv4,有更大的地址空間和更高效的路由基礎
	更大的地址空間:2^128個ip地址
	更高效的路由:
	①ip地址統一規劃,便於彙總
	②包頭頭長固定,簡單
	③採用PMTU轉發數據,不進行分片重組
	IPv6地址是冒號分16進制數,全局單播地址相當於IPv4的公有地址;站點本地地址相當於IPv4的私有地址,以FEC0開頭;鏈路本地地址是必須存在的,是啓用IPv6時自動產生的,以FE80開頭,此地址不會被路由器轉發。
IPSec VPN
中文名稱:虛擬專用網絡
作用:在公用網絡上建立專用網絡,進行加密通訊—虛擬專網
原理:通過4個關鍵技術來實現:訪問控制、加密、認證、隧道
加密與認證比較,加密爲雙向過程,有加密必有解密,主要實現數據的機密性,常用加密算法DHGPGDES3DES和AES;認證爲單向過程,主要用於報文完整性驗證和身份確認,常用算法MD5SHA
對稱加密算法傳輸快、不安全;非對稱加密算法計算複雜,效率太低,傳輸慢
通過非對稱加密算法加密對稱加密算法的密鑰,然後再用對稱加密算法加密實際要傳輸的數據
硬件防火牆
常見型號:Cisco  ASA 5520
安全級別高的可以訪問安全級別低的,安全級別相同相互不能訪問
華3、華爲設備
華爲華三防火牆區域分爲:local,trust,untrust,dmz四個區域,安全級別從高到低分別爲,local 100,trust 85,dmz 50,untrust 5,安全級別僅代表配置策略時的前後位置,級別高的在前,級別低的在後。
默認域間策略,local到其他區域訪問均允許,trust到local允許,其他域間訪問均禁止。
- 思科 華爲
二層交換 2960 S3700
三層交換 3560 S5700
路由器 2821/2800 AR2200
防火牆 ASA 5520 USG 5500

生成樹stp和hsrp相比較,生成樹用於路徑選擇,而hsrp或vrrp用於確定網關位置

技術	中文名稱	作用	原理或實現方法			
Vlan,Trunk,Vtp,EtherChannel,STPHSRP,vrrp,ACLNATVPN,IPv6,RIP/OSPF
2821  2621  路由器
3560        三層交換
2960        二層交換
Apache的兩種工作模式:
Perfork是多進程模式,每個進程都有獨立的系統資源,穩定性較好,效率較高,但系統資源佔用較多
Worker採用多進程多線程模式,系統資源佔用少,適合高併發。
Centos 7 服務開啓的命令
我們對service和chkconfig兩個命令都不陌生,systemctl 是管制服務的主要工具, 它整合了chkconfig 與 service功能於一體。
systemctl is-enabled iptables.service
systemctl is-enabled servicename.service #查詢服務是否開機啓動
systemctl enable *.service   #開機運行服務
systemctl disable *.service  #取消開機運行
systemctl start *.service    #啓動服務
systemctl stop *.service     #停止服務
systemctl restart *.service  #重啓服務
systemctl reload *.service   #重新加載服務配置文件
systemctl status *.service   #查詢服務運行狀態
systemctl --failed #顯示啓動失敗的服務
注:*代表某個服務的名字,如http的服務名爲httpd
重置root密碼:
重啓 Linux 系統主機並出現引導界面時,按下鍵盤上的 e 鍵進入內核編輯界面
在 linux16 參數這行的最後面追加“rd.break”參數,然後按下 Ctrl + X 組合鍵來運行修改過的內核程序
大約 30 秒過後,進入到系統的緊急求援模式。
依次輸入以下命令,等待系統重啓操作完畢,然後就可以使用新密碼來登錄Linux 系統了.
	mount -o remount,rw /sysroot
	chroot /sysroot
	passwd
	touch /.autorelabel
	exit
	reboot
yum相關:
命令 作用
yum repolist all 列出所有倉庫
yum list all 列出倉庫中所有軟件包
yum info 軟件包名稱 查看軟件包信息
yum install 軟件包名稱 安裝軟件包
yum reinstall 軟件包名稱 重新安裝軟件包
yum update 軟件包名稱 升級軟件包
yum remove 軟件包 移除軟件包
yum clean all 清除所有倉庫緩存
yum check-update 檢查可更新的軟件包
yum grouplist 查看系統中已經安裝的軟件包組
yum groupinstall 軟件包組 安裝指定的軟件包組
yum groupremove 軟件包組 移除指定的軟件包組
yum groupinfo 軟件包組 查詢指定的軟件包組信息
隨機生成10位密碼:
#!/bin.bash
for i in {1..15}
do
	A=`head -c 500 /dev/urandom | tr -dc A-Z |head -c 1`
	#隨機生成500字符|只取大寫字母|取第一個字符
	B=`head -c 500 /dev/urandom | tr -dc [:alnum:]| head -c 8`
	#隨機生成500字符|取英文大小寫字節及數字,亦即 0-9, A-Z, a-z|8C=`echo $RANDOM$RANDOM|cut -c 2`
	#取第二位隨機數字,第一位隨機性不高大多數是12,所以取第二位.
	 echo "$A$B$C"
done
隨機生成12位密碼:
#!/bin/bash
for i in {1..10}
do
	A=`head -c 500 /dev/urandom | tr -dc a-z0-9A-Z | tr [a-z] [A-Z]|head -c 2`
	B=`head -c 500 /dev/urandom | tr -dc a-z0-9A-Z | head -c 9`
	C=`echo $RANDOM|cut -c 3`
	echo "$A$B$C"
done
將檔案file1.txt設爲該檔案擁有者,與其所屬同一個羣體者可寫入,但其他以外的人則不可寫入
chmod ug+w,o-w file1.txt 
cat c.txt | sed 's/$/,/g'|xargs    #按行顯示編碼並以逗號分割
:g/^\s*$/d						   #在vi編輯器中刪除空行
#cat a.txt | xargs >b.txt           #將1.txt的按列顯示的文檔轉換成按行顯示到2.txt
#cat b.txt | sed 's/\s\+/,/g'       #2.txt中全部編碼空格符全部換爲,
tcpdump -X -i eth0
vim /etc/ssh/sshd_config
	tcpdump -X -i eth0  port 6080 -vv
	tcpdump -X -i eth0 port 7083
	tcpdump  -i eth0 port 7083
安裝系統出現問題:
TS250 安裝報錯disabling lock debuging  due to kernel taint:
解決:
  在安裝啓動頁面彈出時,按tab鍵 --- 輸入空格 --- 再輸入 acpi=off --- 回車,進行安裝
		
GNU GRUB
	grub>find  /boot/grub/stage1
	grub>root (hd0,6)    注:這是/boot所在的分區;
	grub>setup (hd0)   注:把GRUB寫到MBR上;

raid問題:
 disk sda contains BIOS raid metadata,but is not part of any recognized biso raid sets.
 在安裝啓動頁面彈出時,按tab鍵 --- 輸入空格 --- 再輸入 nodmraid --- 回車,進行安裝

###### 修改時間:
```javascript	 
date -s '2018-11-15 11:25:00'&&  hwclock -w;hwclock -r      //修改時間,並將系統時間同步到硬件時間
echo  1462 >  /sys/class/net/eth0/mtu
cat  .
/var/log/message                                            //網卡連接信息 
/etc/sysctl.conf        --->>>        net.ipv4.ip_forward = 1 

screen不間斷會話服務

①管理遠程會話
screen -S linux(創建的會話的名字)      //-S 創建一個會話
screen -ls 							   //查看正在工作中的會話
exit								   //退出當前的screen會話
創建會話之後,運行某個腳本或者命令,這時將窗口關掉,用 screen -ls 查看剛剛離線的會話
screen -r linux                        //恢復之前關閉的會話
screen -d linux                        //遠程臨時detach掉linux這個會話
screen -d -r linux                     //結束當前會話並回到linux這個會話
    
②會話共享功能
終端A和終端B都登錄到linux服務器上,A上創建一個會話
screen -S lishang
在B, screen -ls 查看一下當前會話,用 screen -x 進入該會話
終端B上可以看到A終端上顯示的內容
安裝 ibm_utl_sraidmr_megacli-8.00.48_linux_32-64.zip 包,查看系統信息
cd linux
rpm -ivh Lib_Utils-1.00-09.noarch.rpm  MegaCli-8.00.48-1.i386.rpm
命令及參數:
 /opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL         查raid級別
 /opt/MegaRAID/MegaCli/MegaCli64 -AdpAllInfo -aALL           查raid卡信息
 /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aALL            -------查看硬盤信息-----------
 /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -aAll            查看電池信息
 /opt/MegaRAID/MegaCli/MegaCli64 -FwTermLog -Dsply -aALL     查看raid卡日誌
 /opt/MegaRAID/MegaCli/MegaCli64 -adpCount                  【顯示適配器個數】
 /opt/MegaRAID/MegaCli/MegaCli64 -AdpGetTime –aALL 		   【顯示適配器時間】
 /opt/MegaRAID/MegaCli/MegaCli64 -AdpAllInfo -aAll 		   【顯示所有適配器信息】
 /opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -LALL -aAll 	   【顯示所有邏輯磁盤組信息】
 /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aAll   		   【顯示所有的物理信息】
 /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuStatus -aALL |grep ‘Charger Status’ 【查看充電狀態】
 /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuStatus -aALL          【顯示BBU狀態信息】
 /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuCapacityInfo -aALL    【顯示BBU容量信息】
 /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuDesignInfo -aALL      【顯示BBU設計參數】
 /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuProperties -aALL      【顯示當前BBU屬性】
/opt/MegaRAID/MegaCli/MegaCli64 -cfgdsply -aALL     【顯示Raid卡型號,Raid設置,Disk相關信息】
yum安裝 nslookup 指令
yum -y install bind-utils
判斷主機是物理機還是虛擬機
windows:Systeminfo | findstr /i "System Model"
		如果System Model:後面含有Virutal就是虛擬機,其他都是物理機
linux:dmesg | grep -i virtual
		顯示VMware Virtual Platform就是虛擬機
安裝dmidecode命令,執行  dmidecode -t 1  查看系統信息
查看服務器型號:dmidecode | grep 'Product Name'
查看主板的序列號:dmidecode |grep 'Serial Number'
查看系統序列號:dmidecode -s system-serial-number
查看內存信息:dmidecode -t memory
查看OEM信息:dmidecode -t 11
服務器序列號(SN):dmidecode -t system | grep Serial
yum安裝mysql,默認密碼查看:grep 'temporary password' /var/log/mysqld.log
服務器主機名高亮顯示:修改 vim .bashrc
###最長用
PS1="\[\e[0m\][\u@\[\e[32;1m\]`/sbin/ifconfig em1 | grep "inet addr" | sed -e "s/^.*inet addr:\(.*\) Bcast.*$/\1/"`\[\e[0m\] \W]# "
export PS1
		
export ip=`ifconfig|grep "inet addr"|head -1 |awk '/inet addr/ {print $2}'|cut -d: -f2`
export PS1="\[\033]2;\h:\u \w\007\033[32;1m\]\u@\033[33;1m\h \033[35;1m$ip\033[0m \[\033[34;1m\]\w\[\033[0m\] \[\e[31;1m\]# \[\e[0m\]"

export ip=`ifconfig|grep  "inet addr"|head -1 |awk '/inet addr/ {print $2}'|cut -d: -f2`
export PS1="\[\033]2;\h:\u \w\007\033[32;1m\]\u@$ip \033[35;1m\t\033[0m \[\033[34;1m\]\w\[\033[0m\] \[\e[31;1m\] # \[\e[0m\]"
修改MTU值:
cat /sys/class/net/em1/mtu && echo 1468 /sys/class/net/em1/mtu
ab測試訪問:
訪問5W次
	ab -n 20 -c 5 -t 2 -k http://10.10.1.132:80/index.html
訪問10次,併發10次
	ab -n 10 -c 10 http://10.10.1.132/odps/goodsSell.action
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章