【问题标题】:Run perl script on remote server在远程服务器上运行 perl 脚本
【发布时间】:2015-02-04 23:32:43
【问题描述】:

是否可以从 Windows 在该服务器上运行位于远程服务器上的 perl 脚本?每次在 Windows 上做某事时,我都想在远程服务器上完成一项工作。

【问题讨论】:

    标签: perl remote-server


    【解决方案1】:

    你必须让某物监听指令来运行脚本,然后你必须发送指令。

    您可以采取多种方法,包括:

    • 运行 SSH 服务器,然后从 Windows 机器上的 ssh 客户端连接到它
    • 运行 HTTP 服务器,通过 FastCGI 运行脚本,然后从 curl 或 Windows 机器上的浏览器请求它的 URL
    • 编写自定义协议,侦听套接字,然后编写在 Windows 机器上运行的自定义客户端

    【讨论】:

    • psexec 是 ssh 的合理替代方案(在 Windows 机器上)
    • 当 PowerShell 6 可用时,它可以在 Linux/UNIX 系统上运行。 Invoke-Command 可以在远程机器上运行命令。 github.com/PowerShell/PowerShell
    【解决方案2】:

    绝对的。

    假设服务器正在运行sshd,您可以使用plink 从Windows 在服务器上运行命令。

    plink user@a.domain.ext echo hi
    

    这会将“hi\n”打印到标准输出。

    /path/to/perl/script 替换为上面的echo,并将hi 替换为脚本所需的任何命令行参数。

    plink 在这里可用:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

    多次执行此操作的个人注意事项是,运行 perl 脚本的环境远不如通过完整 SSH 会话登录并交互式运行命令时所体验的环境完整。您通常期望的许多环境变量都未设置。

    例如,在上面的命令中使用“set | wc -l”只定义了 39 个环境变量,但是从交互式 SSH 会话中定义了 57 个环境变量。您必须确保您的 perl 脚本不依赖于尚未设置的环境变量。例如,您可能需要对其使用的任何模块使用完整路径,或者在 shebang 行中使用 -I 标志,因为 @INC 可能不是您所期望的。

    【讨论】:

    • 假设所述服务器正在运行 sshd 。
    猜你喜欢
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多