2012-01-06 15 views
1

私はsshmkdirをPerl CGIスクリプトから実行しようとしています。動いていない。しかし、通常のPerlスクリプトでは正常に動作しています。 Perl CGIスクリプトでコマンドを実行する方法を教えてもらえますか?Perl CGIでは、どのようにUNIXコマンドを使用できますか?

+3

実際のコードは面白いでしょう。どのコマンドが "通常のスクリプト"では動作しますが、 "CGI"では動作しませんか?どのようなエラーメッセージが表示されますか( '$!')? –

+0

私はシステムを使用しています( "ssh username @ machinename 'ls/directoryname'") IN demo.cgi私は同じコマンドを使用しています。通常のperlスクリプトでうまく動作するディレクトリを作成するシステムコマンドです。 perl cgiではそうではありません。コマンドは次のとおりです。system( "mkdir dirname"); –

+0

'system'はstdoutをキャプチャしません。もしbashでスクリプトを試しているときに "動く"と思えば、それは端末に印刷されたperlプロセスのバックグラウンドでstdoutが見えるからです。このデータはperlでは利用できません。おそらくウェブサーバにもないでしょう。 'qx()'やbackticksを使って標準出力をキャプチャします。 – TLP

答えて

0

システム()またはpopen()がおそらくあなたが探しているものです。汚れていると思われる場合は、バックチックも使用できると思います。

7

あなたがウェブサーバを経由して、このスクリプトを実行している場合、チャンスはアクティブなユーザー(例えば「誰も」、「WWW」など)がmkdirsshのようなコマンドを実行するために必要な権限を持っていない可能性があります。もしそうなら、それはperlが修正できるものではありません。ファイルを作成し、コマンドを実行するように設定してWebユーザー権限を持っている、それはまた、セキュリティ上の問題である

print "The active user is: ", `whoami`; 

:あなたは、アクティブなユーザーのようなもので誰であるかをテストすることができます。

+0

はいWebサーバー経由で実行しています。ですから、Perl CGI経由でSSHを使って別のマシンにログインする方法はありますか?SSHではパスワードは必要ありません。 –

+1

@ user970553私はすでにあなたにその質問に答えるために必要な情報を与えました。 – TLP

0

unixコマンドを実行する必要がありますか? Perlにはmkdirが組み込まれており、SSHを処理するモジュールがあります。通常、CGIプロセスは機能やシステムへのアクセスが制限されます。 Perlではより多くのことを行うことができます。

+0

ソリューションに感謝 –

関連する問題