Deployment Linux在没有SSH/Telnet的远程Windows服务器上执行命令

Deployment Linux在没有SSH/Telnet的远程Windows服务器上执行命令,deployment,jenkins,continuous-integration,cross-platform,remote-access,Deployment,Jenkins,Continuous Integration,Cross Platform,Remote Access,我正在建立一个詹金斯服务器。部署步骤之一是在生产服务器上执行命令,将经过UAT测试的工件下载到所需的文件夹中。Jenkins在CentOS Linux上运行,而生产服务器在运行Windows 2008 R2 但是,我的客户机不希望在生产服务器中安装任何软件,因此无法通过SSH执行命令。该客户以前在使用Telnet时有过不愉快的经历。这是一个不安全的服务,已在服务器上禁用 除了使用SSH和Telnet,还有其他方法在远程机器上执行命令吗?我正在考虑创建一个由特定事件触发的任务,但是如何在服务器上远

我正在建立一个詹金斯服务器。部署步骤之一是在生产服务器上执行命令,将经过UAT测试的工件下载到所需的文件夹中。Jenkins在CentOS Linux上运行,而生产服务器在运行Windows 2008 R2

但是,我的客户机不希望在生产服务器中安装任何软件,因此无法通过SSH执行命令。该客户以前在使用Telnet时有过不愉快的经历。这是一个不安全的服务,已在服务器上禁用


除了使用SSH和Telnet,还有其他方法在远程机器上执行命令吗?我正在考虑创建一个由特定事件触发的任务,但是如何在服务器上远程引发该事件似乎不是一件容易的工作

我可以想出四种不同的解决方案:

  • 在生产机器上拥有一个网络共享,Jenkins服务器可以将触发器文件放入其中。有一个检查该文件并触发下载的计划任务

  • 让生产机器上的计划任务轮询Jenkins服务器以获取新文件。Powershell可用于查询Jenkins REST api

  • 如果生产机器有IIS,让Jenkins触发asp.net脚本,向cgi脚本发送表单,或上载触发器文件。CentOS上的curl和wget将在这方面有所帮助

  • 作为最后手段,在混合中添加另一台windows计算机。在上面安装SSH。从Jenkins到新机器使用SSH,然后从新机器到生产机器使用powershell

  • 如果您决定执行步骤4,我将使用powershell在远程机器上运行命令

    默认情况下,PS2.0安装在Windows 2008 R2上

    下面是我如何做的一个例子

    $username = 'user'
    $password = 'password'
    $appHost = 'hostname'
    $dest = 'C:\Unpack\'
    $archive = "C:\Releases\new release.7z"
    
    $securePass = ConvertTo-SecureString -AsPlainText $password -Force
    $cred = New-Object System.Management.Automation.PSCredential -ArgumentList $username,$securePass
    
    "Create PowerShell Session"
    $appSession = New-PSSession -ComputerName $appHost -Credential $cred -Authentication CredSSP 
    
    invoke-command -session $appSession -scriptblock { param($dest,$archive) & 'C:\Program Files (x86)\7-Zip\7z.exe' x -bd -aoa """-oc:\$dest""" """c:\$dest\$archive"""} -args $dest,$archive
    $remotelastexitcode = invoke-command -session $appSession -ScriptBlock { $lastexitcode }
    if ( $remotelastexitcode -ne 0 )
    {
      "Archive Extraction Failed. Is a file locked or open?"
      exit -1
    }
    

    @凯特·格雷戈里,谢谢你批改课文!这怎么能在Linux机器上运行呢?谢谢Stuart,你提供了很多选择!我喜欢选项3,并将尝试一下。