- 締切済み
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 使用) 以上、ご教授の程よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- geso775
- ベストアンサー率29% (15/51)
実行エラーを見ると正しくコマンドできていないときに出るものと思います。 system("${cmd} -p test.txt server1:/home/data/"); ターム上では問題なく動くならば、一度シェルを介して実行されてみてはいかがでしょうか? system("sh work.sh"); work.shにrcpコマンドを記述。
- hara_peko
- ベストアンサー率28% (11/38)
rcp -p test.txt server1:/home/data/ が大丈夫ということであれば、 /bin/rcp が、違うとか・・・
お礼
早速のご回答ありがとうございました。 /bin/rcp は、which で調べた結果ですので間違いありません。 which rcp 実行エラー内容は usage: rcp [-p] [ -S size ] [ -R size ] f1 f2; or: rcp [-rp] [ -S size ] [ -R size ] f1 ... fn directory のような感じでした。
パスワードの受渡しに環境変数を使っているなら、子プロセス上で環境変数が正しく読めているか確認してみてください。
お礼
早速のご回答ありがとうございました。 どのように確認すればよろしいのでしょうか? ちなみに実行エラー内容は usage: rcp [-p] [ -S size ] [ -R size ] f1 f2; or: rcp [-rp] [ -S size ] [ -R size ] f1 ... fn directory のような感じでした。 以上、よろしくお願いいたします。
- Sucelggug(@xyz37005)
- ベストアンサー率51% (369/715)
system("${cmd} -p test.txt server1:/home/data/"); ↓ system("$cmd -p test.txt server1:/home/data/"); じゃないのかな? 間違ってたらゴメン。
お礼
早速のご回答ありがとうございました。 しかし、上記は関係ございません。 変数の認識を確実にするために{}を使用しております。 実行エラー内容は usage: rcp [-p] [ -S size ] [ -R size ] f1 f2; or: rcp [-rp] [ -S size ] [ -R size ] f1 ... fn directory のような感じでした。
お礼
ご回答ありがとうございます。 上記方法なら問題なく実行可能です。 やはり、シェルを介すしかないのでしょうか。 1行の命令の為にあまりプログムファイルを増やしたくないので・・・ できればPerl1本で実行させたいのですがご存知ありませんか?