• 締切済み

Perlでリモートコピー

こんにちは、よろしくお願いします。 Perlでファイルをリモートコピーしたいのですが、、、 UNIXの「rcp」を使用してみたのですがエラーとなってしまいました。 $cmd = '/bin/rcp'; system("${cmd} -p test.txt server1:/home/data/"); Tera Term上でプログラムしているのですが、ターム上ではエラーなく正常にコピー処理が行えます。 実行ユーザーも同じです。 # rcp -p test.txt server1:/home/data/ 何かよい方法、もしくは上記解決策等ありますでしょうか? サーバー・・・HP-UX CGI開発言語・・・Perl5 開発端末・・・windows2000(Tera Term 使用) 以上、ご教授の程よろしくお願いいたします。

みんなの回答

  • geso775
  • ベストアンサー率29% (15/51)
回答No.4

実行エラーを見ると正しくコマンドできていないときに出るものと思います。 system("${cmd} -p test.txt server1:/home/data/"); ターム上では問題なく動くならば、一度シェルを介して実行されてみてはいかがでしょうか? system("sh work.sh"); work.shにrcpコマンドを記述。

kal1119
質問者

お礼

ご回答ありがとうございます。 上記方法なら問題なく実行可能です。 やはり、シェルを介すしかないのでしょうか。 1行の命令の為にあまりプログムファイルを増やしたくないので・・・ できればPerl1本で実行させたいのですがご存知ありませんか?

  • hara_peko
  • ベストアンサー率28% (11/38)
回答No.3

rcp -p test.txt server1:/home/data/ が大丈夫ということであれば、 /bin/rcp が、違うとか・・・

kal1119
質問者

お礼

早速のご回答ありがとうございました。 /bin/rcp は、which で調べた結果ですので間違いありません。 which rcp 実行エラー内容は usage: rcp [-p] [ -S size ] [ -R size ] f1 f2; or: rcp [-rp] [ -S size ] [ -R size ] f1 ... fn directory のような感じでした。

noname#25358
noname#25358
回答No.2

 パスワードの受渡しに環境変数を使っているなら、子プロセス上で環境変数が正しく読めているか確認してみてください。

kal1119
質問者

お礼

早速のご回答ありがとうございました。 どのように確認すればよろしいのでしょうか? ちなみに実行エラー内容は usage: rcp [-p] [ -S size ] [ -R size ] f1 f2; or: rcp [-rp] [ -S size ] [ -R size ] f1 ... fn directory のような感じでした。 以上、よろしくお願いいたします。

回答No.1

system("${cmd} -p test.txt server1:/home/data/"); ↓ system("$cmd -p test.txt server1:/home/data/"); じゃないのかな? 間違ってたらゴメン。

kal1119
質問者

お礼

早速のご回答ありがとうございました。 しかし、上記は関係ございません。 変数の認識を確実にするために{}を使用しております。 実行エラー内容は usage: rcp [-p] [ -S size ] [ -R size ] f1 f2; or: rcp [-rp] [ -S size ] [ -R size ] f1 ... fn directory のような感じでした。

関連するQ&A