实现两种登录方式一键切换的脚本及相关知识点


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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM