システムコマンドを使用して、リモートサーバからのフラグ付きのperlスクリプトを呼び出そうとしています。コマンドを発行すると、私の最後の2つのフラグが何らかの奇妙な理由で無視されてしまいます。いくつか私にいくつかのガイダンスを提供してください。前もって感謝します!!!!perlのSystem()
#!/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:行2:-cert:cert.com:コマンド
これはデモンストレーションコードの可能性が高いと私は理解していますが、検証されていないエスケープされていないユーザー入力をリモートマシンのルートシェルに渡していることに注意してください。 (あなた自身の子シェルも危険にさらされています)リストや間接オブジェクトを使って 'system()'を呼び出すことを見てください。[per docs](http://perldoc.perl.org/functions/system.html )。代わりに 'quotemeta()'や '\ Q'は裸の補間よりも優れています。 – pilcrow
[Perlスクリプト内でのXML編集]の複製が可能です(http://stackoverflow.com/questions/9877485/xml-editing-inside-a-perl-script) –
@per the docs: 'quotemeta'は通常のexpresionsですシェル引用のためではありません。 – salva