Executing exe or bat file on remote windows machine from *nix

前端 未结 4 670
借酒劲吻你
借酒劲吻你 2021-02-06 02:21

I am trying to execute a bat file on remote windows machine on cloud from my Linux. The bat files starts selenium server and then my selenium tests are run. I am not able to sta

相关标签:
4条回答
  • 2021-02-06 02:32

    Not a very secure way, but if you have a running webserver you can use PHP or ASP to trigger a system command. Just hide thgat script under www.myserver.com/02124309c9867a7616972f52a55db1b4.php or something. And make sure the command are fixed written in the code, not open via parameter ...

    0 讨论(0)
  • 2021-02-06 02:38

    Let's go through the various options you mentioned:

    • psexec: This is pretty much a PC only thing. Plus, you must make sure that newer Windows machines can get through the UAC that are setup by default. UAC is the thing you see all the time on Vista and Windows 7 when you try to do something that requires administrator's privileges. You can try something called winexe which is a Linux program that can do the psexec protocol, but I've had problems getting it to work.
    • OpenSSH: There are two main flavors of SSH, and Open SSH is the one used by the vast majority of sites. SSH has several advantages over other methods:
      • SSH is secure: Your network traffic is encrypted.
      • SSH can be password independent: You can setup SSH to use private/public keys. This way, you don't even have to know the password on the remote server. This makes it more secure since you don't have passwords being stored on various systems. And, in many Windows sites, passwords have to be changed every month or so or the account is locked.
      • SSH can do more than just execute remote commands: There are two sub-protocols on SSH called SCP and SFTP. These allow you to transfer files between two machines. Since they work over SSH, you get all of the advantages of SSH including encrypted packets, and public/private key protection.
      • SSH is well implemented in the Unix World: You'll find SSH clients built into Ant, Maven, and other build tools. Programs like CVS, Subversion, and Git can work over SSH connections too. Unfortunately, the Windows World operates in a different space time dimension. To use SSH on a Windows system requires third party software like Cygwin.
    • Cygwin: Cygwin is sort of an odd beast. It's a layer on top of Windows that allows many of the Unix/GNU libraries to work over Windows. It was originally developed to allow Unix developers to run their software on Windows DOS systems. However, Cygwin now contains a complete Unix like system including tools such as Perl and Python, BASH shell, and many utilities such as an SSH server. Since Cygwin is open source, you can download it for free and run SSH server. Unfortunately, I've had problems with Cygwin's SSH server. Another issue: If you're running programs remotely, you probably want to run them in a Windows environment and not the Cygwin environment.

    I recommend that you look at WinSSHD from Bitvise. It's an OpenSSH implementation of the SSH Server, but it's not open source. It's about $100 per license and you need a license on each server. However, it's a robust implementation and has all of the features SSH has to offer.

    You can look at CoSSH which is a package of Cygwin utilities and OpenSSH server. This is free and all open source, but if you want an easy way of setting it up, you have to pay for the Advanced Administrator Console. You don't need the Advanced Administrator Console since you can use Cygwin to set everything up, and it comes with a basic console to help.

    0 讨论(0)
  • 2021-02-06 02:46

    I've succeeded to run remote command on W2K3 via EXPECT on Debian Buster. Here is the script of mine:

    #!/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"
    

    Bear in mind that you need to enable TELNET service of the Win machine and also the user which you are authenticated with must be member of TelnetClients built-in Win group. Or as most of the Win LazyMins do - authenticate with Admin user ;)

    I use similar "expect" script for automated collecting & backup configuration of CLI enabled network devices like Allied Telesyn, Cisco, Planet etc.

    Cheers, LAZA

    0 讨论(0)
  • 2021-02-06 02:52

    I prefer to use cygwin and use SSH to then log in to the windows machine to execute commands. Be aware that, by default, cygwin doesn't have OpenSSH installed.

    Once you have SSH working on the windows machine you can run a command on it from the Linux machine like this:

    ssh user@windowsmachine 'mycommand.exe'
    

    You can also set up ssh authentication keys so that you don't need to enter a password each time.

    0 讨论(0)
提交回复
热议问题