失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > VBS脚本自动化-利用Windows远程连接Linux虚拟机并批量修改某配置文件信息

VBS脚本自动化-利用Windows远程连接Linux虚拟机并批量修改某配置文件信息

时间:2019-12-20 02:52:00

相关推荐

VBS脚本自动化-利用Windows远程连接Linux虚拟机并批量修改某配置文件信息

需求

需要对云空间的一批Linux虚拟机的配置文件A进行配置信息修改,同时有一行配置信息要求根据IP信息改变而改变

前提条件

windows系统已安装openSSH,详情参照微软官方教程

安装 OpenSSH | Microsoft Learn

代码

直接上代码,由于第一次写VBS,基本都打好注释了,方便查阅

rem 调用控制台程序Dim WshShell Set WshShell=WScript.CreateObject("WScript.Shell") WshShell.Run "cmd.exe"WScript.Sleep 500 rem 读取用户配置等信息Set fsUser = CreateObject("scripting.filesystemobject")Set tsUser = fsUser.OpenTextFile("userInfo.txt",1,true)Dim info(3)For i = 0 To 3info(i) = tsUser.ReadLineNexttsUser.closerem 读取ip地址文件的总行数Set fsIP = CreateObject("scripting.filesystemobject")Set tsIP = fsIP.OpenTextFile("ip.txt",1,true)lineEnd=tsIP.readalllineCount = tsIP.line'MsgBox "总行数: "&info(0)tsIP.closerem 读取ip写入到配置信息中并输入到虚拟机中'VBS不能直接定义数组长度为变量,只能通过先定义一个动态数组再重新定义Dim ipArr()Redim ipArr(lineCount-1)Set tsIP = fsIP.OpenTextFile("ip.txt",1,true)For i=0 To lineCount-1 Step 1rem 连接Linux并输入密码ipArr(i)=tsIP.ReadLineWScript.Sleep 500WshShell.SendKeys "ssh "&info(0)+"@"&ipArr(i)WshShell.SendKeys "{ENTER}"WScript.Sleep 500 WshShell.SendKeys "yes"WshShell.SendKeys "{ENTER}"WScript.Sleep 500WshShell.SendKeys info(1)WshShell.SendKeys "{ENTER}"WScript.Sleep 500rem 读取配置文件并复写ipSet fsConfig = CreateObject("scripting.filesystemobject")'Do Until...Loop是循环结构的一种'Do Until tsIP.AtEndOfStream' 调用AddLine过程混合不改动的config配置与改动的IP信息到临时文件' PS,在VBS中,sub是子程序,function是函数,统称为过程'MsgBox "IPADDR="&ipArr(i)Call AddLine("config.txt",5,"IPADDR="&ipArr(i))'LoopSet tsConfig = fsConfig.OpenTextFile("tempConfig.txt",1,true)contents = tsConfig.readallrem 进入到待改写的目录,覆盖数据' 调用ConfigFile过程输入配置信息到指定文件Call ConfigFile(info(2),info(3),contents)WshShell.SendKeys "systemctl restart network"WshShell.SendKeys "{ENTER}"rem 退出WScript.Sleep 3000 WshShell.SendKeys "exit"WshShell.SendKeys "{ENTER}" WScript.Sleep 1000NexttsIP.close'strPath: 被插入的文件'intLine: 在第几行后插入数据'strInput: 插入的数据内容Function AddLine(strPath,intLine,strInput)Dim fsoSet fso = CreateObject("Scripting.FileSystemObject")'以只读的方式打开文件Set ReadFile = fso.OpenTextFile(strPath,1,true)'以只写的方式打开文件Set WriteFile = fso.OpenTextFile("tempConfig.txt",2,true)'如果当前的指针不在整个文档的末尾,读取文本的整行内容Do Until ReadFile.AtEndOfStreamWriteFile.WriteLine ReadFile.ReadLineintLine = intLine - 1'判断光标是否已达到指定行,达到则退出函数 If intLine = 0 ThenWriteFile.WriteLine strInputEnd IfLoopReadFile.Close WriteFile.Close Set fso = Nothing End Function'strPath: 被配置文件的路径'fileName: 被配置文件名'contents: 需要配置的信息Function ConfigFile(strPath,fileName,contents)WScript.Sleep 500 WshShell.SendKeys "cd "&strPathWshShell.SendKeys "{ENTER}"WshShell.SendKeys "> "&fileNameWshShell.SendKeys "{ENTER}"WScript.Sleep 500 WshShell.SendKeys "vi "&fileNameWshShell.SendKeys "{ENTER}"WScript.Sleep 500 WshShell.SendKeys "i"WshShell.SendKeys contentsWshShell.SendKeys "{ESC}"WScript.Sleep 500WshShell.SendKeys ":wq"WshShell.SendKeys "{ENTER}"WScript.Sleep 500End Function

执行

复制代码下来保存为.vbs因为代码中用的是相对路径,在vbs同级文件夹新建userInfo.txt,ip.txt,config.txt,下面是举例,请根据自己的情况配置双击.vbs运行就会调用控制台执行

注意:vbs脚本会占用Windows输入设备,请等程序运行完毕再进行其他操作

参考资料

VS调试Visual Basic Script

如何用Visual Studio调试 VBS、JScript等脚本_穿女装的程序员的博客-CSDN博客

vbs没有方法可以直接在配置文件config.txt中插入IP信息,采取了折中的方法,同时参考了以下的函数

vbs 读取txt是读取特定的行

VBS 如何向Txt文档中指定行插入内容_weixin_33834628的博客-CSDN博客

vbs如何定义动态数组下标为变量Microsoft VBScript 编译器错误 (0x800A0402) 缺少整型常数的解决办法-网有卖

vbs字符串拼接

VB字符串拼接_陌苏湮雪的博客-CSDN博客

VBS过程解释

VBS基础篇 - VBScript过程(使用sub 与 Function定义函数)_vbs_脚本之家

VBS循环结构

VBS基础篇 - 循环(for、Do、While)_vbs_脚本之家

如果觉得《VBS脚本自动化-利用Windows远程连接Linux虚拟机并批量修改某配置文件信息》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。