1. Bash腳本數組定義聲明及引用
array_t=(1 2 3 4) #命令行中定義並測試
array_t1=(1,2,3,4) #使用逗號則作爲一個總體
echo $array_t #默認打印第一個下標的變量
echo ${array_t[2]}
echo ${array_t[-2]}
echo $array_t1
2.普通數組,自定義索引位置
關聯數組
關聯數組支持字符串做爲數組索引。使用關聯數組必須先使用declare -A聲明它
數組截取、替換
array_t=(1 2 3 4) #命令行中定義並測試
array_t1=(1,2,3,4) #使用逗號則作爲一個總體
echo $array_t #默認打印第一個下標的變量
echo ${array_t[2]}
echo ${array_t[-2]}
echo $array_t1
array_t2[1]=1
array_t2[2]=2
array_t2[3]=3
array_t2[4]=4
echo ${array_t2[*]} #打印全部值
echo ${array_t2[@]} #也可用@符號
echo ${!array_t2[*]} #! 打印索引號,下標
echo ${!array_t2[@]} #也可用@符號
echo ${#array_t2[2]} #下標變量長度
echo ${#array_t2[*]} #顯示數組中的元素個數(只統計值不爲空的元素)
echo ${#array_t2[@]}
declare -A array_t3 # 聲明以後就能夠給其賦值了
array_t3=([name1]=westfile [name2]=linkpark)
echo ${array_t3[name1]} #name1 name2是關聯數組的index
echo ${array_t3[name2]}
array_t3[name3]=u2 #也可分開賦值
array_t3[name4]=coldplay
echo ${array_t3[*]}
數組截取、替換
array_t=(1 2 3 4) #命令行中定義並測試
array_t1=(1,2,3,4) #使用逗號則作爲一個總體
echo $array_t #默認打印第一個下標的變量
echo ${array_t[2]}
echo ${array_t[-2]}
echo $array_t1
array_t2[1]=1
array_t2[2]=2
array_t2[3]=3
array_t2[4]=4
echo ${array_t2[*]} #打印全部值
echo ${array_t2[@]} #也可用@符號
echo ${!array_t2[*]} #! 打印索引號,下標
echo ${!array_t2[@]} #也可用@符號
echo ${#array_t2[2]} #下標變量長度
echo ${#array_t2[*]} #顯示數組中的元素個數(只統計值不爲空的元素)
echo ${#array_t2[@]}
declare -A array_t3 # 聲明以後就能夠給其賦值了
array_t3=([name1]=westfile [name2]=linkpark)
echo ${array_t3[name1]} #name1 name2是關聯數組的index
echo ${array_t3[name2]}
array_t3[name3]=u2 #也可分開賦值
array_t3[name4]=coldplay
echo ${array_t3[*]}
for循環遍歷數組
2. Bash腳本信號捕捉
Linux利用信號與系統中的進程進行通訊, kill -9
生成信號,bash shell容許用鍵盤上的組合鍵生成兩種基本的Linux信號。 這個特性在須要中止或暫停程序時
很方便
中斷進程
sleep 100
ctrl + c
暫停進程,可在進程運行期間暫停進程
sleep 100
ctrl + z
array_t4=(1 2 3 4 5 6)
echo ${array_t4[*]:2:2} #從數組所有元素中第2個元素向後截取2個元素出來
array_t41=${array_t1[*]:2:2} #截取並賦值
array_t42=${array_t1[*]/5/6} #數組中的5替換爲6
array_t5=(one two three four five)
for循環遍歷數組
for i in ${array_t5[*]};do
echo $i
done
for i in ${!array_t5[*]};do #i變成數組index的方法
echo ${array_t5[$i]}
done
#經常使用的三種方法
array_t6=($(ls /boot))
for i in ${array_t6[*]};do #以數組值的方式直接遍歷數組
echo $i
done
for ((i=0;i<${#array_t6[*]};i++));do # 以數組變量個數的方式遍歷數組
echo ${array_t6[$i]}
done
for i in ${!array_t6[*]};do # 以數組index的方式遍歷數組
echo ${array_t6[$i]}
done
2. Bash腳本信號捕捉
Linux利用信號與系統中的進程進行通訊, kill -9
生成信號,bash shell容許用鍵盤上的組合鍵生成兩種基本的Linux信號。 這個特性在須要中止或暫停程序時
很方便
中斷進程
sleep 100
ctrl + c
暫停進程,可在進程運行期間暫停進程
sleep 100
ctrl + z
經過 ps 可查看進程的狀態
捕獲信號
信號出現時捕獲它們並執行其餘命令 。trap命令容許來指定shell 腳本要監看並從shell中攔截信號
使用trap來忽略信號,並控制腳本的行爲
more s1.sh
#!/bin/bash
# Testing signal trapping
#
trap "echo ' Sorry! I have trapped Ctrl-C' " SIGINT
#
echo This is a test script
#
count=1
while [ $count -le 10 ]
do
echo "Loop #$count"
sleep 1
count=$[ $count + 1 ]
done
#
echo "This is the end of the test script"
#
#trap命令會在每次檢測到SIGINT信號時顯示一行簡單的文本消息。捕獲這些信號會阻止用戶用bash shell組合
鍵Ctrl+C來中止程序;每次使用Ctrl+C組合鍵,腳本都會執行trap命令中指定的echo語句,而不是處理該信號並
容許shell中止該腳本
捕獲腳本退出
#除了在shell腳本中捕獲信號,也能夠在shell腳本退出時進行捕獲。這是在shell完成任務時執行命令的一種簡
便方法;捕獲shell腳本的退出,只要在trap命令後加上EXIT信號
more s2.sh
#!/bin/bash
# Trapping the script exit
#
trap "echo Goodbye..." EXIT
#
count=1
while [ $count -le 5 ]
do
echo "Loop #$count"
sleep 1
count=$[ $count + 1 ]
done
#
#由於SIGINT信號並無出如今trap命令的捕獲列表中,當按下Ctrl+C組合鍵發送SIGINT信號時,腳本就退出
了。但在腳本退出前捕獲到了EXIT,因而shell執行了trap命令。
修改或移除捕獲
#在腳本中的不一樣位置進行不一樣的捕獲處理,只需從新使用帶有新選項的trap命令
more s3.sh
#!/bin/bash
# Modifying a set trap
#
trap "echo ' Sorry... Ctrl-C is trapped.'" SIGINT
#
count=1
while [ $count -le 5 ]
do
echo "Loop #$count"
sleep 1
count=$[ $count + 1 ]
done
#
trap "echo ' I modified the trap!'" SIGINT
#
count=1
while [ $count -le 5 ]
do
echo "Second Loop #$count"
sleep 1
count=$[ $count + 1 ]
done
#
#修改了信號捕獲以後,腳本處理信號的方式就會發生變化。但若是一個信號是在捕獲被修改前接收到的,那麼腳
本仍然會根據最初的trap命令進行處理
#修改了信號捕獲以後,腳本處理信號的方式就會發生變化。但若是一個信號是在捕獲被修改前接收到的,那麼腳
本仍然會根據最初的trap命令進行處理
more s31.sh
#刪除已設置好的捕獲。只須要在trap命令與但願恢復默認行爲的信號列表之間加上兩個破折號就好了
#!/bin/bash
# Removing a set trap
#
trap "echo ' Sorry... Ctrl-C is trapped.'" SIGINT
#
count=1
while [ $count -le 5 ]
do
echo "Loop #$count"
sleep 1
count=$[ $count + 1 ]
done
#
# Remove the trap
trap -- SIGINT
echo "I just removed the trap"
#
count=1
while [ $count -le 5 ]
do
echo "Second Loop #$count"
sleep 1
count=$[ $count + 1 ]
done
#
3. Openssl的基本應用
openssl enc #enc進行加密
openssl enc -des3 -salt -a -in file -out file.des3 #加密文件;-des3加密算法,-salt默認參數,-a以
base流形式加密(默認),-in須要加密的文件,-out輸出加密文件
openssl enc -des3 -d -salt -a -in file.des3 -out file #解密文件;-d解密
md5sum file #提取特徵碼
openssl dgst -md5 file #dgst關鍵字,-md5加密算法
openssl passwd #生成密文的密碼
openssl passwd -1 #在kickstart腳本中使用過
openssl passwd -1 #兩次生成不一樣,它會隨機生成
openssl passwd -1 -salt xxx #指定salt(關鍵字)生成密碼相同,字母可替換
openssl rand #生成隨機密碼
openssl rand -base64 12 #生成12位的隨機數
openssl rand -base64 16
openssl genrsa #生成指定長的對稱密鑰
openssl genrsa -out file2048.key #生成大小爲2048bit的file2048.key密鑰文件
openssl rsa -in file2048.key -pubout #生成公鑰
cat file2048.key
openssl req -new -x509 -key server512.key -out server.crt -days 365 #X.509是一種很是通用的證書格
式。全部的證書都符合ITU-T X.509國際標準,所以(理論上)爲一種應用建立的證書能夠用於任何其餘符合
X.509標準的應用
cat server.crt
openssl x509 -text -in server.crt #經過文本方式查看證書
4. Ca及Openssl應用
爲了便於測試,CA服務器和WEB服務器的安裝配置在一臺服務器進行,客戶端用windows
1.CA服務器建立私有CA請收並頒發
rpm -qa openssl && yum install openssl
cd /etc/pki/CA/
umask 077;openssl genrsa -out private/cakey.pem 4096 #genrsa 使用rsa算法生成密鑰,4096 生
成一個4096位的密鑰
2.自簽證書
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365 #req 生成證書籤署請
求,-news 新請求,-509 專門用於生成自簽署證書,-days 有效天數
3.初始化環境(只有第一次建立CA時,才須要作此步驟)
cd /etc/pki/CA/
touch index.txt
echo 00 > serial #指定序列號從那個數字開始
4.把cacert.pem 文件拷貝至windows客戶端
5.Web節點申請證書,爲私鑰請求證書建立單獨目錄便於存放
mkdir -p /etc/httpd/conf.d/ssl
cd /etc/httpd/conf.d/ssl
umask 077;openssl genrsa -out httpd.key 4096
6.生成證書籤署請求
cd /etc/httpd/conf.d/ssl
openssl req -new -key httpd.key -out httpd.csr
7.將簽署的請求文件發送給CA服務器
cp httpd.csr /etc/pki/CA/
8.CA簽署證書
openssl ca -in httpd.csr -out httpd.crt -days 365
9.將簽署好的證書發回給Web Server申請者
cp certs/httpd.crt /etc/httpd/conf.d/ssl/
cp cacert.pem /etc/httpd/conf.d/ssl/
10.Web節點配置httpd 支持使用ssl,及使用證書
yum install httpd mod_ssl -y
vi /etc/httpd/conf.d/ssl.conf #修改ssl支持
SSLCertificateFile /etc/httpd/conf.d/ssl/httpd.crt #105行 修改成證書保存路徑
SSLCertificateKeyFile /etc/httpd/conf.d/ssl/httpd.key #112行 修改成私有密鑰保存路徑
SSLCACertificateFile /etc/httpd/conf.d/ssl/cacert.pem #127行 修改CA證書保存路徑
systemctl restart httpd
11.在網頁中顯示須要加代碼
vi /etc/httpd/conf.d/ssl.conf
shift+g
在</VitualHost>後面添加
DocumentRoot "/var/www/html/"
ServerName lp.com:443
<Directory "/var/www/html/">
AllowOverride All
Options None
require all granted
固然 域名名字必須提早在/etc/hosts 下修改好
在客戶機上面壓實在hosts下修改
12.客戶端測試
把第4步的文件雙擊進行安裝html