変数としてgrep

変数としてgrep

sudoを使用して、成功と失敗に関係なく、すべてのログインを監視するスクリプトを作成しようとしています。

今私にいます:

set tdate = $(date "+%b %d")
set attempted_su_log = /var/log/suattempts

cat /var/log/secure | grep $tdate | grep 'servername su' >> $attempted_su_log

/var/log/secureで現在の日付を特定して発生した日付のエントリのみを取得するにはどうすればよいですか?

私が走るとき

cat /var/log/secure | grep 'Mar 18' | grep 'servername su'

コマンドラインから必要な結果を得ましたが、$ tdate変数で設定された現在の日付でgrepをスクリプトする方法がわかりません。

ベストアンサー1

grep:のパラメータを引用する必要がありますgrep "$tdate"。これは$tdate、二重引用符を追加しない限り、2つのスペースで区切られた単語に拡張され、2つの引数としてgrepに渡されるためです。

無駄なcatの使用を排除し、grepを一度だけ呼び出すようにスクリプトを改善できます。

</var/log/secure grep "$tdate.*servername su" >>"$attempted_su_log"

おすすめ記事