我正试图在Linux上的云端远程Windows机器上执行bat文件。 bat文件启动selenium服务器,然后运行我的selenium测试。我无法在该机器上启动selenium RC服务器。我尝试使用Telnet,但问题是当telnet会话关闭时,RC服务器端口也被关闭。作为我的代码,我的代码必须启动服务器,所以我尝试使用ANT telnet任务,并以端口关闭的两种方式执行telnet的shell脚本。
我读过Open SSH,psexec for linux和cygwin。但我没有得到如何使用这些,他们将解决我的问题。
我试图启动一个启动服务器的服务但是在这种方法中我没有看到浏览器所有测试都在后台运行,因为我的脚本需要屏幕截图浏览器可见性。
现在我的问题是使用什么,哪个更适合我的工作。 而我所选择的应该由shell,ant或php代码执行。
提前致谢。
答案 0 :(得分:15)
让我们来看看你提到的各种选择:
我建议您从Bitvise查看WinSSHD。它是SSH服务器的OpenSSH实现,但它不是开源的。每个许可证大约100美元,您需要在每台服务器上获得许可证。但是,它是一个强大的实现,并具有SSH提供的所有功能。
您可以查看CoSSH这是一个Cygwin实用程序和OpenSSH服务器包。这是免费的,并且都是开源的,但如果您想要一种简单的设置方式,则需要支付Advanced Administrator Console的费用。您不需要高级管理员控制台,因为您可以使用Cygwin设置所有内容,它还附带一个基本控制台来帮助。
答案 1 :(得分:8)
我更喜欢使用cygwin并使用SSH然后登录到Windows机器来执行命令。请注意,默认情况下,cygwin没有安装OpenSSH。
在Windows机器上运行SSH后,可以从Linux机器上运行命令,如下所示:
ssh user@windowsmachine 'mycommand.exe'
您还可以设置ssh authentication键,这样您每次都不需要输入密码。
答案 2 :(得分:1)
我已经成功通过Debian Buster上的EXPECT在W2K3上运行了远程命令。这是我的脚本:
#!/usr/bin/expect
#
# execute the script in the following manner:
#
# <script> <vindoze> <user> <password> <command>
#
#
set timeout 200
set hostname [lindex $argv 0]
set username [lindex $argv 1]
set password [lindex $argv 2]
set command [lindex $argv 3]
spawn telnet $hostname
expect "login:"
send "$username\r"
expect "password:"
send "$password\r"
expect "C:*"
send "dir c:\\tasks\\logs \r"
# send $command
expect "C:*"
send "exit\r\r\r"
请记住,您需要启用Win计算机的TELNET服务,并且通过身份验证的用户必须是TelnetClients内置Win组的成员。或者像大多数Win LazyMins一样-向Admin用户进行身份验证;)
我使用类似的“期望”脚本来自动收集和备份支持CLI的网络设备,例如Allied Telesyn,Cisco,Planet等。
干杯, LAZA
答案 3 :(得分:-3)
不是一种非常安全的方式,但如果您有一个正在运行的Web服务器,则可以使用PHP或ASP来触发系统命令。只需隐藏www.myserver.com/02124309c9867a7616972f52a55db1b4.php下的thgat脚本。并确保命令是固定的,写在代码中,而不是通过参数打开...