VBS/QTP 通过 telnet 数据库授权

功能:想通过vbs脚本实现 telnet到远程计算机,然后执行数据库命令,赋予其它电脑远程访问的权


---------VBS实现---------------

说明:

1、只能手动运行vbs实现;

2、通过web调用vbs,或远程到这个vbs脚本的主机时执行vbs,大部分是执行失败的。

----QTP/UFT、EXCEL可以远程调用,是因为他们开启了DCOM的功能;


Set args = Wscript.Arguments

IP = args(0)
user = args(1)
pwd = args(2)


set sh=WScript.CreateObject("WScript.Shell") 
sh.run """telnet  & IP""" ,1 '启动TELNET并连接到服务器

WScript.Sleep 1000
sh.SendKeys "n~"
WScript.Sleep 1000
sh.SendKeys  "" & user & "~"  '输入用户+回车
WScript.Sleep 1000 
sh.SendKeys "" & pwd & "~" '输入用户密码+回车
WScript.Sleep 1000
'sh.SendKeys "ipconfig~" '登陆后输入你要执行的命令
WScript.Sleep 1000
sh.SendKeys "copy  /y ""\\192.168.5.5\MyAutoTest\Web\Launch\EnterMysql.bat"" .\ ~"
WScript.Sleep 1000
sh.SendKeys "EnterMysql.bat~"
WScript.Sleep 1000
sh.SendKeys ";~"
sh.SendKeys "GRANT ALL ON *.* TO root@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;~"
WScript.Sleep 2000

sh.SendKeys ";~"

===========================================

---------通过qtp---------------

说明:

1、通过QTP/UFT的DCOM,我们可以调QTP,然后QTP可以调用CMD,这样就实现了界面可见,理论也就实现了。

----实际上在64位系统上是行不通的,无论我们通过QTP调cmd,还是通过vbs,或是bat调cmd,这样启动的cmd窗口均不认识telent命令;

---只要是QTP启动的CMD窗口,均为64位的cmd,而我们想要的32位的cmd。即使我调32位的cmd的全路径,也是不行的。


2、手动启动cmd是可以telnet的,而QTP启动的却不能,也可能是启动时的身份、或变量不同,不知道如何解决。上述方法不可行;


3、我们可以通过qtp启动我的电脑,或是文件夹,然后我们在 系统路径中输入 cmd,此时启动的窗口则可以认识telent。参考下图:



4、既然方法可行,然后就是在QTP/UFT中实现代码了:

 TestPath=left(environment.Value("TestDir"),Instr(1, environment.Value("TestDir"), "测试脚本"0)-1)
Environment.LoadFromFile TestPath & "\测试数据\GrantDB.ini"

IP = Environment("IP")
user = Environment("user")
pwd = Environment("pwd")

SystemUtil.Run "explorer.exe","","",open

set objshell=createobject("wscript.shell")
wait 2
objshell.SendKeys("{F4}")
objshell.SendKeys("{BS}{BS}{BS}")
objshell.SendKeys("cmd")
objshell.SendKeys("{ENTER}")
wait 1

Window( "object class:=ConsoleWindowClass" ).Activate
Window( "object class:=ConsoleWindowClass" ).Type "telnet " & IP
Window( "object class:=ConsoleWindowClass" ).Type micreturn
wait 1

Window( "object class:=ConsoleWindowClass" ).Activate
Window( "object class:=ConsoleWindowClass" ).Type "n" 
Window( "object class:=ConsoleWindowClass" ).Type micreturn
wait 1

Window( "object class:=ConsoleWindowClass" ).Activate
Window( "object class:=ConsoleWindowClass" ).Type user
Window( "object class:=ConsoleWindowClass" ).Type micreturn
wait 1

Window( "object class:=ConsoleWindowClass" ).Activate
Window( "object class:=ConsoleWindowClass" ).Type pwd
Window( "object class:=ConsoleWindowClass" ).Type micreturn
wait 2

Window( "object class:=ConsoleWindowClass" ).Activate
Window( "object class:=ConsoleWindowClass" ).Type "copy  /y ""\\192.168.5.5\MyAutoTest\Web\Launch\EnterMysql.bat"" .\"
Window( "object class:=ConsoleWindowClass" ).Type micreturn
wait 2

Window( "object class:=ConsoleWindowClass" ).Activate
Window( "object class:=ConsoleWindowClass" ).Type "EnterMysql.bat"
Window( "object class:=ConsoleWindowClass" ).Type micreturn
wait 1

Window( "object class:=ConsoleWindowClass" ).Activate
Window( "object class:=ConsoleWindowClass" ).Type "GRANT ALL ON *.* TO root@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;"
Window( "object class:=ConsoleWindowClass" ).Type micreturn

================================================================================

文件:EnterMysql.bat 如下:

说明:

   1、通过bat读取注册表里的值,这样就知道我们的数据库安装哪里了。


@echo on
for /f "tokens=2 delims=Z" %%i in ('REG.EXE QUERY  "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MySQL8"  /v FilePath') do set InstallPath=%%i

set Path="%InstallPath%"

FOR /F "tokens=1 delims=:" %%i IN (%Path%) do set dev=%%i
%dev%:

cd %InstallPath%\mysql\bin
mysql -uroot -proot

;
;

GRANT ALL ON *.* TO root@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

--------------------------------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蜕变之痛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值