我正在尝试使用system命令从远程服务器调用带有标志的perl脚本。当我发出命令时,我的最后两个标志因某些奇怪的原因而被忽略。有些人可以给我一些指导。在此先感谢!!!!
#!/usr/bin/perl
print "Webserver?\n";
my $webserver = <STDIN>;
print "PORT?\n";
my $port = <STDIN>;
system("ssh -t <HOST> \"sudo su - root -c '/WebAppSA/apache/V2.2/install_apache/webmaster.pl -C -name:$webserver -port:$port - cert:cert.com'\"");
错误消息 无法确定Web服务器的唯一端口。 请检查您的设置,然后再试一次。中止... -bash:第1行:-port:8284:找不到命令 -bash:第2行:-cert:cert.com:未找到命令
答案 0 :(得分:6)
你$ webserver和$ port变量以换行符“\ n”结束。使用chomp功能。
my $webserver = <STDIN>;
chomp $webserver;
...
答案 1 :(得分:1)
正确使用sudo,然后使用Net::OpenSSH来处理ssh连接:
my $ssh = Net::OpenSSH->new($host);
$ssh->system(sudo => '/WebAppSA/apache/V2.2/install_apache/webmaster.pl',
'-C', "-name:$webserver", "-port:$port", '-cert:cert.com');
Net :: OpenSSH将负责正确引用所有内容。