[PATCH 2/9] Implement propagate to send ssh key file to remote server
Louis Bouchard
louis.bouchard at ubuntu.com
Wed Aug 20 04:11:13 PDT 2014
Signed-off-by: Louis Bouchard <louis.bouchard at ubuntu.com>
---
debian/kdump-config | 69 ++++++++++++++++++++++++++++++++++++++--------
debian/kdump-tools.default | 2 ++
2 files changed, 59 insertions(+), 12 deletions(-)
diff --git a/debian/kdump-config b/debian/kdump-config
index 4e283ab..b0164dd 100755
--- a/debian/kdump-config
+++ b/debian/kdump-config
@@ -24,6 +24,7 @@
# * unloading a kdump kernel
# * saving a vmcore kdump kernel
# * determining the status of kdump
+# * propagate ssh key to remote host
PATH=/bin:/usr/bin:/sbin:/usr/sbin
NAME=${NAME:="kdump-config"}
@@ -61,17 +62,18 @@ function kdump_help()
{
cat <<EOHELP
Usage:
-kdump-config {help|test|show|status|load|unload|savecore}"
- help - print this page
- test - Do a dry-run of the load command. Show the kernels and
- parameters that will be used and echo the kexec command.
- The kexec command will not be executed.
- show - Show kdump status, kexec command, and any current parameters.
- status - evaluate /sys/kernel/kexec_crash_loaded and print a message
- load - Locate the kdump kernel, debug kernel, and establish links for
- makedumpfile. Then load the kdump kernel using kexec
- unload - unload the kdump kernel using kexec
- savecore - use previously made links to save /proc/vmcore
+kdump-config {help|test|show|status|load|unload|savecore|propagate}"
+ help - print this page
+ test - Do a dry-run of the load command. Show the kernels and
+ parameters that will be used and echo the kexec command.
+ The kexec command will not be executed.
+ show - Show kdump status, kexec command, and any current parameters.
+ status - evaluate /sys/kernel/kexec_crash_loaded and print a message
+ load - Locate the kdump kernel, debug kernel, and establish links for
+ makedumpfile. Then load the kdump kernel using kexec
+ unload - unload the kdump kernel using kexec
+ savecore - use previously made links to save /proc/vmcore
+ propagate - Send public ssh key to remote host for passwordless connection
EOHELP
}
@@ -430,6 +432,46 @@ function kdump_save_core_to_ssh()
fi
}
+function kdump_propagate()
+{
+KDUMP_COREDIR=${KDUMP_COREDIR:=/var/crash}
+ KDUMP_SSH_KEY="${SSH_KEY:=/root/.ssh/kdump_id_rsa}"
+ KDUMP_REMOTE_HOST="$SSH"
+
+ # ssh key propagation is only needed
+ # if remote ssh dump is configured
+ if [ -z $KDUMP_REMOTE_HOST ];then
+ log_failure_msg "$NAME: Remote ssh dump is not configured. No reason to propagate"
+ logger -t $NAME "Remote ssh dump is not configured. No reason to propagate"
+ return 1;
+ fi
+
+ # Verify if the provided key exists and create it if needed
+ if [ -f $KDUMP_SSH_KEY ];then
+ echo "Using existing key $KDUMP_SSH_KEY"
+ else
+ echo "Need to generate a new ssh key..."
+ /usr/bin/ssh-keygen -t rsa -f $KDUMP_SSH_KEY -N "" 2>&1 > /dev/null
+ fi
+
+ KDUMP_SSH_USER=${KDUMP_REMOTE_HOST%@*}
+ KDUMP_SSH_TARGET=${KDUMP_REMOTE_HOST#*@}
+
+ ssh-copy-id -i $KDUMP_SSH_KEY $KDUMP_SSH_USER@$KDUMP_SSH_TARGET &>/dev/null
+ ERROR=$?
+
+ if [ $ERROR -ne 0 ];then
+ log_failure_msg "$NAME: $KDUMP_SSH_KEY failed to be sent to $KDUMP_REMOTE_HOST"
+ logger -t $NAME "$KDUMP_SSH_KEY failed to be sent to $KDUMP_REMOTE_HOST"
+ return 1;
+ else
+ logger -t $NAME "propagated ssh key $KDUMP_SSH_KEY to server $KDUMP_REMOTE_HOST"
+ echo "propagated ssh key $KDUMP_SSH_KEY to server $KDUMP_REMOTE_HOST"
+ return 0;
+ fi
+
+}
+
case "$1" in
@@ -470,11 +512,14 @@ case "$1" in
fi
exit $?
;;
+ propagate)
+ kdump_propagate;
+ ;;
help|-h*|--h*)
kdump_help
;;
*)
- echo "Usage: $0 {help|test|show|status|load|unload|savecore}"
+ echo "Usage: $0 {help|test|show|status|load|unload|savecore|propagate}"
exit 1
;;
esac
diff --git a/debian/kdump-tools.default b/debian/kdump-tools.default
index e5e3bec..d870523 100644
--- a/debian/kdump-tools.default
+++ b/debian/kdump-tools.default
@@ -72,3 +72,5 @@ KDUMP_COREDIR="/var/crash"
# NFS="<nfs mount>"
#
# NFS4="<nfs mount>"
+#
+# SSH_KEY="<path>"
--
1.9.1
More information about the kexec
mailing list