2 # -----------------------------------------------------------------------------
3 # Esta programa envuelve la ssh-agent. Devuelve los mismos pid y socket siemple
4 # durante la ssh-agent está viva.
5 # -----------------------------------------------------------------------------
6 # No puede hacer `ssh-agent-manager <mandado>'.
7 # -----------------------------------------------------------------------------
12 # Esta programa no dedice el tipo de shell usa usted.
16 foreach my $arg (@ARGV) {
20 elsif ($arg eq '-s') {
24 if ((!$csh_mode and !$bsh_mode) or
25 ($csh_mode and $bsh_mode)) {
26 print "Usage: ssh-agent-manager (-c | -s)\n";
28 print " -c csh mode\n";
29 print " -s bsh mode\n";
33 # lee /tmp/ssh-agent-info si ése existe.
34 # $> es la uid efectiva.
35 my $infofile = IO::File->new("/tmp/ssh-agent-info.$>", 'r');
37 my @contents = <$infofile>;
38 my $info = &parse(join("\n", @contents));
41 my $pid = $info->{'SSH_AGENT_PID'};
42 if ($pid and kill(0, $pid) == 1) {
43 # ssh-agent está aún viva.
49 # comienza la ssh-agent...
50 my $info = &parse(scalar `ssh-agent -s`);
52 $infofile = IO::File->new("/tmp/ssh-agent-info.$>", 'w');
53 while (my ($key, $value) = each %$info) {
54 $infofile->print("$key=$value\n");
64 foreach my $line (split /\n/, $lines) {
66 # falte si el formato que la da `ssh-agent -s` cambie...
67 if ($line =~ m/^(.+?)=(.+?);/ or
68 $line =~ m/^(.+?)=(.+)$/) {
77 while (my ($key, $value) = each %$info) {
79 print qq{$key=$value; export $key;\n};
82 print qq{setenv $key $value;\n};