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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Linux

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

Q&A

1回答

3197閲覧

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

R30san

総合スコア29

Linux

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

0グッド

0クリップ

投稿2015/08/27 05:42

下記のサイトを参考にして「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 等の長いログの結果は表示したくありません。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

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

あと気になるのは、(1)のP_PROC=~~のgrep -vの羅列が意味不明。bashの親プロセスの名前を知りたいのなら、

bash

1P_PROC=`ps p $PPID | awk '{print $5}'`

です。
また、ログファイル名に年月日時分秒がついてるので、ログローテートは無意味じゃないですか?syslogdとか関係ないし。

ログファイルから削除したいのなら、

bash

1P_PROC=`ps p $PPID | awk '{print $5}'` 2if [ "$P_PROC" = sshd: ]; then 3 LOGFILE=/var/log/auto_log/`date +%Y%m%d_%H%M%S`_$USER 4 script -fq $LOGFILE.$$ 5 不要物を削除するプログラム < $LOGFILE.$$ > $LOGFILE.log 6 rm $LOGFILE.$$ 7 exit 8fi

でどうでしょうか。この場合、scriptに-fを付けるかは検討が必要でしょう。

投稿2015/08/27 06:42

otn

総合スコア84503

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

R30san

2015/08/27 07: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」の設定によってファイルが沢山できると思うので、 ローテートさせる必要があるかと思って設定内容にいれましたが ログローテートとはできないということになりますでしょうか。 >ログファイルから削除したいのなら~不要物を削除するプログラム~ すいません。 このプログラムはどうやって(どんな言語?)で作成したらいいのでしょうか。 お手数ではございますが、よろしくお願いします。
otn

2015/08/27 12:21

><除外対象> ああ、そういう意味ですか。psの出力をgrep -vするのは全くの的外れですね。 > そもそもプログラムを作るしかできないということなのですね。 そういうことです。 >ログローテートとはできないということになりますでしょうか。 「ログローテートとは何なのか」についてよく考えてみてください。 あるいは、たくさん出来たファイルをどうしたいのですか?その操作はログローテートですか? >このプログラムはどうやって(どんな言語?)で作成したらいいのでしょうか。 言語は何でも良いですが、Cだとめんどくさいので、Perl/PHP/Rubyあたりでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問