summaryrefslogtreecommitdiffstats
path: root/.config/zsh/oh-my-zsh/plugins/knife_ssh
diff options
context:
space:
mode:
authorLibravatarLibravatar Biswakalyan Bhuyan <biswa@surgot.in> 2025-02-13 14:13:49 +0530
committerLibravatarLibravatar Biswakalyan Bhuyan <biswa@surgot.in> 2025-02-13 14:13:49 +0530
commit8a2e1006b3b272126332aa064f3ad95387129544 (patch)
tree944c80ac612a65980d94a54ba11b6c7102037ecf /.config/zsh/oh-my-zsh/plugins/knife_ssh
parentdcbb16d8b08ff5956abef5e6478b59df2e93ad35 (diff)
downloaddotfiles-master.tar.gz
dotfiles-master.tar.bz2
dotfiles-master.zip
new dot filesHEADmaster
Diffstat (limited to '.config/zsh/oh-my-zsh/plugins/knife_ssh')
-rw-r--r--.config/zsh/oh-my-zsh/plugins/knife_ssh/README.md14
-rw-r--r--.config/zsh/oh-my-zsh/plugins/knife_ssh/knife_ssh.plugin.zsh18
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