• 締切済み

Net::FTP rmdirの記述方法について

perlでNet::FTPを使用してサーバーのディレクトリーおよびそのファイルを削除しようとおもっておりますが、うまくしていません。 ディレクトリー作成は $ftp->mkdir('/pc/01/'); でうまく作成できますが、削除動作していないです $ftp->rmdir('/pc/01/'); この記述ではダメなのでしょうか? 毎回説明べたで申し訳ございません。

  • Perl
  • 回答数1
  • ありがとう数2

みんなの回答

  • N60-BASIC
  • ベストアンサー率80% (17/21)
回答No.1

FTPでのディレクトリ削除が失敗する原因には 1. ディレクトリを削除するユーザー権限がない 2. ディレクトリ内に他のディレクトリやファイルが存在する といったものがあります。 もしディレクトリを生成したユーザーで削除が失敗するのなら、2.を疑うべきです。 $ftp->rmdir('/pc/01/', 1); として、第2引数の再帰削除オプションを有効にしたらどうなりますか?

hihin2003
質問者

お礼

お礼が遅れました。 いろいろとやってみて、とりあえずは動作するようになりました。 ありがとうございます。

hihin2003
質問者

補足

回答ありがとうございます。 わたしもよく確認しませんでした 「2. ディレクトリ内に他のディレクトリやファイルが存在する」 この内容が該当します。 となると手順としては 1.ファイルを削除 2.ディレクトリを削除 で行う必要があるんですね。 ありがとうございます。やってみます。

関連するQ&A

  • ディレクトリの削除について

    perlにてディレクトリの作成を行ったのですが、間違えて最後の改行コードを抜き忘れてしまい"aaa\r\nbbb\r\n"というようなディレクトリ名のディレクトリができてしまいました。 このディレクトリを削除したく、以下の事を試したのですがいずれもうまくいきませんでした。 ・FTPツールから削除 ・コマンドプロンプトからrmdir ・perlにてrmdir("aaa\r\nbbb\r\n")実行 このディレクトリを削除することは出来ないのでしょうか。 宜しくお願いします。

    • ベストアンサー
    • Perl
  • perl(CGI)から作成したディレクトリがFTPで消せないのはなぜ?

    HTMLページからそのCGIを叩くと『年月』の名前のディレクトリを作って、 その中に日毎のアクセスログファイルを作成するCGIを作っています。 ディレクトリを作成するパールは以下です。 mkdir($dir, 0777); しかし実行すると$dirのパーミッションは755になってしまいます、 その中に作成されるファイルは正常に作成されるのですが、 そのディレクトリ/ファイル共にFTPから削除/パーミッションの変更が 出来なくなってしまいます。 telnetから入って削除しようとしても普通のユーザー権限では無理で 削除する為にはルートにならなければなりません。 なぜでしょう?FTPから操作できる権限のディレクトリを作る方法が あるのでしょうか? バカな質問だと思いますが分かる方がいらっしゃいましたら教えて下さい。

    • ベストアンサー
    • Perl
  • perlでFTP

    ローカルPCからPerlで記述されたプログラムを実行し、 FTPサーバーへファイルをアップロードするPerlプログラムを教えてください。 DOS上では、 ftp open ftpサーバー名 ユーザー名 パスワード put 送信するファイル bye となるのですが、それをPerlで記述すると、どのようになるのでしょうか?

    • ベストアンサー
    • Perl
  • FTPコマンドの記述方法

    FTPサーバーからCSVファイルをダウンロードしようとftpcmd.txtファイルに下記を記述しました。コマンドプロンプトではファイルの取得に成功しています。 open server_name password get remote_file local_file close bye 問題は、この取得したファイルを差し替えるローカルPC側のリダイレクトの場所である[ログファイル名]の.batファイルの記述の仕方がわかりません。 ftp -s:ftpcmd.txt > [ログファイル名]←ログファイル名の記述方法 例えば、”C:¥”に置きたい場合はどのように記述すればよろしいのでしょうか? よろしくお願いします。 ちなみに下記のHPを参考にして作成しました。 http://www.psytec.co.jp/tips/0102/

  • FTP関数で・・・。

    $cd = ftp_cdup($conn_id);  if($cd == false)  $check=ftp_nlist($conn_id, FTP_DIR_IMG_TEST.$all_data['templatedir']);  if($check == false)  $mkdir=ftp_mkdir($conn_id, FTP_DIR_IMG_TEST.$all_data['templatedir']); このように親ディレクトリに移動したあとに、 フォルダを作ろうとしています。 がパーミッションエラーとなります。 Permission denied. ディレクトリを作成する場合は絶対パスですよね? 実際にコマンドでデータを見ると、 drwxr-xr-x 2 namae gn 512 11 12 18:43 img となっています。 FTPユーザーはgnで入ってますが、 この場合はgnでディレクトリを作成することができないのでしょうか?

    • ベストアンサー
    • PHP
  • FTPコマンドについて

    OSは2000Serverを使っています。コマンドプロンプトから入力するFTPコマンドにつき、二つ質問があります。 (1)ローカル(自分の端末)のあるディレクトリ配下すべてのディレクトリ・フォルダまるごとをFTPでアップロードしたい際、コマンドでなんと入力すればよろしいですか? (mput *ではすべてのファイルを転送するもののディレクトリは転送しないためmkdirでディレクトリを作成し、それぞれにmputするということしかできないのでしょうか?) (2)ログインするとC:に自分がいます。!dirでC直下のディレクトリを見るとたくさんありますが中でもDocuments and SettingsとProgram Filesについてはlcdで場所を移動できません。デスクトップにあるファイルを転送したいときなど、Documents and Settingsの下にいく必要がありますがどうすれば移動できますか?

  • 多次元配列を使用してFTP接続・フォルダ作成をする

    csvから接続先名とIPアドレスを多次元配列を利用して引っ張り for文等でcsvに書かれている全接続先につなぎデータを取ってくるプログラムを作成しようと思っております。 しかし、多次元配列の使い方やfor文を調べても良くわからず困っています。 csvは、例えば以下の通り設定します。 【hp_ftp.csv】 hp1 192.168.1.12 hp2 192.168.1.10 hp3 192.168.1.20 以下、perlのプログラムです。 #!C:/Perl/bin/perl use Net::FTP; use strict; #FTPサーバーへの接続 my $ftp = Net::FTP->new('各サーバIPアドレス') or die; #ユーザー名とパスワードを指定してログイン $ftp->login('user','password') or die $ftp->message; #保存先ディレクトリの存在確認・作成 if(!-d"C:/接続先名"){ mkdir "C:/接続先名"; } else{ print"Directory already exists!\n"; } #保存先ディレクトリの変更 chdir("C:/接続先名/") or die; 以下略 #取得元ディレクトリの変更 #データ取得(for文で) #接続終了 【質問】 ・IPアドレス(192.168.1.12....)をcsvから引っ張りperlの'各サーバIPアドレス'に入れたい ・接続先(hp1...)をperlの'接続先名'と書かれている部分に入れたい どのようにプログラムを組めば良いのでしょう? ご教授の程宜しくお願いいたします。

    • ベストアンサー
    • Perl
  • CentOS7 FTPアップロードについて

    はじめてサーバーの構築をしており、ネットで調べながら、本を読みながら構築しているのですが、FTP接続について教えて下さい。 CentOS7でFTPの設定をし、自分のパソコンのFTPソフトから接続して、サーバーのディレクトリを見ることができました(ログインできました)が、ファイルのアップロードができません。。 本を参考にすると、SELinuxを設定するとありましたので、 setsebool -P ftp_home_dir on のコマンドを実行しましたが、 553 Could not create file. というエラーメッセージが出て、アップロードも、ディレクトリ作成もできません。 場所は、var/www/http/ の中です。 home/ユーザー名/ の中ならファイルのアップロードもディレクトリ作成もできます。 SELINUX=enforcing を SELINUX=disabled に変えると書いてあるサイトも有りますが、その設定をすると、サーバーが動かなくなる?という記述もあったりで、できたら他の方法がないのかなと思っていますが、問題のない方法でFTPアップロードをするやり方はありませんでしょうか。 教えて下さい。

  • NET::FTPモジュールでのFTP接続のセキュリティに関して。

    ローカルサーバ仕様:WIN98SE,Apache,Active Perl ローカルサーバ内にNET::FTPモジュールを使用し、 レンタルサーバに置いてあるデータを書きかえるようなCGIを作成したのですが、 1.ローカルサーバのプログラム内でFTPアカウント、パスワードが 丸裸で書かれている状態になっています。 2.レンタルサーバへFTP接続する通信の際にも、パスワードは丸裸で転送される ことになるのですよね?。 上記2点はセキュリティ上問題があると思うので、 解決法、アドバイスなど有ればお教えください。

    • ベストアンサー
    • Perl
  • 「mkdir」について

    レンタルサーバでmkdir関数を使ってサーバ上でディレクトリを作成しようとしています。 mkdir("$dir_name",0777); として実行しています。 ディレクトリは作成されるのですが、パーミッションの変更がされず755で作成されてしまいます。 それから大きな問題がもうひとつ。 作成されたディレクトリをffftpで見ると所有者が nobodyとなっており、ディレクトリの削除ができません。(削除できないのが一番の問題ですが後回しにします) パーミッションの変更ができない点や、所有者がnobodyとなるのはサーバの仕様なんでしょうか? これがサーバの仕様ならば、サーバ上でディレクトリを作成しパーミッションを変更するのは不可能となってしまうのでしょうか? ご教授お願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう