summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeorg2021-12-02 22:29:26 +0100
committerGeorg2021-12-02 22:29:26 +0100
commit209f09dc5cde22b913217812fe3dca5c12241489 (patch)
tree51b816bf4a5c262d50c5e376ff8a110e0b1f3433
parent6649ec5e45d75f5fcfab0f258f01a1f0696087d4 (diff)
downloadsystem-209f09dc5cde22b913217812fe3dca5c12241489.tar.gz
system-209f09dc5cde22b913217812fe3dca5c12241489.tar.bz2
system-209f09dc5cde22b913217812fe3dca5c12241489.zip
fish greeting with ssh-agent magic
Signed-off-by: Georg <georg@lysergic.dev>
-rw-r--r--scripts/fish/conf.d/greeting.fish3
-rw-r--r--scripts/fish/conf.d/sshagent.fish16
-rw-r--r--scripts/fish/functions/__ssh_agent_is_key_added.fish9
-rw-r--r--scripts/fish/functions/__ssh_agent_is_started.fish15
-rw-r--r--scripts/fish/functions/__ssh_agent_start.fish6
5 files changed, 49 insertions, 0 deletions
diff --git a/scripts/fish/conf.d/greeting.fish b/scripts/fish/conf.d/greeting.fish
new file mode 100644
index 0000000..9d584e4
--- /dev/null
+++ b/scripts/fish/conf.d/greeting.fish
@@ -0,0 +1,3 @@
+function fish_greeting
+echo "Welcome!"
+end
diff --git a/scripts/fish/conf.d/sshagent.fish b/scripts/fish/conf.d/sshagent.fish
new file mode 100644
index 0000000..c60b360
--- /dev/null
+++ b/scripts/fish/conf.d/sshagent.fish
@@ -0,0 +1,16 @@
+# original from https://github.com/danhper/fish-ssh-agent/
+# adapted to include ssh-add check
+function sshagent
+ if test -z "$SSH_ENV"
+ set -xg SSH_ENV $HOME/.ssh/environment
+ end
+
+ if not __ssh_agent_is_started
+ __ssh_agent_start
+ end
+
+ if not __ssh_agent_is_key_added
+ echo "You need to authenticate."
+ ssh-add -q ~/.ssh/id_lysergic
+ end
+end
diff --git a/scripts/fish/functions/__ssh_agent_is_key_added.fish b/scripts/fish/functions/__ssh_agent_is_key_added.fish
new file mode 100644
index 0000000..63951fe
--- /dev/null
+++ b/scripts/fish/functions/__ssh_agent_is_key_added.fish
@@ -0,0 +1,9 @@
+# custom
+function __ssh_agent_is_key_added -d "checks if fingerprint is already present"
+ set SSH_FP (ssh-keygen -lf ~/.ssh/id_lysergic-cert.pub | awk '{print $2}')
+ if ! test -z "$SSH_FP"
+ and ssh-add -l | grep -q "$SSH_FP"
+ else
+ return 1
+ end
+end
diff --git a/scripts/fish/functions/__ssh_agent_is_started.fish b/scripts/fish/functions/__ssh_agent_is_started.fish
new file mode 100644
index 0000000..a457102
--- /dev/null
+++ b/scripts/fish/functions/__ssh_agent_is_started.fish
@@ -0,0 +1,15 @@
+# from https://github.com/danhper/fish-ssh-agent/
+function __ssh_agent_is_started -d "check if ssh agent is already started"
+ if begin; test -f $SSH_ENV; and test -z "$SSH_AGENT_PID"; end
+ source $SSH_ENV > /dev/null
+ end
+
+ if begin; test -z "$SSH_AGENT_PID"; and test -z "$SSH_CONNECTION"; end
+ return 1
+ end
+
+ ssh-add -l > /dev/null 2>&1
+ if test $status -eq 2
+ return 1
+ end
+end
diff --git a/scripts/fish/functions/__ssh_agent_start.fish b/scripts/fish/functions/__ssh_agent_start.fish
new file mode 100644
index 0000000..58a762d
--- /dev/null
+++ b/scripts/fish/functions/__ssh_agent_start.fish
@@ -0,0 +1,6 @@
+# from https://github.com/danhper/fish-ssh-agent/
+function __ssh_agent_start -d "start a new ssh agent"
+ ssh-agent -c | sed 's/^echo/#echo/' > $SSH_ENV
+ chmod 600 $SSH_ENV
+ source $SSH_ENV > /dev/null
+end