diff options
author | 2025-02-13 14:13:49 +0530 | |
---|---|---|
committer | 2025-02-13 14:13:49 +0530 | |
commit | 8a2e1006b3b272126332aa064f3ad95387129544 (patch) | |
tree | 944c80ac612a65980d94a54ba11b6c7102037ecf /.config/zsh/oh-my-zsh/plugins/knife_ssh | |
parent | dcbb16d8b08ff5956abef5e6478b59df2e93ad35 (diff) | |
download | dotfiles-master.tar.gz dotfiles-master.tar.bz2 dotfiles-master.zip |
Diffstat (limited to '.config/zsh/oh-my-zsh/plugins/knife_ssh')
-rw-r--r-- | .config/zsh/oh-my-zsh/plugins/knife_ssh/README.md | 14 | ||||
-rw-r--r-- | .config/zsh/oh-my-zsh/plugins/knife_ssh/knife_ssh.plugin.zsh | 18 |
2 files changed, 32 insertions, 0 deletions
diff --git a/.config/zsh/oh-my-zsh/plugins/knife_ssh/README.md b/.config/zsh/oh-my-zsh/plugins/knife_ssh/README.md new file mode 100644 index 0000000..cb836b7 --- /dev/null +++ b/.config/zsh/oh-my-zsh/plugins/knife_ssh/README.md @@ -0,0 +1,14 @@ +# knife_ssh plugin + +This plugin adds a `knife_ssh` function as well as completion for it, to allow +connecting via ssh to servers managed with [Chef](https://www.chef.io/). + +To use it, add `knife_ssh` to the plugins array in your zshrc file: +```zsh +plugins=(... knife_ssh) +``` + +The plugin creates a cache of the Chef node list via `knife`, and stores it +in `$HOME/.knife_comp~`, when first triggering knife_ssh completion. + +**Requirements:** `knife` has to be installed. diff --git a/.config/zsh/oh-my-zsh/plugins/knife_ssh/knife_ssh.plugin.zsh b/.config/zsh/oh-my-zsh/plugins/knife_ssh/knife_ssh.plugin.zsh new file mode 100644 index 0000000..dc425a3 --- /dev/null +++ b/.config/zsh/oh-my-zsh/plugins/knife_ssh/knife_ssh.plugin.zsh @@ -0,0 +1,18 @@ +function knife_ssh() { + grep -q $1 ~/.knife_comp~ 2> /dev/null || rm -f ~/.knife_comp~ + ssh $(knife node show $1 | awk '/IP:/{print $2}') +} + +_knife_ssh() { + if hash knife 2>/dev/null; then + if [[ ! -f ~/.knife_comp~ ]]; then + echo "\nGenerating ~/.knife_comp~..." >&2 + knife node list > ~/.knife_comp~ + fi + compadd $(< ~/.knife_comp~) + else + echo "Could not find knife" >&2 + fi +} + +compdef _knife_ssh knife_ssh |