zicht / z-plugin-env
Z的'env'插件
2.2.5
2022-02-15 19:17 UTC
Requires
- php: >=5.3.3
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文档以获取有关如何利用此功能的更多信息。
维护者
- Jochem Klaver jochem@zicht.nl