通过Net :: OpenSSH打破perl中的整个命令链

时间:2013-11-23 21:05:12

标签: perl ssh signals openssh

我有一个使用Net :: OpenSSH的perl脚本。有一刻我有以下代码:

$ssh->system(@cmd) or die "Failed to execute command on remote system";

出于各种原因,我可能想要杀死命令,当我按下^ C时,我希望整个链终止。使用上述命令仅终止本地进程。

Google问题解决后,我找到了that I need to allocate pseudo-terminal。我试着用:

$ssh->system({tty => 1}, @cmd) or die "Failed to execute command on remote system";

哪个部分工作 - 它终止了远程进程而不是本地进程(我找不到检查错误的方法,这将区分两者)。我试过spawn并认为阻塞信号与它有关:

my $pid = $ssh->spawn({tty => 1}, @cmd) or die "Failed to execute command on remote system";
waitpid($pid, 0);
die "Failed to execute command on remote system" unless ($? == 0);

如何停止^ C上的所有内容或终止本地命令?

PS。我正在执行的命令是一个perl脚本,如果它有帮助我可以控制它。

0 个答案:

没有答案