@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

SSHを利用したファイルの削除

1
投稿者投稿内容
nanasisu
会議室デビュー日: 2004/12/22
投稿数: 10
投稿日時: 2004-12-22 14:58
SSHを利用して管理サーバ上のCGIから不要ファイルの削除を行うようなプログラムを作成しようとしています。
そこでSSHのコマンド動作の確認を行ったのですが、

%ssh サーバ find ディレクトリ名 -type f -mtime +7 -exec rm -f {} \;
(指定サーバ内の指定ディレクトリ内にある1週間以前のファイルを削除する)

を実行すると以下のようなエラーになります。

%COMMAND=/usr/bin/find /home/ディレクトリ -type f -mtime +7 -exec rm -f {}
%
%find: -ok: no terminating ";"

なぜでしょうか?
サーバ上でfindコマンドのみ実行するときちんとファイルは削除できます。

%find ディレクトリ名 -type f -mtime +7 -exec rm -f {} \;
%

sshではだめなのでしょうか?
Izumi, Y.
ベテラン
会議室デビュー日: 2002/03/19
投稿数: 77
お住まい・勤務地: 東京
投稿日時: 2004-12-22 15:19
↓のように一重引用符で括ってみてはいかがでしょう?
コード:
% ssh サーバ 'find ディレクトリ名 -type f -mtime +7 -exec rm -f {} ;'


nanasisu
会議室デビュー日: 2004/12/22
投稿数: 10
投稿日時: 2004-12-22 16:13
返信ありがとうございます。

確認してみましたが

find: -exec: no terminating ";"

とエラー表示されます。またエラーについてですが、

no terminating ";"

という事は

-exec rm -f {} ;

の「;」が認識できていないのが原因ということなのでしょうか?
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2004-12-22 16:17
rsh を ssh でラッピングしてますか?

それとも、

>% ssh サーバ find ディレクトリ名 -type f -mtime +7 -exec rm -f {} \;

末尾の \; が「勝手に」無くなるという事ですか?
違うコマンド発行して同じ結果を得よう等と言うのは「野望」であって、
(もちろん、使い方によってできない事も無い場合もあるが)

野望は、人の作ったものではなく自作物で実現しようとした方が良いでしょう。

そうではなく、 \; が勝手になくなってしまう、という話でしたら、参考までに言うと、

% ssh サーバ 'find ディレクトリ名 -type f -mtime +7 -exec rm -f {} \;'

こうすれば、 \; が消える事はないでしょう。

[ メッセージ編集済み 編集者: コブラ 編集日時 2004-12-22 16:28 ]
nanasisu
会議室デビュー日: 2004/12/22
投稿数: 10
投稿日時: 2004-12-22 16:56
>rsh を ssh でラッピングしてますか?
→ラッピングの意味がよくわからないのですが、
whichコマンドで確認すると、rshとsshはそれぞれ別の実行ファイルとして存在しています。

>末尾の \; が「勝手に」無くなるという事ですか?
→エラーの
no terminating ";"
はそういう意味ではないという事でしょうか?

コマンドについてですが

%ssh サーバ 'find ディレクトリ名 -type f -mtime +7 -exec rm -f {} \;'
%password:
%(無応答→ファイルが削除されている)

%ssh サーバ 'find ディレクトリ名 -type f -mtime +7 -exec rm -f {} ;'
%password:
%find: -exec: no terminating ";"

%ssh サーバ find ディレクトリ名 -type f -mtime +7 -exec rm -f {} \;
%password:
%find: -exec: no terminating ";"

%ssh サーバ find ディレクトリ名 -type f -mtime +7 -exec rm -f {} ;
%password:
%find: -exec: no terminating ";"

となりました。
%ssh サーバ 'find ディレクトリ名 -type f -mtime +7 -exec rm -f {} \;'
とすればファイルを削除する事ができました。

ありがとうございます。
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2004-12-22 17:12
>no terminating ";"
>はそういう意味ではないという事でしょうか?

ところで、末尾の \; は「勝手に」無くなっていたのでしょうか?
nanasisu
会議室デビュー日: 2004/12/22
投稿数: 10
投稿日時: 2004-12-22 17:34
>ところで、末尾の ; は「勝手に」無くなっていたのでしょうか?
コマンド実行の際はきちんと入力して実行しました。
なのに

find: -exec: no terminating ";"

と表示されますので、そう解釈したのですが。。。
1

アイティメディアの提供サービス

ホワイトペーパー(TechTargetジャパン/閲覧には会員登録が必要です)

スキルアップ/キャリアアップ(JOB@IT)