Monitoring Samba in Zabbix

I will give an example of monitoring the number of running Samba processes, as well as creating a triggering trigger when there are no running processes.
In a system with Samba, a Zabbix agent must be installed.
See my popular articles about Zabbix.

Create a template, for example, with a name “Template Service Samba” and add the following data item to it:

Name: Number of processes nmbd
Type: Zabbix agent
Key: proc.num[nmbd]

Similarly, we create for smbd.
You can also create data items that represent the amount of memory used by the process, in which case the key will look like this:

proc.mem[nmbd,,sum]

And also add graphics for them.

Now add a trigger for each process to see when the process is not running:

Name: Does not work nmbd on {HOST.NAME}
Expression: {Template Service Samba:proc.num[nmbd].max(1)}<1

Done.

How to fix “client denied by server configuration” error

I noticed once in the browser the error of opening a GoIP SMS crypt:

[authz_core:error] [pid 23415] [client 192.168.56.1:50388] AH01630: client denied by server configuration: /usr/local/goip/

As it turned out, the script was supposed to work in apache2 version 2.2 and in the file /etc/apache2/conf-enabled/goip.conf the following parameters were specified:

Order allow,deny
Allow from all

And in my case, an apache2 version of the newer 2.4 was installed, in which access control is configured a little differently, and to fix the error, change the above parameters to:

Require all granted

Or to restrict access to IP by resolving locally and to specified addresses:

Require local
Require ip 192.168.56.1 192.168.22.10

And restart apache2 to apply the changes:

sudo service apache2 restart

See also:
Access Control Apache2

White and black list iRedAdmin

Here are examples of viewing and working with iRedAdmin white and black lists.

Switch to the root user:

sudo -i

Let’s go to the directory with the script and execute it without options to see a brief help:

cd /opt/iredapd/tools/
python wblist_admin.py

To add the sender to the white list or black list, execute the following commands:

python wblist_admin.py --add --whitelist 192.168.25.2 info@example.com @test.com @.abc.com
python wblist_admin.py --add --blacklist 192.168.25.2 info@example.com @test.com @.abc.com

Example of deletion:

python wblist_admin.py --delete --whitelist 192.168.25.2

Adding a sender to the white or black list for a particular domain or user:

python wblist_admin.py --account mydomain.com --add --whitelist 192.168.25.2
python wblist_admin.py --account user@mydomain.com --add --blacklist 192.168.25.2

For outgoing messages:

python wblist_admin.py --outbound --account mydomain.com --add --whitelist 192.168.25.2

Commands for viewing lists:

python wblist_admin.py --list --whitelist
python wblist_admin.py --list --blacklist
python wblist_admin.py --account mydomain.com --list --whitelist
python wblist_admin.py --account user@mydomain.com --list --blacklist

In the iRedAdmin-Pro version, lists can be managed via the web interface.

See also:
Troubleshooting “Recipient address rejected: Intentional policy rejection, please try again later”

How to fix the error “Invalid command ‘RewriteEngine'”

I noticed one error after installing FreePBX:

Invalid command ‘RewriteEngine’, perhaps misspelled or defined by a module not included in the server configuration

To solve it, you need to activate the rewrite module in apache2:

sudo a2enmod rewrite

And restart apache2 to apply the changes:

sudo service apache2 restart

Done.

Configuring DHCP relay on Cisco

On the test, I’ll take the Cisco Catalyst 6509-E switch and configure it to forward DHCP packets to the DHCP server.
The switch is configured as L3 with assigned IP addresses in each VLAN.

Connect to the switch through the console or telnet and go to the configuration mode:

enable
configure t

Let’s assume the DHCP server address is 192.168.11.1 and we want to configure the transfer of DHCP broadcast packets to it on VLAN 100, for this we execute the commands:

interface Vlan100
ip helper-address 192.168.11.1
exit

Exit the configuration mode and save the configuration:

exit
write

Done.

How to connect Google Drive to Linux using Grive

Grive – the console client allows you to synchronize data with Google Drive.

Install the necessary components:

sudo apt-get install git cmake build-essential libgcrypt11-dev libyajl-dev \
libboost-all-dev libcurl4-openssl-dev libexpat1-dev libcppunit-dev binutils-dev

Tried to install the command apt-get install grive, but in this case I have an old version installed, which is no longer workable.
So create a directory and clone the latest Grive source files from the official source:

mkdir grive
cd grive/
sudo git clone https://github.com/Grive/grive.git
cd grive/

Let’s build Grive from the source files:

sudo dpkg-buildpackage -j4

If desired, you can build manually:

mkdir build
cd build
sudo cmake ..
sudo make -j4
sudo make install

The installation of Grive is complete, now we will create and move to any directory where Google Drive will be synchronized:

mkdir ~/GoogleDrive
cd ~/GoogleDrive

Request an authorization token from Google:

grive -a

After the startup, a link will be generated that will need to go to the browser, login to the account, allow access, copy the response code and enter it in the terminal, then synchronization will begin.

In the future, for synchronization, go to the directory and run Grive:

cd ~/GoogleDrive
grive

You can save the synchronization report to a file:

grive -l ~/log.txt

To view the current version of Grive, use the command:

sudo grive -v

Installing and Configuring Bacula

Bacula – a set of client-server programs for managing backups.
It consists of the components of Director Daemon (DD), Storage Daemon (SD), File Daemon (FD) and Bacula Console (BC).

To install in Ubuntu/Debian, perform:

sudo apt-get install bacula

During the installation process, the MySQL user’s root password will be requested and a database created, and Postfix installed.

Create directories and set permissions:

sudo mkdir -p /bacula/backup /bacula/restore
sudo chown -R bacula:bacula /bacula
sudo chmod -R 700 /bacula

Open the configuration file DD, for example, in the text editor nano:

sudo nano /etc/bacula/bacula-dir.conf

Let’s find “Standard Restore template” and there where “Where” we change the path:

Job {
Name = "RestoreFiles"
Type = Restore
Client=Blank-fd
FileSet="Full Set"
Storage = File
Pool = Default
Messages = Standard
Where = /bacula/restore
}

Further we find “List of files to be backed up” and a little bit lower where “File =” we specify that it is necessary to copy in a backup copy.

Unnecessary directories can be deleted by adding for example:

Exclude {
File = /bacula
File = /proc
File = /tmp
}

Open the configuration file SD:

sudo nano /etc/bacula/bacula-sd.conf

Let’s find “Devices supported by this Storage daemon” and specify in “Archive Device =” where to store backup copies, for example:

Archive Device = /bacula/backup

We test the correctness of the configuration:

sudo bacula-dir -tc /etc/bacula/bacula-dir.conf
sudo bacula-sd -tc /etc/bacula/bacula-sd.conf

If the command did not say anything, then everything is fine and there are no errors.

Restart bacula services to apply configuration changes:

sudo service bacula-sd restart
sudo service bacula-director restart

Let’s check if all three services are running:

netstat -nlpt | grep [b]acula

Open the console bacula:

sudo bconsole

Check status:

status

We type the command:

label

and specify the name of the backup, then specify 2 that this file.

Run our configured backup process (select 1 and yes):

run

View successful completion messages:

messages

Leave the console bacula:

quit

A backup file should appear in the /bacula/backup directory.

See also:
How to install Bacula-web

How to install Bacula-web

Bacula-Web – a web-based tool for creating reports and monitoring Bacula.

Install the necessary components:

sudo apt-get install apache2 libapache2-mod-php5 php5-mysql php5-gd
sudo a2enmod php5
sudo a2enmod rewrite

Open the PHP configuration file in the editor and specify the time zone:

sudo nano /etc/php5/apache2/php.ini
date.timezone = Europe/Kiev

And also for the directory with Bacula-Web we specify the option:

sudo nano /etc/apache2/sites-enabled/000-default.conf
<Directory /var/www/html/bacula-web>
AllowOverride All
</Directory>

Restart apache2 to apply the changes:

sudo service apache2 restart

Let’s go to the web server directory, download the archive with the latest version of Bacula-web and unpack it:

cd /var/www/html
curl -O http://www.bacula-web.org/files/bacula-web.org/downloads/bacula-web-latest.tgz
mkdir -v /var/www/html/bacula-web
tar -xzf bacula-web-latest.tgz -C /var/www/html/bacula-web

Make a copy of the sample configuration file and open it for example in the text editor nano:

cd /var/www/html/bacula-web/application/config
cp -v config.php.sample config.php
sudo nano /var/www/html/bacula-web/application/config/config.php

Uncomment and configure MySQL parameters:

$config[0]['label'] = 'Backup Server';
$config[0]['host'] = 'localhost';
$config[0]['login'] = 'bacula';
$config[0]['password'] = 'test';
$config[0]['db_name'] = 'bacula';
$config[0]['db_type'] = 'mysql';
$config[0]['db_port'] = '3306';

Since some commands were executed through sudo, we will specify the correct owner of the files:

sudo chown -R www-data:www-data /var/www/html/bacula-web

This completes the installation, you can open the Bacula-Web from the http://SERVER/bacula-web link, and also it is advisable to look at the http://SERVER/bacula-web/test.php test page that will tell you whether all the necessary components are installed and configured.

See also:
Installing and Configuring Bacula