公司测试环境有两种登录模式,未实现脚本一键切换之前,都需要手动修改网关配置、中间件域下的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语句然后断开连接并退出。