OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

シェルスクリプト

  • 暇なときにでも
  • 質問No.222934
  • 閲覧数509
  • ありがとう数1
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 70% (26/37)

シェルスクリプトに関しては、まったくの初心者です。
OSは、SolarisとLinuxですが、シェルスクリプトを利用して下記のような自動実行プログラムを作りたいのですが、どなたかご教授下さい。
一台のWWWサーバのログ(例:access.log)を、1日に一回(出来ましたら朝の5時)に別サーバに送信するプログラムなのですがいかがでしょうか?このとき、出来れば送信先のファイル名は、送信した日付(例:20020222.log)にしたいです。説明不足かも知れませんが、ひとまずこれでお願いします。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.3
レベル13

ベストアンサー率 37% (570/1525)

リモートマウントによる方法はGINOさんが回答されているのでftpでの方法を。

補足を読みましたがリモートログインの部分が疑問点だと思います。

ftpはリモートホストに接続したときにログインを試みます。
その時、(ローカル側の)ユーザのホームディレクトリに.netrcファイルが存在すると、その記述内容を参照してログインします。
.netrcの記述は
machine リモートホスト名 login リモートアカウント password リモートパスワード
です。

ただし、この方法は「テキストでパスワードを保持してしまう」という意味でセキュリティ的に問題を含みます。

ftp
.netrcに定義がある状態ならスクリプトの定義は

ftp リモートホスト名 << $
binary
put $DATE.tar
bye
$

("<<"はヒアドキュメントです。シェルによっては記述法が違うかもしれないのでご注意ください)

リモートホストのログインディレクトにputされると思います。

参考URLはJMプロジェクトのftpとnetrcのmanページ日本語訳です。
補足コメント
DonChan777

お礼率 70% (26/37)

またまたありがとうございます。
わけがわからなくなってきました。
すみませんがもう一度最初から、お願いできますでしょうか?
ちなみに、現在の仕様OSはSolarisです。

実行結果が
1Kg0224
?Invalid command
Not connected.
?Invalid command
とでます。

DATE=`date +"%y%m%d"`
cd access.log $DATE.log
まずここで、ファイルはコピーされるのですが、020224というファイルが作成され、拡張子がありません。ls -alでみると、権限のところに .logr--r--と表示されています。
しかも削除しようとすると存在しませんと言われます。
tar cvf $DATE.tar $DATE.log
これも、020224と作成され、.tar.r--r--と表示されます。多分上のLogのせいだと思うのですが...。
ftp -n << $
binary
put $DATE.tar
bye
$
投稿日時 - 2002-02-24 23:21:05
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル13

ベストアンサー率 37% (570/1525)

転送先のファイル名は dst=`date +%Y%m%d` で変数dstに年(4桁)月(2桁)日(2桁)でセットされます。 時間指定で毎日実行するのはcronで出来ます。 crontabの指定は 0 5 * * * 実行するスクリプト でいいと思います。 あとは、転送方法がわかれば出来るんですけど… ...続きを読む
転送先のファイル名は
dst=`date +%Y%m%d`
で変数dstに年(4桁)月(2桁)日(2桁)でセットされます。

時間指定で毎日実行するのはcronで出来ます。
crontabの指定は
0 5 * * * 実行するスクリプト
でいいと思います。

あとは、転送方法がわかれば出来るんですけど…
補足コメント
DonChan777

お礼率 70% (26/37)

回答ありがとうございます。自動実行はおそらくOKなのですが、sh自体が...。?

転送方法ですが、なんでもいいです。
ただ、access.logがあるサーバからしか出すことができません。

#!/usr/bin/sh
DATE=`date +"%y%m%d"`
cp /etc/access.log /etc/$DATE.log
tar cvf /etc/$DATE.tar /etc/$DATE.log
---------ここから下がよくわかりません(とりあえずftpで)
ftp ホスト名
?????
binary
put $DATE.tar
by

すみませんがよろしくお願いします。
投稿日時 - 2002-02-24 16:33:15


  • 回答No.2
レベル8

ベストアンサー率 36% (18/50)

ファイル名を日付にするのはNo1の方が書いていらっしゃるので省略します。 別サーバに転送するなら、リモートマウントをすればどうでしょう? これだと別マシンのディスクを自分のマシンのディスクのように扱えます。 リモートマウントについては、マニュアルに書いてあると思うのでこれも省略です。NFSとかを参照してください。書くと長くなりますので。 あとNo1の方の補足ですが、cronの設定は、roo ...続きを読む
ファイル名を日付にするのはNo1の方が書いていらっしゃるので省略します。

別サーバに転送するなら、リモートマウントをすればどうでしょう?
これだと別マシンのディスクを自分のマシンのディスクのように扱えます。
リモートマウントについては、マニュアルに書いてあると思うのでこれも省略です。NFSとかを参照してください。書くと長くなりますので。

あとNo1の方の補足ですが、cronの設定は、rootでログインしてcrontab -e シェルプログラムを実行するユーザ名です。
補足コメント
DonChan777

お礼率 70% (26/37)

ありがとうございます。早速ためさせていただきます。
投稿日時 - 2002-02-24 16:41:19
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ