vbs解决Windows命令行无法交互输入的问题

近期有一个开发任务
需求:在pc上运行脚本直接更新zynq cpu1程序。
背景 :cpu0跑了linux系统,cpu1跑了一个实时操作系统,linux的启动bios实现从flash读取程序加载cpu1
已经实现: 在linux输入命令行能够更新flash中的cpu1程序,重启系统就可以实现cpu1的程序更新运行。
需要解决的问题: 需要连接ssh然后拷贝程序到linux目录下,再运行flashcp指令更新,再运行reboot重启系统;因为在cpu1调试的时候需要频繁的更新cpu1程序,而用此方法更新需要很多步骤,很容易出现遗漏或错误,并且繁琐。
解决方法: pc端直接运行一个批处理就能实现这整个的操作。

具体实现: 采用.bat脚本
1,脚本采用ssh把文件传递到linux文件夹中;
2,利用ssh登录系统
3,执行flash更新命令,更新完成后reboot重启
问题: 登录ssh需要输入密码,而bat不具有交互式输入命令。
解决:采用vbs脚本来实现

Set ws = createobject("wscript.shell")
ws.run "cmd.exe" '运行cmd
wscript.sleep 2000 '2s等待cmd起来
ws.AppActivate "cmd.exe" '确保下面命令输入都是在cmd中输入
ws.sendkeys "scp -rp Motion.bin [email protected]:/tmp{enter}" '利用ssh拷贝文件到linux系统中
ws.sendkeys "root{enter}" '密码确认
ws.sendkeys "ssh [email protected]{enter}"'登录ssh
ws.sendkeys "root{enter}" '密码确认
ws.sendkeys "flashcp /tmp/Motion.bin /dev/mtd2  -v{enter}" 'linux falshcp flash更新命令
ws.sendkeys "reboot{enter}"'重启命令

注:如果更换ramdisk出现HOST警告则可能是openssh对连接的主机保存了认证,删除掉C:\Users\Administrator.ssh\known_hosts文件即可

采用vbs把命令一条条的输入到cmd中,跟一次性把命令敲入cmd的效果是一样的,但是直接bat脚本无法实现交互式输入

猜你喜欢

转载自blog.csdn.net/weixin_43369409/article/details/84876952