我正在尝试使用 Perl 系统命令 ssh 到另一台服务器并运行 mkdir 命令,但它总是返回
mkdir /tmp/test.xxxxx: No such file or directory
Run Code Online (Sandbox Code Playgroud)
而如果我手动 ssh 并运行相同的命令,它就可以正常工作。这是我写的代码:
my $TEMPDIR = '/tmp/test.xxxxx';
system "$SSH $SSH_USER\@$TESTSVR \"mkdir $TEMPDIR\"" or die " $!\n";
Run Code Online (Sandbox Code Playgroud)
system错误时不返回 false。并且$!不一定设置为错误,这取决于您所说的错误。
system(...);
die "Can't launch child: $!\n" if $? == -1;
die "Child killed by signal ".( $? & 0x7F )."\n" if $? & 0x7F;
die "Child exited with error ".( $? >> 8 )."\n" if $? >> 8;
Run Code Online (Sandbox Code Playgroud)
值得注意的是,您有多个代码注入错误,可以使用以下方法轻松修复:
system($SSH, "$SSH_USER\@$TESTSVR", "mkdir", $TEMPDIR)
Run Code Online (Sandbox Code Playgroud)