我想建立一个硒(Java)脚本,它通过RDP从本地机器连接到虚拟机,并且需要在连接到虚拟机后从当前脚本运行一些命令。我面临的问题是,本地机器的控制不会进入虚拟机,因为我无法在其中运行任何脚本或命令。请让我知道如何将控制权从本地机器传递到虚拟机。要成为更具体的是,我的本地机器上运行的selenium脚本能够在虚拟机中执行任何操作,该虚拟机由本地机器上运行的相同selenium脚本打开。如何通过任何脚本语言将本地机器的控制权交给虚拟机?
1
A
回答
0
如果你的VM是linux,你可以通过使用jcraft来控制。
注意:您应该启用SSH并且本地IP访问VM中的22端口。从Maven的中央回购
下载jcraft https://mvnrepository.com/artifact/com.jcraft/jsch
public class ssh { /** * JSch Example Tutorial * Java SSH Connection Program */ @Test public static void connection(String host,String user, String password, String command) { try{ java.util.Properties config = new java.util.Properties(); config.put("StrictHostKeyChecking", "no"); JSch jsch = new JSch(); Session session=jsch.getSession(user, host, 22); session.setPassword(password); session.setConfig(config); session.connect(); System.out.println("Connected"); Channel channel=session.openChannel("exec"); ((ChannelExec)channel).setCommand(command); channel.setInputStream(null); ((ChannelExec)channel).setErrStream(System.err); InputStream in=channel.getInputStream(); channel.connect(); byte[] tmp=new byte[1024]; while(true){ while(in.available()>0){ int i=in.read(tmp, 0, 1024); if(i<0)break; System.out.print(new String(tmp, 0, i)); } if(channel.isClosed()){ System.out.println("exit-status: "+channel.getExitStatus()); break; } try{Thread.sleep(1000);}catch(Exception ee){} } channel.run(); channel.disconnect(); session.disconnect(); System.out.println("DONE"); }catch(Exception e){ } } }
提供您的服务器,用户名,密码的主机地址连接你的虚拟机,并命令你想在其中执行。
(实施例)
public class start{ static WebDriver driver; public static void main(String[], args) { //connect your VM by using method from ssh class ssh.connection("10.200.10.1", "userName", "password", "sudo service jenkins start"); //execute selenium command once application started driver.findElement(By.xpath(".//*[@id='usr']")).sendKeys("Stack"); //execute another command inside VM ssh.connection("10.200.10.1", "userName", "password", "cd /var/lib/jenkins/workspace && ls"); } }
+0
感谢您的答案先生。但我的虚拟机是Windows服务器2008/2016机器。在这种情况下,你可以让我知道如何执行上面的内容。 –
0
这可能是不可能的。您的脚本可能会调用RDP协议来调用虚拟机,但虚拟机是独立的实例,它拥有自己的内核和用户空间。您运行的脚本将位于不同的内核和用户空间中。两者不共享相同的内核和用户空间来访问空间之间的值。
相关问题
- 1. 使用Python脚本控制虚拟机
- 2. 虚拟机中的版本控制
- 3. 虚拟主机打开本地主机
- 4. 用任何语言控制“虚拟网络浏览器”
- 5. 通过虚拟机在本地主机上运行码头容器
- 6. 从本地虚拟机访问虚拟主机
- 7. 将虚拟机的副本复制到其他虚拟机的天蓝
- 8. 如何通过wifi连接到虚拟域名的本地主机?
- 9. 将本地主机更改为虚拟机中的公共IP
- 10. 本地主机上有两台服务器的虚拟主机
- 11. 通过虚拟主机访问本地Drupal安装
- 12. 使虚拟主机通过本地网络可用iphone
- 13. 从php脚本显示虚拟主机?
- 14. BTrace脚本杀死Java虚拟机Thread
- 15. 如何将http请求从Docker发送到本地主机或虚拟机
- 16. 是否可以通过我的本地机器访问/隧道通过我的虚拟机(vmware融合)?
- 17. 如何控制Hyper-V虚拟机控制台中的进程?
- 18. 通过虚拟主机
- 19. 虚拟机关机时如何找出Hyper-V虚拟机的MAC地址?
- 20. 连接到本地虚拟机
- 21. 虚拟机和本地网络
- 22. 如何在虚拟主机上连续运行PHP脚本?
- 23. silverlight:clientaccesspolicy.xml任何本地主机?
- 24. 虚拟机停止时的Azure虚拟机软件成本
- 25. Vagrant:如何通过guest虚拟机shell中的命令在主机上运行脚本?
- 26. 如何使用虚拟主机设置本地Docker开发?
- 27. 如何在虚拟机中创建本地kubernates群集?
- 28. 如何在Mac上设置虚拟主机(本地)
- 29. 如何从ESXi主机控制台连接ESXi虚拟机控制台
- 30. 访问虚拟主机上的Ubuntu 12.04上的本地主机
而不是硒保持在本地并连接到虚拟机,我们可以直接在虚拟机中完成设置吗? –
你能详细解释剧本吗? – Murthi
我想要一个硒脚本,它会自动检出虚拟机(VD)并通过RDP连接到IP地址,并在虚拟机中启动jenkins从节点。 –