首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl system命令返回"mkdir /tmp/test.xxxxx:没有此类文件或目录“

问Perl system命令返回"mkdir /tmp/test.xxxxx:没有此类文件或目录“
EN

Stack Overflow用户
提问于 2021-02-05 19:36:48
回答 2查看 168关注 0票数 0

我试图使用Perl system命令将ssh转到另一台服务器并运行mkdir命令,但它总是返回。

代码语言:javascript
复制
mkdir /tmp/test.xxxxx: No such file or directory

尽管我手动执行ssh并运行相同的命令,但它可以正常工作。下面是我写的代码:

代码语言:javascript
复制
my $TEMPDIR = '/tmp/test.xxxxx';
system "$SSH $SSH_USER\@$TESTSVR \"mkdir $TEMPDIR\""  or die " $!\n";
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-05 23:58:23

system不会在出错时返回false。$!不一定设置为错误,这取决于您所称的错误。

代码语言:javascript
复制
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;

值得注意的是,您有多个代码注入错误,通过使用以下方法很容易修复:

代码语言:javascript
复制
system($SSH, "$SSH_USER\@$TESTSVR", "mkdir", $TEMPDIR)
票数 6
EN

Stack Overflow用户

发布于 2021-02-07 09:11:43

考虑使用Net::OpenSSH。

它将为您处理一些小细节(例如,引用或检查远程命令是否以非零值退出):

代码语言:javascript
复制
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;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66069561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档