私はperlで自動化スクリプトを開発しています。認証のために、ユーザーが入力したパスワードを受け取り、それをメインのperlプログラムに返し、自動化する必要があるツールにパスワードを渡すサブルーチンを作成しました。
このスクリプトは、文字#
がパスワードの一部でない限り、すべてのケースで問題なく動作します。その後、ツールを自動化できず、認証に失敗します。
以下は、パスワード入力に使用したサブルーチンです。
use Win32::Console;
sub password() {
$StdIn = new Win32::Console(STD_INPUT_HANDLE);
my $Password = "";
$StdIn->Mode(ENABLE_PROCESSED_INPUT);
print "Enter Password: ";
while (ord(my $Data = $StdIn->InputChar(1)) != 10) {
if("\r" eq $Data ) {
last;
}
elsif ("\ch" eq $Data) {
if( "" ne chop( $Password )) {
print "\ch \ch";
}
next;
}
$Password .=$Data;
print "*";
}
return $Password;
}
上記のサブルーチンを次のように呼び出しています
$passwd = &password();
そして、 $passwd
以下のように自動化する必要があるツールに を渡します。
これは、ツールにパスワードを渡す行です。
cc -c URL OF THE TOOL:$server -d $domain -t $appl -u $userid -p $passwd; \n";
password() サブルーチンを呼び出し、$password を返し、$passwd をツールに渡すコードをクロスチェックしてください。エラーは 3 つの場所のいずれかにあると思います。誰か助けてください。可能であればコードも提供してください。