Setting password for Oracle listener in the script

Oracle listener control utility doesn’t allow to set the password non-interactively.
In this case the small Perl script, using Expect, could help.

use Expect;
my $exp = new Expect;

my $command = 'lsnrctl';

print "Changing pasword for ${LISTENER_NAME} \n" ;

$exp->spawn($command) or die "Cannot spawn $command: $!\n";


my $answer = $exp->expect(30, 'LSNRCTL>');
$exp->send("set current_listener ${LISTENER_NAME}\n");

$answer = $exp->expect(30, $PROMPT);

# For localized version should be changed (i.e. just to ':')
$answer = $exp->expect(30, 'Old password:');
# It's supposed, that listener still doesn't have the password

$answer = $exp->expect(30, 'New password:');

$answer = $exp->expect(30, 'Reenter new password:');

$answer = $exp->expect(30, $PROMPT);
$exp->send("set password\n");

$answer = $exp->expect(30, 'Password:');

$answer = $exp->expect(30, $PROMPT);

# Restart it if necessary
# $answer = $exp->expect(30, $PROMPT);
# $exp->send("reload\n");

$answer = $exp->expect(30, $PROMPT);


Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.