Script to change Linux password remotely via SSH.
Prerequisite
For ActivePerl users, you need to download the Net::SSH2 package.
Version 5.10.x
C:\>ppm install http://cpan.uwinnipeg.ca/PPMPackages/10xx/Net-SSH2.ppd
Version 5.12.x
C:\>ppm install http://cpan.uwinnipeg.ca/PPMPackages/12xx/Net-SSH2.ppd
Scripts
#!/usr/bin/perl
use strict;
use Net::SSH2;
use Getopt::Long;
my %option = (
'server' => 'localhost',
'userid' => '',
'password' => '',
'newpassword' => '',
);
if (!GetOptions("server|s=s" => \$option{'server'},
"userid|u=s" => \$option{'userid'},
"password|p=s" => \$option{'password'},
"newpassword|n=s" => \$option{'newpassword'})) {
print_usage();
}
my $ssh2 = Net::SSH2->new();
$ssh2->connect($option{'server'}) or die "Unable to connect Host $option{'server'} \n";
$ssh2->auth_password($option{'userid'}, $option{'password'}) or die "Unable to login\n";
my $chan = $ssh2->channel();
$chan->blocking(0);
$chan->ext_data('merge');
my $cmd = "chage -l $option{'userid'}; "
. "echo -e \"$option{'password'}\\n$option{'newpassword'}\\n$option{'newpassword'}\\n\" | passwd 2>&1\n";
# print $cmd;
$chan->exec($cmd);
while (<$chan>) {
print $_;
}
#########################################################################
# Subroutines
#########################################################################
sub print_usage {
# ...
}