質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • Linux

    3919questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

scriptコマンドの除外設定がうまくいかない

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 1,140

R30san

score 22


下記のサイトを参考にして「sshサーバ側で操作ログを取得」したい
設定致しました。
http://u888u.info/nuGo


(1).bash_profileに下記を記述

下記を一番下に追記
# Auto_System Log.
P_PROC=ps aux | grep $PPID | grep sshd | grep -v 'cat*' | grep -v 'less*' | grep -v 'more*' | grep -v 'tac*' | grep -v 'tail*' | grep -v 'ls*' | awk '{ print $11 }'
if [ "$P_PROC" = sshd: ]; then
    script -fq /var/log/auto_log/date +%Y%m%d_%H%M%S_$USER.log
exit
fi
(2)/va/log/ 配下にログの吐き出しディレクトリを作成
mkdir auto_log

(3) etc/logrotate.d/ 配下に ログの出力ファイルを作成し、下記の実行内容記載
touch auto_log
vi auto_log

/var/log/auto_log/*log {
    sharedscripts
    postrotate
        /bin/kill -HUP cat /var/run/syslogd.pid 2> /dev/null 2> /dev/null || true
    endscript
}

■質問内容■
(1)で下記のコマンドで確認するための下記のコマンドの出力結果を
”除外したい”のですが、うまくいきません。

<除外対象>
cat
less
more
tac
tail
ls

どのように設定したらいいでしょうか。
#特にcat /var/log/messages 等の長いログの結果は表示したくありません。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

0

scriptコマンドから起動されたbashの中で、入力されたコマンドによって、ファイルに記録したりしなかったりしたいと言うことなら、scriptコマンドでは出来ません。
やろうとすると、bashとscriptのソースに手を加えて専用のものを作るしかないでしょうね。

あと気になるのは、(1)のP_PROC=~~のgrep -vの羅列が意味不明。bashの親プロセスの名前を知りたいのなら、
P_PROC=`ps p $PPID | awk '{print $5}'`
です。
また、ログファイル名に年月日時分秒がついてるので、ログローテートは無意味じゃないですか?syslogdとか関係ないし。

ログファイルから削除したいのなら、
P_PROC=`ps p $PPID | awk '{print $5}'`
if [ "$P_PROC" = sshd: ]; then
    LOGFILE=/var/log/auto_log/`date +%Y%m%d_%H%M%S`_$USER
    script -fq $LOGFILE.$$
    不要物を削除するプログラム < $LOGFILE.$$ > $LOGFILE.log
    rm $LOGFILE.$$
    exit
fi 
でどうでしょうか。この場合、scriptに-fを付けるかは検討が必要でしょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/27 16:27


    ありがとうございます。
    >(1)のP_PROC=~~のgrep -vの羅列が意味不明。

    下記の記載
    | grep -v 'cat*' | grep -v 'less*' | grep -v 'more*' | grep -v 'tac*' | grep -v 'tail*' | grep -v 'ls*' |

    は grep に vオプションをつけたら'除外'になると思い入れました。

    <除外対象>
    cat
    less
    more
    tac
    tail
    ls

    そもそもプログラムを作るしかできないということなのですね。


    >ログファイル名に年月日時分秒がついてるので、ログローテートは無意味じゃないですか?
    すいません。
    この内容、詳しく教えてください。
    この「.bash_profile」の設定によってファイルが沢山できると思うので、
    ローテートさせる必要があるかと思って設定内容にいれましたが
    ログローテートとはできないということになりますでしょうか。


    >ログファイルから削除したいのなら~不要物を削除するプログラム~
    すいません。
    このプログラムはどうやって(どんな言語?)で作成したらいいのでしょうか。

    お手数ではございますが、よろしくお願いします。

    キャンセル

  • 2015/08/27 21:21

    ><除外対象>
    ああ、そういう意味ですか。psの出力をgrep -vするのは全くの的外れですね。

    > そもそもプログラムを作るしかできないということなのですね。
    そういうことです。

    >ログローテートとはできないということになりますでしょうか。
    「ログローテートとは何なのか」についてよく考えてみてください。
    あるいは、たくさん出来たファイルをどうしたいのですか?その操作はログローテートですか?

    >このプログラムはどうやって(どんな言語?)で作成したらいいのでしょうか。
    言語は何でも良いですが、Cだとめんどくさいので、Perl/PHP/Rubyあたりでしょうか。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Linux

    3919questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。