zicht/z-plugin-env

2.2.5 2022-02-15 19:17 UTC

This package is auto-updated.

Last update: 2024-09-16 00:53:42 UTC


README

此插件提供了一组用于处理远程SSH环境的实用工具和任务

用法

要访问远程环境,您可以使用envs设置来组织它们

plugins: ['env']

envs:
    testing: 
        ssh: foo@bar
        root: /var/www/my-site

现在您可以通过运行以下命令来SSH连接到此远程环境

z env:ssh testing

除非您已经与该环境共享了您的公钥,否则您将被要求输入您的SSH密码。我建议您与远程环境共享您的公钥,这样您就不必每次插件尝试访问它时都提供密码。当然,用密码短语保护您的密钥文件是明智的。

共享您的密钥

使用z env:ssh-copy-id可以将您的密钥复制到远程环境。当然,这是一个方便的命令,它只是简单地将您的公钥追加到远程用户的~/.ssh/authorized_keys文件。它不会关心您的ssh是否已经“可连接”。

执行远程命令

您可以通过访问shell来执行远程命令

z env:ssh testing

在远程的根目录下直接运行命令

z env:ssh testing "rm -rf ./cache"

从您的Z文件访问远程环境

您有几种方法可以做到这一点。最直观的方法是实现自己的ssh命令

envs:
    testing:
        ssh: foo@bar
        root: /var/www/my-site

tasks:
    flush-cache:
        args:
            target_env: ?
        do: ssh $(envs[target_env].ssh) "rm -rf $(path(envs[target_env].root, cache))"

您还可以使用所谓的“装饰器”来包装远程shell中的命令。这更简短,但特别有用,因为它不需要在命令周围加引号(这可能会变得相当复杂),并且ssh函数会尊重您的当前shell。

tasks:
    flush-cache:
        args:
            target_env: ?
        do: @(sh ssh(target_env)) rm -rf $(path(envs[target_env].root, cache))

注意:在内部,命令的内容被送入由ssh函数调用生成的shell的STDIN。您可以使用z z:eval 'ssh("production")'来验证这一点。这将显示在SSH中执行的当前shell SHELL(默认为/bin/bash -e,并在调试模式下添加x标志)。这实际上创建了一个管道,命令的内容会流经该管道。您可以混合使用其他shell(例如远程mysql客户端)。阅读Z文档以获取有关如何利用此功能的更多信息。

维护者