#!/usr/bin/perl use strict; use warnings; use Net::SSH::Expect; print "Enter your username: "; my $unme =<>; print "Enter current passwd: "; system('stty','-echo'); chop(my $cur_pswd =); system('stty','echo'); print "\n", "Enter new passwd: "; system('stty','-echo'); chop(my $new_pswd =); system('stty','echo'); print "\n", "Enter new passwd again: "; system('stty','-echo'); chop(my $val_pswd =); system('stty','echo'); print"\n"; if ($new_pswd eq $val_pswd){ my $ssh = Net::SSH::Expect->new( host => 'localhost', user => "$unme", password => "$cur_pswd", raw_pty => 1 ); warn "Starting SSH... \n"; $ssh->run_ssh(); warn "Testing login output... \n"; my $login_output = $ssh->login(); print " Done", "\n"; my $who = $ssh->exec('who'); print($who); } else{ print "wrong password ! \n"; }