我正在创建一个 perl 脚本,该脚本在 TeamCity 中使用 net::SSH2 创建一个通道。我能够让我的命令执行,但我无法让频道正确记录并返回错误代码,如果出现问题,TeamCity 会失败。
我尝试了许多不同的变体,但这是我当前的代码。
$chan = $ssh2->channel();
$chan->blocking(0);
$chan->shell();
$exitCode = 1;
print $chan "/usr/bin/dos2unix /nfsMount/tomcat/cronScripts/*.sh\n";
while (<$chan>)
{
print "dos2unix utility successful.\n";
$exitCode = 0;
}
我不太了解这个频道的工作原理。根据我在此处阅读的内容,执行代码后似乎需要某种绑定的文件句柄。我的代码执行,但从未进入该 while 块。我还尝试了以下变体:
$chan->exec('/usr/bin/dos2unix /nfsMount/tomcat/cronScripts/*.sh');
print "dos2unix successful" while <$chan>;
无济于事。