Pages

Thursday, April 25, 2013

Exim4 Error : "Fatal: no entropy gathering module detected"

Exim4 Error : "Fatal: no entropy gathering module detected"
I just want to share with you all the error that I came across regarding exim and here I'm providing the fix for it as well which worked perfectly for me. I tried to send email using 'mail' command which returned me this error message "Fatal: no entropy gathering module detected".

Here is the fix for this that got it working for me!

SSH to your server and perform the following steps :

# cd /dev
Here you can find either URANDOM and/or RANDOM
Delete them.

# rm -rf urandom
# rm -rf random

Now we have to remake both of them and chmod it.
# /sbin/MAKEDEV urandom
# /sbin/MAKEDEV random
# chmod 777 /dev/urandom
# chmod 777 /dev/random

Nagios Configuration

Nagios Configuration
Following steps will take place when Nagios (installed on Nagios server) monitors a service (eg: server load) on the remote host

1) Nagios will execute check_nrpe command on nagios-server and will request it to monitor disk usage on remote host using check_load command.
2) The check_nrpe on the nagios-server will contact the NRPE daemon on remote host and will request it to execute the check_load on remote host.
3) The results of the check_load command will be returned back by NRPE daemon to the check_nrpe on nagios-server.

Nagios Server (check_nrpe) ~~> Remote host (NRPE deamon) ~~> check_load

Nagios Server (check_nrpe) <~~ Remote host (NRPE deamon) <~~ check_load (returns the server load)

Before we begin, we need to install some packages on the remote host for Nagios to work fine.

# yum install elinks gcc make gcc-c++
# yum -y install openssl-devel
# useradd nagios
# passwd nagios
# cd /usr/src/

Then install Nagios plugin and NRPE on remote host.

Install Plug-in
# wget http://sourceforge.net/projects/nagiosplug/files/nagiosplug/1.4.15/nagios-plugins-1.4.15.tar.gz/download
# tar -zxvf nagios-plugins-1.4.15.tar.gz && cd nagios-plugins-1.4.15
# ./configure --with-nagios-user=nagios --with-nagios-group=nagios
# make
# make install
# chown nagios:nagios /usr/local/nagios
# chown -R nagios:nagios /usr/local/nagios/libexec
# cd ..

Install NRPE
#wget http://sourceforge.net/projects/nagios/files/nrpe-2.x/nrpe-2.12/nrpe-2.12.tar.gz/download
# tar -zxvf nrpe-2.12.tar.gz && cd nrpe-2.12
# ./configure
# make all
# make install-plugin
# make install-daemon
# make install-daemon-config
# make install-xinetd
Edit Xinetd NRPE entry
# vi /etc/xinetd.d/nrpe
only_from = 127.0.0.1 Server-IP (nagios monitoring server ip-address is: )
:wq (save and exit)

Edit services file entry
# vi /etc/services
nrpe 5666/tcp # Entry for NRPE daemon
:wq (save and exit)

Restart xinetd
# service xinetd restart

Verify whether NRPE is listening
# netstat -at |grep nrpe # output -: tcp 0 0 *:nrpe *.* LISTEN
Verify to make sure the NRPE is functioning properly
# /usr/local/nagios/libexec/check_nrpe -H localhost
NRPE v2.12

Configuring Nagios monitoring server to monitor the remote host

# cd /usr/src
# wget http://sourceforge.net/projects/nagios/files/nrpe-2.x/nrpe-2.12/nrpe-2.12.tar.gz/download
# tar -zxvf nrpe-2.12.tar.gz && cd nrpe-2.12
# yum -y install openssl-devel
# yum install perl
# ./configure
# make all
# make install-plugin

Create a command definition
# vi /home/nagios/public_html/etc/objects/commands.cfg
Add the following:

# NRPE CHECK COMMAND
# Command to use NRPE to check remote host systems
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

Create configuration file for remote host
# cp –prf /home/nagios/www/etc/objects/ localhost.cfg /home/nagios/www/etc/objects/remotehost.cfg
# vi /home/nagios/www/etc/objects/remotehost.cfg
Replace the values “host_name” “alias” “address” with the values that match your setup:

** The “host_name” you set for the “define_host” section must match the “host_name” in the “define_service” section **

# Define a host for the remote machine
define host{
use linux-server ; Name of host template to use
; This host definition will inherit all variables that are defined
; in (or inherited by) the linux-server host template definition.
host_name alpha235
alias alpha235
address 62.75.215.12
}
# SERVICE DEFINITIONS
# Define a service to "ping" the local machine

define service{
use generic-service ; Name of service template to use
host_name alpha235
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}

# Define a service to check the disk space of the root partition.

define service{
use generic-service ; Name of service template to use
host_name alpha235
service_description Root Partition
check_command check_nrpe!check_disk
}

# Define a service to check the number of currently logged in users on the remotehost.

define service{
use generic-service ; Name of service template to use
host_name alpha235
service_description Current Users
check_command check_nrpe!check_users
}

# Define a service to check the number of currently running processes on the remote host.

define service{
use generic-service ; Name of service template to use
host_name alpha235
service_description Total Processes
check_command check_nrpe!check_total_procs
}
# Define a service to check the load on the remote host.

define service{
use generic-service ; Name of service template to use
host_name alpha235
service_description Current Load
check_command check_nrpe!check_load
}

# Define a service to check SSH on the remote host.
# Disable notifications for this service by default, as not all users may have SSH enabled.

define service{
use generic-service ; Name of service template to use
host_name alpha235
service_description SSH
check_command check_nrpe!check_ssh
notifications_enabled 0
}
# Define a service to check HTTP on the remote host.
# Disable notifications for this service by default, as not all users may have HTTP enabled.
define service{
use generic-service ; Name of service template to use
host_name alpha235
service_description HTTP
check_command check_nrpe!check_http
notifications_enabled 0
}

Activate the remotehost.cfg template
# vi /usr/local/nagios/etc/nagios.cfg
Definitions for monitoring remote Linux machine
cfg_file=/home/nagios/www/etc/objects/remotehost.cfg
Verify Nagios Configuration Files
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
# /home/nagios/public_html/bin/nagios -v /home/nagios/public_html/etc/nagios.cfg (In our server)
Output : ...
...
Things look okay - No serious problems were detected during the pre-flight check

Verify whether nagios monitoring server can talk to the remote host
# /usr/local/nagios/libexec/check_nrpe -H 62.75.215.12
NRPE v2.12

Start nagios
# /home/nagios/www/bin/nagios -d /home/nagios/www/etc/nagios.cfg

Restart nagios (if already running)
# kill -HUP <nagios_pid>

# /usr/local/nagios/libexec/check_nrpe -H 62.75.215.12 -c check_load (To check the load of the remote server)
OK - load average: 0.35, 0.30, 0.23|load1=0.350;15.000;30.000;0; load5=0.300;10.000;25.000;0; load15=0.230;5.000;20.000;0;

(Usage: check_nrpe -H <host> [-n] [-u] [-p <port>] [-t <timeout>] [-c <command>] [-a <arglist...>])

Mastering Grep: Beyond Basic Search – Tips and Tricks for Linux Users

Advanced Grep Tips and Tricks for Power Users

The grep command is indispensable for Linux users, and its real power emerges when you move beyond basic usage. Here’s a deep dive into advanced grep techniques to maximize your productivity and search precision.

Harnessing Regular Expressions for Complex Patterns

  • Basic Regular Expressions (BRE): By default, grep uses BRE, letting you match patterns with metacharacters like:
    • . (dot): Matches any single character.
    • * (asterisk): Matches the preceding character zero or more times.
    • ^ (caret): Matches the start of a line.
    • $ (dollar): Matches the end of a line.
    • [] (square brackets): Matches any single character inside the brackets, e.g., [aeiou] for vowels.
    • (negated brackets): Matches any character not inside the brackets, e.g., [^0-9] for non-digits.

    Example:
    grep "^Error.*" logfile.txt
    Finds lines starting with "Error" followed by any characters.

  • Extended Regular Expressions (ERE): Enable with -E, unlocking:
    • + (plus): One or more occurrences.
    • ? (question mark): Zero or one occurrence.
    • | (pipe): Logical OR.
    • () (parentheses): Grouping.

    Example:
    grep -E "warning|critical" logfile.txt
    Finds lines containing either "warning" or "critical".

Refining Output with Useful Options

  • -i: Case-insensitive search.
  • -v: Invert match (show lines not matching the pattern).
  • -c: Count matching lines.
  • -n: Show line numbers.
  • -l: List filenames with matches.
  • -h: Suppress filename in output.
  • -r or -R: Recursive search through directories (-R follows symlinks).
  • -w: Match whole words only.
  • -o: Print only the matching part of the line.
  • -A <num>: Show <num> lines after a match.
  • -B <num>: Show <num> lines before a match.
  • -C <num>: Show <num> lines before and after (context).

Example:
grep -ric "exception" *.log
Counts case-insensitive matches for "exception" in all .log files recursively.

Leveraging Context for Better Understanding

When analyzing logs or code, context is crucial. The -A, -B, and -C options let you view lines before and/or after matches.

Example:
grep -C 2 "error" application.log
Shows two lines before and after each match for "error".

Searching Multiple Patterns Efficiently

  • Use -e for multiple patterns in one command:
    grep -e "pattern1" -e "pattern2" file.txt
  • Use a pattern file with -f:
    grep -f patterns.txt file.txt
    Each line in patterns.txt is treated as a separate pattern.

Combining Grep with Other Powerful Tools

  • Pipes: Filter output from other commands:
    ps aux | grep "nginx"
    Lists processes containing "nginx".
  • Find and xargs: Search files by content:
    find . -type f -print0 | xargs -0 grep "secret key"
    Finds all files and searches for "secret key" in them.
  • Parallel Execution: For large-scale searches, combine with xargs -P for parallelism:
    find /logs/ -type f | xargs -P 4 grep "error"
    This uses 4 parallel processes for faster searching.

Additional Pro Tips

  • Recursive Search with File Type Filtering:
    Use --include and --exclude to limit search scope:
    grep -r --include "*.txt" "search_term" /path/to/directory
  • Fixed String Search:
    If you don’t need regex, use fgrep or grep -F for faster fixed-string searches:
    grep -F "fixed_string" filename.txt
  • Binary Files:
    For large or binary files, use:
    grep --binary-files=text "search_term" largefile.bin

Summary Table: Key Grep Options

Option Description
-iCase-insensitive search
-vInvert match
-cCount matches
-nShow line numbers
-lList matching filenames
-r / -RRecursive search (with/without symlinks)
-wMatch whole words
-oPrint only match
-A/-B/-CShow context lines
-eMultiple patterns
-fPatterns from file
-EExtended regex
--includeInclude files by pattern
--excludeExclude files by pattern

Mastering these advanced grep techniques will dramatically improve your efficiency when searching and analyzing text on Linux systems.