[prev in list] [next in list] [prev in thread] [next in thread]
List: openpkg-cvs
Subject: [CVS] OpenPKG: openpkg-src/openssh ssh-keyman
From: "Ralf S. Engelschall" <rse () openpkg ! org>
Date: 2002-05-31 15:47:42
[Download RAW message or body]
OpenPKG CVS Repository
http://www.openpkg.org/cvsweb/cvsweb.cgi
____________________________________________________________________________
Server: cvs.openpkg.org Name: Ralf S. Engelschall
Root: /e/openpkg/cvs Email: rse@openpkg.org
Module: openpkg-src Date: 31-May-2002 17:47:42
Branch: HEAD Handle: 2002053116474200
Modified files:
openpkg-src/openssh ssh-keyman
Log:
overhaul ssh-keyman by addressing recently popped up issues
Summary:
Revision Changes Path
1.3 +68 -48 openpkg-src/openssh/ssh-keyman
____________________________________________________________________________
Index: openpkg-src/openssh/ssh-keyman
============================================================
$ cvs diff -u -r1.2 -r1.3 ssh-keyman
--- openpkg-src/openssh/ssh-keyman 31 May 2002 14:48:08 -0000 1.2
+++ openpkg-src/openssh/ssh-keyman 31 May 2002 15:47:42 -0000 1.3
@@ -100,39 +100,49 @@
# perform agent information sanity check
check_agent_info () {
- location="$1"
- if [ ".$SSH_AUTH_SOCK" != . -o ".$SSH_AGENT_PID" != . ]; then
- invalid=""
- if [ ".$SSH_AUTH_SOCK" = . -o ".$SSH_AGENT_PID" = . ]; then
- # just one of the two information is not enough
- invalid="partial agent information missing"
+ context="$1"
+ invalid1=""
+ invalid2=""
+ if [ ".$SSH_AUTH_SOCK" != . ]; then
+ # make sure the agent socket is (still) working
+ if [ ! -r $SSH_AUTH_SOCK ]; then
+ invalid1="agent socket $SSH_AUTH_SOCK no longer exists"
else
- # make sure the agent process is (still) running
- kill -0 $SSH_AGENT_PID >/dev/null 2>&1
- if [ $? -ne 0 ]; then
- invalid="agent process $SSH_AGENT_PID is no longer valid"
- else
- if [ ! -r $SSH_AUTH_SOCK ]; then
- invalid="agent socket $SSH_AUTH_SOCK is no longer existing"
- fi
+ ssh-add -l >/dev/null 2>&1
+ if [ $? -eq 2 ]; then
+ invalid1="agent socket $SSH_AUTH_SOCK no longer valid"
fi
fi
- if [ ".$invalid" != . ]; then
- echo "$prog_name:WARNING: invalid agent information found in $location." 1>&2
- echo "$prog_name:WARNING: reason: $invalid." 1>&2
- if [ ".$location" = ".your shell environment" ]; then
+ fi
+ if [ ".$SSH_AGENT_PID" != . ]; then
+ # make sure the agent process is (still) running
+ kill -0 $SSH_AGENT_PID >/dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ invalid2="agent process $SSH_AGENT_PID no longer exists"
+ fi
+ fi
+ if [ ".$invalid1" != . -o ".$invalid2" != . ]; then
+ if [ ".$opt_e" = .no ]; then
+ echo "$prog_name:WARNING: invalid agent setup found in $context." 1>&2
+ if [ ".$invalid1" != . ]; then
+ echo "$prog_name:WARNING: reason: $invalid1." 1>&2
+ fi
+ if [ ".$invalid2" != . ]; then
+ echo "$prog_name:WARNING: reason: $invalid2." 1>&2
+ fi
+ if [ ".$context" = ".your shell environment" ]; then
echo "$prog_name:HINT: run \"eval \`$prog_name -q -s -e\`\" to fix." 1>&2
fi
- unset SSH_AUTH_SOCK
- unset SSH_AGENT_PID
fi
+ unset SSH_AUTH_SOCK
+ unset SSH_AGENT_PID
fi
}
check_agent_info "your shell environment"
if [ -f $agentfile ]; then
. $agentfile
check_agent_info "in saved agent state"
- if [ ".$SSH_AUTH_SOCK" = . -a ".$SSH_AGENT_PID" = . ]; then
+ if [ ".$SSH_AUTH_SOCK" = . -o ".$SSH_AGENT_PID" = . ]; then
rm -f $agentfile
fi
fi
@@ -154,63 +164,73 @@
# stop the agent
kill=yes
- if [ ".$SSH_AUTH_SOCK" = . -a ".$SSH_AGENT_PID" = . ]; then
- if [ ".$opt_q" = .no ]; then
- echo "$prog_name: agent not running"
- fi
- else
+ if [ ".$SSH_AUTH_SOCK" != . -a ".$SSH_AGENT_PID" != . ]; then
kill $SSH_AGENT_PID >/dev/null 2>&1 || true
if [ ".$opt_q" = .no ]; then
- echo "$prog_name: stopped agent (pid $SSH_AGENT_PID)"
+ echo "$prog_name: stopped agent (pid $SSH_AGENT_PID)" 1>&2
fi
rm -f $agentfile
unset SSH_AUTH_SOCK
unset SSH_AGENT_PID
+ elif [ ".$SSH_AUTH_SOCK" != . -a ".$SSH_AGENT_PID" = . ]; then
+ if [ ".$opt_q" = .no ]; then
+ echo "$prog_name: agent running remotely - cannot kill locally" 1>&2
+ fi
+ else
+ if [ ".$opt_q" = .no ]; then
+ echo "$prog_name: agent not running" 1>&2
+ fi
fi
fi
# start the agent
if [ ".$opt_s" = .yes ]; then
- if [ ".$SSH_AUTH_SOCK" != . -a ".$SSH_AGENT_PID" != . ]; then
- if [ ".$opt_q" = .no ]; then
- echo "$prog_name: agent already running"
- fi
- else
+ if [ ".$SSH_AUTH_SOCK" = . -a ".$SSH_AGENT_PID" = . ]; then
eval `nohup $ssh_agent -s </dev/null 2>/dev/null | grep -v 'Agent pid'`
if [ ".$opt_q" != .yes ]; then
- echo "$prog_name: spawned agent (pid $SSH_AGENT_PID)"
+ echo "$prog_name: spawned agent (pid $SSH_AGENT_PID)" 1>&2
fi
( echo "SSH_AUTH_SOCK=$SSH_AUTH_SOCK"
echo "SSH_AGENT_PID=$SSH_AGENT_PID"
) >$agentfile && chmod 600 $agentfile
+ elif [ ".$SSH_AUTH_SOCK" != . -a ".$SSH_AGENT_PID" = . ]; then
+ if [ ".$opt_q" = .no ]; then
+ echo "$prog_name: agent already running remotely - no need to start locally" 1>&2
+ fi
+ else
+ if [ ".$opt_q" = .no ]; then
+ echo "$prog_name: agent already running" 1>&2
+ fi
fi
fi
# setup environment
if [ ".$opt_e" = .yes ]; then
- if [ ".$SSH_AUTH_SOCK" = . -a ".$SSH_AGENT_PID" = . ]; then
- echo "$prog_name:WARNING: agent not running" 1>&2
+ if [ -r $agentfile ]; then
+ sed -e 's/$/;/g' <$agentfile
+ echo "export SSH_AUTH_SOCK;"
+ echo "export SSH_AGENT_PID;"
else
- cat $agentfile
- echo "export SSH_AUTH_SOCK"
- echo "export SSH_AGENT_PID"
+ echo "$prog_name:WARNING: agent not (or no longer) available" 1>&2
+ echo "unset SSH_AUTH_SOCK;"
+ echo "unset SSH_AGENT_PID;"
fi
fi
# delete key(s) from agent
if [ ".$opt_d" = .yes ]; then
- if [ ".$SSH_AUTH_SOCK" = . -a ".$SSH_AGENT_PID" = . ]; then
- echo "$prog_name:WARNING: agent not running" 1>&2
+ if [ ".$SSH_AUTH_SOCK" = . ]; then
+ echo "$prog_name:WARNING: agent not available" 1>&2
else
if [ $# -eq 0 ]; then
if [ ".$opt_q" = .no ]; then
- echo "$prog_name: deleting all keys"
+ echo "$prog_name: deleting all keys" 1>&2
fi
$ssh_add -D
else
if [ ".$opt_q" = .no ]; then
for key in "$@"; do
- echo "$prog_name: deleting key $key"
+ echo "$prog_name: deleting key $key" 1>&2
done
fi
$ssh_add -d "$@"
@@ -220,8 +240,8 @@
# add key(s) into agent
if [ ".$opt_a" = .yes ]; then
- if [ ".$SSH_AUTH_SOCK" = . -a ".$SSH_AGENT_PID" = . ]; then
- echo "$prog_name:WARNING: agent not running" 1>&2
+ if [ ".$SSH_AUTH_SOCK" = . ]; then
+ echo "$prog_name:WARNING: agent not available" 1>&2
else
if [ $# -eq 0 ]; then
echo "$prog_name:ERROR: no keys specified on command line" 1>&2
@@ -244,12 +264,12 @@
done
if [ ".$load" = .yes ]; then
if [ ".$opt_q" = .no ]; then
- echo "$prog_name: loading key $key_file"
+ echo "$prog_name: loading key $key_file" 1>&2
fi
key_missing="$key_missing $key_file"
else
if [ ".$opt_q" = .no ]; then
- echo "$prog_name: skipping key $key_file (already loaded)"
+ echo "$prog_name: skipping key $key_file (already loaded)" 1>&2
fi
fi
done
@@ -261,8 +281,8 @@
# list key(s) available in agent
if [ ".$opt_l" = .yes ]; then
- if [ ".$SSH_AUTH_SOCK" = . -a ".$SSH_AGENT_PID" = . ]; then
- echo "$prog_name:WARNING: agent not running" 1>&2
+ if [ ".$SSH_AUTH_SOCK" = . ]; then
+ echo "$prog_name:WARNING: agent not available" 1>&2
else
$ssh_add -l
fi
______________________________________________________________________
The OpenPKG Project www.openpkg.org
CVS Repository Commit List openpkg-cvs@openpkg.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic