Net-SSH-AuthorizedKeysFile
view release on metacpan or search on metacpan
lib/Net/SSH/AuthorizedKeysFile.pm view on Meta::CPAN
my $string = "";
for my $key ( @{ $self->{keys} } ) {
$string .= $key->as_string . "\n";
}
return $string;
}
###########################################
sub save {
###########################################
my($self, $file) = @_;
if(!defined $file) {
$file = $self->{file};
}
if(! open FILE, ">$file") {
$self->error("Cannot open $file ($!)");
WARN $self->error();
return undef;
}
print FILE $self->as_string();
close FILE;
}
###########################################
sub append {
###########################################
my($self, $key) = @_;
$self->{append} = 1;
}
###########################################
sub error {
###########################################
my($self, $text) = @_;
if(defined $text) {
$self->{error} = $text;
if(length $text) {
ERROR "$text";
}
}
return $self->{error};
}
###########################################
sub ssh_dir {
###########################################
my($self, $user) = @_;
if(!defined $user) {
my $uid = $>;
$user = getpwuid($uid);
if(!defined $user) {
ERROR "getpwuid of $uid failed ($!)";
return undef;
}
}
my @pwent = getpwnam($user);
if(! defined $pwent[0]) {
ERROR "getpwnam of $user failed ($!)";
return undef;
}
my $home = $pwent[7];
return File::Spec->catfile($home, ".ssh");
}
###########################################
sub path_locate {
###########################################
my($self, $user) = @_;
my $ssh_dir = $self->ssh_dir($user);
return undef if !defined $ssh_dir;
return File::Spec->catfile($ssh_dir, "authorized_keys");
}
1;
__END__
=head1 NAME
Net::SSH::AuthorizedKeysFile - Read and modify ssh's authorized_keys files
=head1 SYNOPSIS
use Net::SSH::AuthorizedKeysFile;
# Reads $HOME/.ssh/authorized_keys by default
my $akf = Net::SSH::AuthorizedKeysFile->new();
$akf->read("authorized_keys");
# Iterate over entries
for my $key ($akf->keys()) {
print $key->as_string(), "\n";
}
# Modify entries:
for my $key ($akf->keys()) {
$key->option("from", 'quack@quack.com');
$key->keylen(1025);
}
# Save changes back to $HOME/.ssh/authorized_keys
$akf->save() or die "Cannot save";
=head1 DESCRIPTION
( run in 1.280 second using v1.01-cache-2.11-cpan-ceb78f64989 )