summaryrefslogtreecommitdiff
path: root/bin/menuscripts/keyadd
diff options
context:
space:
mode:
authorRaymaekers Luca <raymaekers.luca@gmail.com>2024-06-06 15:29:58 +0200
committerRaymaekers Luca <raymaekers.luca@gmail.com>2024-06-06 15:29:58 +0200
commitad05cb18f03f3a97a918e090c38ba760147a0bb6 (patch)
tree233097b3ccbf1a4fef18a291d0d8fda3fba34c03 /bin/menuscripts/keyadd
parent1a7e35285abb5db60d2e1544ce0100e82c5d3490 (diff)
parent511b6c1bc9acd9e6029d08a6c448f6e0037755fb (diff)
Merge branch 'main' of db:dotfiles
Diffstat (limited to 'bin/menuscripts/keyadd')
-rwxr-xr-xbin/menuscripts/keyadd62
1 files changed, 62 insertions, 0 deletions
diff --git a/bin/menuscripts/keyadd b/bin/menuscripts/keyadd
new file mode 100755
index 0000000..12519ec
--- /dev/null
+++ b/bin/menuscripts/keyadd
@@ -0,0 +1,62 @@
+#!/bin/sh
+
+log()
+{
+ notify-send -t 1000 "keyadd" "$1"
+ >&2 printf '%s\n' "$1"
+}
+
+SSHFOLDER="$HOME/.ssh"
+
+# Test if can connect to ssh-agent
+ssh-add -l > /dev/null 2>&1
+if [ $? -gt 1 ] # ignore if there are no identities
+then
+ log "Could not connect to agent."
+ exit 1
+fi
+
+delete=0
+if [ "$1" = "-d" ]
+then
+ delete=1
+ shift
+fi
+
+if [ "$1" ]
+then
+ key_pretty="$1"
+else
+ key_pretty="$(find "$SSHFOLDER" -iname "*.pub" |
+ sed "s@$SSHFOLDER/\(.*\)\.pub\$@\1@" |
+ commander -xc)"
+fi
+[ "$key_pretty" ] || exit 1
+key="$SSHFOLDER/$key_pretty"
+
+if [ ! -f "$key" ]
+then
+ log "No key found at: $key"
+ exit 1
+fi
+
+if [ "$delete" -eq 1 ]
+then
+ ssh-add -q -d - < "$key".pub 2> /dev/null &&
+ log "Deleted $key_pretty." ||
+ log "Could not delete."
+ exit
+fi
+
+# check if key is already added
+if ssh-add -l | grep -q "$(ssh-keygen -lf "$key")"
+then
+ log "Key already added."
+ exit 1
+fi
+
+HOST=$(hostnamectl hostname)
+export PASSWORD="keys/$HOST/ssh/$key_pretty"
+export SSH_ASKPASS="sshpass"
+ssh-add -q - < "$key" &&
+ log "Added $key_pretty."