このPerlコードをGroovyに変換するにはどうすればよいですか?
外部プロセスの確認プロンプトをバイパスするにはどうすればよいですか?
PerlスクリプトをGroovyに変換しようとしています。プログラムは、maestro(ジョブスケジューリング)ジョブを自動的にロード/削除しています。問題は、deleteコマンドが、検出したすべてのジョブで確認(Y / N)を求めるプロンプトを表示することです。プロセスをgroovyで実行しようとしましたが、プロンプトで停止します。Perlスクリプトは、ストリームにYの束を書き込み、停止を回避するためにハンドラーに出力します(私が正しく理解している場合)。Groovyで同じことを行う方法を知りたいですか?
または、コマンドを実行し、確認プロンプトごとにYを書き込む他のアプローチ。
Perlスクリプト:
$maestrostring="";
while ($x < 1500) {
$maestrostring .= "y\n";
$x++;
}
# delete the jobs
open(MAESTRO_CMD, "|ssh mserver /bin/composer delete job=pserver#APPA@")
print MAESTRO_CMD $maestrostring;
close(MAESTRO_CMD);
これは私の動作するGroovyコードです:
def deleteMaestroJobs (){
...
def commandSched ="ssh $maestro_server /bin/composer delete sched=$primary_server#$app_acronym$app_level@"
def commandJobs ="ssh $maestro_server /bin/composer delete job=$primary_server#$app_acronym$app_level@"
try {
executeCommand commandJobs
}
catch (Exception ex ){
throw new Exception("Error executing the Maestro Composer [DELETE]")
}
try {
executeCommand commandSched
}
catch (Exception ex ){
throw new Exception("Error executing the Maestro Composer [DELETE]")
}
}
def executeCommand(command){
def process = command.execute()
process.withWriter { writer ->
writer.print('y\n' * 1500)
}
process.consumeProcessOutput(System.out, System.err)
process.waitFor()
}