bash指令碼陣列定義宣告以及引用2018 5 27

2021-08-20 07:52:18 字數 4198 閱讀 7324

例:

arrt=(1 2 3 4 )

arrt1=(1,2,3,4)  ,為乙個這

echo $arrt    #預設列印第乙個下標的變數

echo $  列印第三個元素

echo $  右邊開始數的第二個元素

echo $arrt1  列印出所有的

1,2,3,4

普通陣列,自定義索引位置

arrt2[1]=1

arrt2[2]=2

arrt2[3]=3

arrt2[4]=4

echo $列印出所有的值 (也可用@)

1 2 3 4

echo $  列印下標變數長度

echo $   顯示陣列中的元素個數(只統計值不為空的元素)也可用@     

關聯陣列 :關聯陣列支援字串作為陣列索引,使用關聯陣列前必須先使用declare -a宣告

declare -a   arrt3=([name1]=westfile [name2]=linkpark)

echo $

wesfile

echo $

linkpark

arrt3[name3]=2      #分開賦值

arrt3[name4]=coldplay

echo $

westfile linkpark 2 coldplay

陣列的擷取和替換

arrt4=(1 2 3 4 5 6)

echo $  #擷取第二個元素往後的2個元素

3 4

arrt41=$#擷取並賦值

echo $arrt41         3 4

arrt42=$  陣列中的5 替換為6

echo $arrt42      1 2 3 4 6 6

迴圈遍歷陣列

#!/bin/bash

arrt5=(one toe three four five)

for a in $;do

echo $a

done

onetoe

three

four

five

bash指令碼訊號捕捉

linux利用訊號與系統的程序進行通訊。

sleep 100

ctrl + c#暫停程序  執行期間暫停

sleep 100

ctrl + z   在後台中暫停

ps 檢視程序的狀態訊號

openssl 的基本應用加密、解密

openssl加密的三大方式:對稱加密

含義:指加密解密使用同一組金鑰,是按資料分塊以後進行加密的,前後資料塊彼此之間有關聯關係

特性:加密演算法嚴重依賴口令,加密演算法很有可能是公開的,所有人都有可能知道這個演算法;加密

des(

56bit

)、3des

、aes

(128bit

)、blowfish

、twofish

、rc6

、cast5

非對稱加密

含意:對訊息的加密和解密使用不同的金鑰,即用於加密、可以公開的公鑰(

public key

),和用於解密、需要保密的私鑰

(private key)

特性:非對稱加密演算法的保密性比較好,它消除了終使用者交換金鑰的需要,但加密和解密花費時間長、速度慢,它不適合於對檔案加密而只適用於對少量資料進行加密相關演算法:

rsa、

eigamal

、dsa

意向加密

含義:是抽取資料特徵碼來驗證資料的完整性特性:雪崩效應:輸入資料的微小改變會導致結果的巨大變化

;定長輸出:無論輸入資料多大,單向加密結果中的輸出長度是相同的

openssl

是使用非常廣泛的

ssl

的開源實現,也是一種多命令列工具,它能夠實現資料的加密、解密,還能當做

ca來用,它能保證讓你建立證書、吊銷證書

openssl enc

#enc

進行加密

ca及openssl

應用在我們訪問一些金融等安全性較高**時,都不再是普通的

連線,而是

連線,這個

s就代表這個通訊是加密的,這是就需要

ca機構來頒布數字證書來驗證

web伺服器的正確性。這個數字證書為實現雙方安全通訊提供了電子認證。在網際網路、公司內部網或外部網中,使用數字證書實現身份識別和電子資訊加密。數字證書中含有公鑰對所有者的識別資訊,通過驗證識別資訊的真偽實現對證書持有者身份的認證

練習https的實現

systemctl stop firewalld 關閉防火牆

setenforce 0 關閉selinux

1、ca伺服器建立私有ca證書並頒發:

rpm -qa openssl && yum install openssl   查詢openssl並安裝openssl

cd /etc/pki/ca/

umask 077;openssl genrsa -out private/cakey.pem 4096 #使用rsa演算法生成乙個4096位的金鑰

2、自簽證書

openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365

#req生成證書簽署請求 news新請求 x509專門用於生成自簽署證書,days有效天數

3、初始化環境(只有第一次建立ca時才執行此步驟)

cd /etc/pki/ca/

touch index.txt

echo 00 >> serial   指定序列號從哪個數字開始

4、web節點申請證書,為私鑰請求證書建立單獨的目錄便於存放

5、生成證書簽署請求

6、將簽署的請求檔案傳送給ca伺服器

7、ca簽署證書(/etc/pki/ca/)

8、將簽署好的證書傳送回給(/etc/pki/ca)

9、web節點配置httpd支援使用ssl及使用證書

vim /etc/httpd/conf.d/ssl.conf 修改ssl

在檔案最後面新增:

documentroot 「/var/www/html」

servername gt.com :443

allowoverride all

option none

require all granted

systemctl restart httpd 重新啟動httpd服務

10、將/etc/pki/ca/ 下的檔案cacert.pem 拷貝至客戶端

進行證書安裝(將檔案字尾名改為crt)選擇受信任的頒發機構

安裝好後在客戶端訪問https://ip位址

但是一般情況是訪問網域名稱所以首先在客戶端找到c/windos/system32/drivers/etc/hosts將其移至桌面並在最後一行新增

ip 網域名稱然後儲存至原文目錄中然後訪問https://網域名稱

顯示證書正確沒有問題即可

bash陣列定義

如果用標準的 nix shell將不能使用bash的陣列特性。雖然在perl,python,php及其他高階語言中陣列已經不是乙個強大的功能,但陣列使用還是相當廣泛。bash只支援一維陣列,但引數個數沒有限制。宣告乙個陣列 declare a array 如果沒有宣告,按陣列方式直接賦值給變數,ba...

Shell指令碼陣列詳解

陣列包括的資料型別 獲取陣列的長度 陣列的遍歷 陣列的切片 陣列的替換 向函式傳陣列引數 從函式中返回陣列 陣列中的元素 30 20 10 60 50 40 陣列中的索引 0 1 2 3 4 5 方法一陣列名 value0 value1 value2 方法二陣列名 0 value 1 value 2...

整型陣列宣告與定義

當宣告陣列int arr 9 定義陣列,輸入資料截止到下標arr 6 系統自動給arr 7 arr 8 賦值為 任意值 int x 輸入資料 int i 0 記錄位數 int a 5 儲存逆序 int temp printf 輸入資料x scanf d x while x 100000 x 0 輸出...