公司測試環境有兩種登錄模式,未實現腳本一鍵切換之前,都需要手動修改網關配置、中間件域下的appr.properties文件、外網參數配置,且需去控制台重啟用戶登錄對接程序包,過程繁瑣;實現腳本切換后,可以快速切換。
一、執行outin.sh腳本
如下圖,執行.sh腳本后選擇切換的模式,則實現自動切換!!!
對應的outin.sh腳本如下圖:
1 #!/bin/bash 2 echo -e "\033[33m 請輸入你需要的操作 \033[0m" #輸出字符串 3 echo -e "\033[33m 1.切換成本地登錄 2.切換成統一認證\033[0m" 4 echo -e "\033[33m ------------------------------------------- \033[0m" 5 read type #讀取鍵盤輸入的變量 6 if [ $type == 2 ] ; then #根據鍵盤輸入的值來執行腳本 7 echo "開始切換統一認證" 8 cd $(pwd)/login #切換到路徑 9 ./out.sh #執行out.sh腳本 10 echo "數據庫修改完成" 11 cd /u01/ZWWG 12 sed -i 's/local-login: 1/local-login: 0/g' application.yml #使用sed命令直接修改application.yml文件,將local-login的值由1改為0 13 ./restart.sh #執行網關的重啟腳本 14 echo "網關配置修改並重啟完成" 15 cd /u01/weblogic/Middleware/user_projects/domains/base_domain 16 sed -i 's/OPEN_LOCAL_LOGIN=1/OPEN_LOCAL_LOGIN=0/g' appr.properties 17 echo "appr.properties配置文件修改完成,請自行重啟ApprUAuth包" 18 else 19 echo "開始切換本地登錄" 20 cd $(pwd)/login 21 ./local.sh 22 echo "數據庫修改完成" 23 cd /u01/ZWWG 24 sed -i 's/local-login: 0/local-login: 1/g' application.yml 25 ./restart.sh 26 echo "網關配置修改並重啟完成" 27 cd /u01/weblogic/Middleware/user_projects/domains/base_domain 28 sed -i 's/OPEN_LOCAL_LOGIN=0/OPEN_LOCAL_LOGIN=1/g' appr.properties 29 echo "appr.properties配置文件修改完成,請自行重啟ApprUAuth包" 30 fi 31 ~
1 相關知識點: 2 3 echo命令 用於字符串的輸出,使用“-e”參數進行換行 4 read命令 用於讀取從鍵盤的輸入 5 流程控制 if else 語法格式: 6 if condition 7 then 8 command1 9 command2 10 ... 11 commandN 12 else 13 command 14 fi
15 變量 示例中的type。使用變量時需在變量名前面加美元符號“$”。若想定義只讀變量,可使用readonly命令,如readonly type。 16 sed命令 行編輯器。sed 的 -i 選項可以直接修改文件內容。語法格式為: 17 sed -i 's/原字符串/新字符串/' 文件 #只修改第一個匹配內容 18 sed -i 's/原字符串/新字符串/g' 文件 #修改所有匹配內容
二、執行login目錄下的out.sh腳本
1 #!/usr/bin/expect 2 3 set timeout 1 #設置超時時間,單位為秒 4 set host "192.168.110.520" #設置變量服務器地址 5 set username "abc" #設置變量服務器賬號 6 set password "123456" #設置變量服務器賬號密碼 7 8 spawn ssh $username@$host #使用spawn命令啟動新的進程,使用變量username和host 9 expect "*password*" #判斷上次輸出結果里是否包含“password”的字符串,有則立即返回,否則就等待一段時間后返回; 10 send "${password}\r" #當匹配到對應的輸出結果包含“password”時,就發送密碼到打開的ssh進程 11 expect "*]#*" #判斷上次輸出結果里是否包含“]#”的字符串,有則立即返回,否則就等待一段時間后返回; 12 send "sh out.sh\r" #當匹配到對應的輸出結果包含“]#”時,就執行out.sh腳本 13 send "exit\r" #退出命令 14 expect eof 15 ~
1 相關知識點: 2 3 expext命令 使用expect命令來實現自動的交互式任務,根據程序的提示,模擬標准輸入提供給程序。使用expect時的相關命令: 4 send 用於向進程發送字符串 5 expect 從進程接收字符串 6 spawn 啟動新的進程,spawn后的send和expect命令都是和使用spawn打開的進程進行交互
三、執行520服務器上的out.sh腳本
腳本中連接上數據庫並執行update語句然后斷開連接並退出。