1
私は、ファイルが本当にその中のコンテンツに必要なものかどうかを判断する方法を探しています。ファイル内の内容でファイルを定義します
セキュリティとメッセージの例のファイル。ファイル安全なが本当に安全なであることを
は/ var/log /安全な
Oct 27 06:45:32 host sshd[16609]: Accepted publickey for username from 11.22.33.1 port 57870 ssh2: RSA SHA256:XXXXXX
Oct 27 06:45:32 host sshd[16609]: pam_unix(sshd:session): session opened for user username by (uid=0)
Oct 27 06:45:46 host sudo: username : TTY=pts/0 ; PWD=/home/username ; USER=root ; COMMAND=/bin/su
の/ var/log/messagesに
Oct 27 03:51:01 host systemd: Started Session 1000 of user root.
Oct 27 03:51:01 host systemd: Starting Session 1000 of user root.
Oct 27 03:54:01 host systemd: Started Session 1001 of user root.
それが知ることができますまたはメッセージは実際にはです。メッセージes?
おそらくそれは、キーワード
filename = "/var/log/messages"
message_words = ["systemd", "kernel", "freshclam"]
if File.file?(filename) then
File.open(filename, 'r') { |f| @w = f.read() }
message_words.each do |x|
puts "pass" if @w.include?(x)
end
end
でファイルを定義するために理にかなっているか、いくつかのテンプレートのためにそれを行う方法はありますか? PATTERN
はRegexp
のインスタンスである
_ "特定のパターンに一致" _ - どのパターン? – Stefan
はい。正規表現は、「特定のパターンと一致する」というフレーズが含まれている質問を開始するのに適しています。 –
それが '場合File.open(my_log_file、 'R')することができreadlineの最初の行に常にあった場合は[ 'ホストはsystemdに:']。あなたのコード end'の #レスト ないと、あなたの場合はログファイルは大きく、この文字列の最初の出現を確認するためだけにファイル全体を読み取る必要はありません。文字列が見つかるまで、ファイルの読み込みを怠るでしょう。 'if File.open(my_log_file、 'r')。each_line.any? {|行| [[host systemd: ']]} #残りのコード end' – peter