如何解决Perl 系统命令返回“mkdir /tmp/test.xxxxx: No such file or directory”
我正在尝试使用 Perl 系统命令 ssh 到另一台服务器并运行 mkdir 命令,但它总是返回
mkdir /tmp/test.xxxxx: No such file or directory
虽然如果我手动 ssh 并运行相同的命令,它工作正常。这是我写的代码:
my $TEMPDIR = '/tmp/test.xxxxx';
system "$SSH $SSH_USER\@$TESTSVR \"mkdir $TEMPDIR\"" or die " $!\n";
解决方法
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;
值得注意的是,您有多个代码注入错误,可以使用以下方法轻松修复:
system($SSH,"$SSH_USER\@$TESTSVR","mkdir",$TEMPDIR)
,
考虑使用 Net::OpenSSH。
它将为您处理小细节(例如,引用或检查远程命令是否以非零值退出):
use Net::OpenSSH;
my $ssh = Net::OpenSSH->new($TESTSVR,user => $SSH_USER);
$ssh->system(mkdir => $TEMPDIR)
or die "Can't create remote dir: " . $ssh->error;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。