File:  [Paefchen] / home / as / .csh / sshagent.csh
Revision 1.1: download - view: text, annotated - select for diffs - revision graph
Mon Jan 7 06:03:02 2008 UTC (16 years, 4 months ago) by as
Branches: MAIN
CVS tags: HEAD
Hello My Home ;)

# $Paefchen: home/as/.csh/sshagent.csh,v 1.1 2008/01/07 06:03:02 as Exp $

# CSHRC_RELOAD: NO
# CSHRC_PROMPTONLY: YES

if (! $?CSHRC_MD_SSHAGENT_MOD) then
	set _m = a
else if ($CSHRC_MD_SSHAGENT_MOD == 'ask') then
	while (1)
		echo -n "Soll der SSH-Agent gestartet werden? [A|j|n|h]: "
		set _a = $<
		if ($_a == '') set _a = a
		switch ($_a:l)
		case [ajn]:
			set _m = $_a:l
			break
		case [h]:
			echo "Hilfe CSHRC-SSH-AGNET:"
			echo "  j: starten"
			echo "  n: nicht starten"
			echo "  h: diese Hilfe"
			echo "  a: automatisch."
			echo "     Wird nur gestartet wenn diese Skript"
			echo "     auf einem localen host laeuft."
			breaksw
		default
			echo "ERROR: Ungueltige Angabe."
		endsw
	end
	unset _a
else if ($CSHRC_MD_SSHAGENT_MOD == 'auto') then
	set _m = a
else if ($CSHRC_MD_SSHAGENT_MOD == 'yes') then
	set _m = j
else
	set _m = n
endif

if ($_m == a) then
	set _m = j
	if ($?REMOTEHOST) set _m = n
endif


if ($_m == j) then
	set _env = ~/.ssh/env.`hostname`

	# wenn noch keine ssh-agent variablen abgelegt
	# sind, dann muss er gestartet werden
	if ( ! -f $_env ) then
		set _start = 1

	# anderenfalls prueffen ob der Agant mit der PID rennt
	else
		eval `cat $_env`
		set _status = ` \
			ps -p $SSH_AGENT_PID | tail -1 | awk '{ print $5 }'`
		# wenn nicht, muss er gestartet werden
		if ( "$_status" != "ssh-agent" ) set _start = 1
		unset _status
	endif
		
	# wenn der agent gestartet werden soll
	if ( $?_start ) then
		echo -n "SSH-Agent starten ... "
		ssh-agent -c | head -2 > $_env
		chmod 600 $_env
		eval `cat $_env`

		# key's laden
		ssh-add
		unset _start _env
		
		# Aliase setzen
		alias   agent-stop      kill -15 $SSH_AGENT_PID	
		alias   agent-stop-all  killall ssh-agent
		alias   agent-lock   	ssh-add -x
		alias   agent-ulock     ssh-add -X
		aliass 	agent-start 	~/.csh/sshagent.csh
	endif
endif

unset _m _env _status