Sunday, 21 October 2018

Linux two Face ssh authentication with centralized Database server

Create Databases :- 

  1. mysql -uroot -p
  2. create database Login;
  3. use Login;
  4. create table user (id int(10), Name varchar(25), Password varchar(25));
  5. insert into user (id,Name,Password) values (1,'mukesh','mukesh@123');
  6. exit

Copy Below script  :-

vim /tmp/

mukesh=`/usr/bin/ps ax | grep $$ | grep -v grep | awk '{ print $2 }'`
user=root                 #Databases UserName
password=Voip@90 #Database Password
DB=Login                 #Database Name
host= #Set Local or centralized Server Ip
while [ 1=1 ]
UserName=$(whiptail --inputbox "please enter your username" 8 78 --title "User Name" 3>&1 1>&2 2>&3)
                                                                        # A trick to swap stdout and stderr.
# Again, you can pack this inside if, but it seems really long for some 80-col terminal users.
if [ $exitstatus = 0 ]; then

                Password=$(whiptail --passwordbox "please enter your Password" 8 78 --title "Password" 3>&1 1>&2 2>&3)
                if [ $exitstatus = 0 ]; then
    for ((i = 0 ; i <= 100 ; i+=5)); do
        sleep 0.1
        echo $i
} | whiptail --gauge "Please wait while we check..." 6 50 0

                IsUserExist=$(echo "SELECT count(*) as '' from user  WHERE Name='$UserName'  AND Password='$Password' limit 1 " | mysql $DB -u $user -p$password )
                        if [ "$IsUserExist" -eq 1 ] ;then
echo "Thanks for Login $UserName" > test_textbox
#                  filename height width
whiptail --textbox test_textbox 12 80
                        echo "You have enter wrong Username & Password." > test_textbox
#                  filename height width
whiptail --textbox test_textbox 12 80
                        logout=`/usr/bin/pkill -9 -t $mukesh`
                logout=`/usr/bin/pkill -9 -t $mukesh`

    echo "User selected Cancel."
logout=`/usr/bin/pkill -9 -t $mukesh`

Sunday, 7 October 2018

Create custom Centos 7 Kickstart boot CD iso

Scenario: You want to create a custom CentOS 7 / RHEL 7 boot CD with custom kickstart files located on the CD. Furthermore you want to perform some post installation tasks like running some Puppet manifests. In this post I describe the process based on CentOS 7.1.

1) Install a base CentOS 7.1 virtual machine
First you need to install your build environment. It is sufficient to install a “@Base” system.
2) Prepare your build environment
If the installation of your CentOS 7.1 virtual machine is finished you can continue with preparing your build environment.
2.1 Create needed folder structure as root

mkdir -p ~/kickstart_build/isolinux/{images,ks,LiveOS,Packages,postinstall}

The folders will contain the following:
  • images: contents of the images directory located on the CentOS DVD
  • ks: all your kickstart files which we will create later on
  • LiveOS: contents of the LieveOS directory on the CentOS DVD
  • Packages: all RPM packages from CentOS 7 DVD plus additional packages. In my case I will also install Puppet agent. Therefore I need some packages from Puppet Labs
  • postinstall: everything you want so to do after installation, for example executing custom scripts or in my case Puppet modules.
2.2 Copy needed content
Now you need to copy all needed content from the CentOS DVD to your local folders. Please save the CentOS 7 ISO file in /tmp and mount it somewhere.

mkdir -p /mnt/iso
mount -o loop /tmp/CentOS-7-x86_64-DVD-1503-01.iso /mnt/iso
cp /mnt/iso/.discinfo ~/kickstart_build/isolinux/
cp /mnt/iso/isolinux/* ~/kickstart_build/isolinux/
rsync -av /mnt/iso/images/ ~/kickstart_build/isolinux/images/
cp /mnt/iso/LiveOS/* ~/kickstart_build/isolinux/LiveOS/
ll /mnt/iso/repodata/ | grep -i comps
-rw-r--r--. 1 root root 157580 1. Apr 01:43 0e6e90965f55146ba5025ea450f822d1bb0267d0299ef64dd4365825e6bad995-c7-x86_64-comps.xml.gz

cp /mnt/iso/repodata/0e6e90965f55146ba5025ea450f822d1bb0267d0299ef64dd4365825e6bad995-c7-x86_64-comps.xml.gz ~/kickstart_build/
cd ~/kickstart_build/
gunzip 0e6e90965f55146ba5025ea450f822d1bb0267d0299ef64dd4365825e6bad995-c7-x86_64-comps.xml
mv 0e6e90965f55146ba5025ea450f822d1bb0267d0299ef64dd4365825e6bad995-c7-x86_64-comps.xml comps.xml

2.3 Get additional packages if needed
As I already mentioned I will also install Puppet Opensource client on my machines to install and configure my machines as needed. So I need to implement additional packages on the custom boot ISO to be able to install and run Puppet manifests.

mkdir /tmp/packages
cd /tmp/packages
wget -e robots=off --mirror --no-parent --no-host-directories --cut-dirs=4
wget -e robots=off --mirror --no-parent --no-host-directories --cut-dirs=4
rm -Rf index* repodata

2.4 Copy all your packages and create repodata
Now it`s time to bring the CentOS packages and your additional needed packages together. First copy all packages from CentOS 7 ISO to your local folder. Afterwards you can move all additional packages from /tmp/packages to your kickstart packages folder:

rsync -av /mnt/iso/Packages/ ~/kickstart_build/isolinux/Packages/
rsync -av /tmp/packages/ ~/kickstart_build/isolinux/Packages/

Now we need to create the repodata folder in ~/kickstart_build/isolinux/Packages/:

yum install -y createrepo
cd ~/kickstart_build/isolinux
createrepo -g ~/kickstart_build/comps.xml .

3) Prepare Kickstart file
3.1 Create a kickstart
You need to create the kickstart file in ~/kickstart_build/isolinux/ks and name it for example ks.cfg. The content can look like this:

# System authorization information
auth --enableshadow --passalgo=sha512

# Use CDROM installation media
# Use text install
# Run the Setup Agent on first boot
firstboot --disable
#ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=de-nodeadkeys --xlayouts='de (nodeadkeys)'
# System language
lang de_DE.UTF-8
# Network information
network --bootproto=static --device=ens3 --noipv6 --activate --ip= --netmask= --gateway= --nameserver= --hostname=infrastructure.reimer.local
network --bootproto=static --device=ens9 --noipv6 --activate --ip= --netmask=
# Root password
rootpw --iscrypted "some-crypted-password"
# System timezone
timezone Europe/Berlin --isUtc
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="xfs" --size=512
part pv.219 --fstype="lvmpv" --size 1 --grow
volgroup vg_system --pesize=4096 pv.219
logvol / --fstype="xfs" --size=1 --grow --label="rootlv" --name=rootlv --vgname=vg_system
logvol swap --fstype="swap" --size=2048 --name=swaplv --vgname=vg_system

You can validate your kickstart file like this:

ksvalidator ~/kickstart_build/isolinux/ks/ks.cfg

To create a crypted root password which you can use within your kickstart file do the following:

python -c 'import crypt; print(crypt.crypt("My Password", "$6$My Salt"))'

This generates a SHA512 crypted password.
3.2 Create kickstart postinstallation section
If you want to perform some postinstallation tasks within your kickstart installation you can add an appropriate section in the kickstart file. In my case I want to perform my Puppet configuration during the kickstart installation.
HINT: Be careful. In this case the first step will be the copy of the Puppet manifests from the ISO from which you boot your machine you want to kickstart. This action takes place in the NON-CHROOTED environment. The second step will be the Puppet run itself. This takes place in the CHROOTED environment.
Add the following at the end of your kickstart file:

# Copy needed Puppet files to /root/postinstall
%post --nochroot

set -x -v
exec 1>/mnt/sysimage/root/kickstart-stage1.log 2>&1
echo "==> copying files from media to install drive..."
cp -r /run/install/repo/postinstall /mnt/sysimage/root
set -x -v
exec 1>/root/kickstart-stage2.log 2>&1
ls -l /root/postinstall
puppet apply -l /root/puppetrun.log /root/postinstall/puppet/manifests/site.pp --modulepath=/root/postinstall/puppet/modules/ $*

4) Time for action: create your custom CentOS 7 ISO file and test it

yum install -y genisoimage
cd ~/kickstart_build/
mkisofs -o centos-7-custom.iso -b isolinux.bin -c -no-emul-boot -V 'CentOS 7 x86_64' -boot-load-size 4 -boot-info-table -R -J -v -T isolinux/

Now start a new virtual machine from your custom CentOS 7 ISO file and insert the following option at kernel boot:

linux inst.ks=cdrom:/dev/cdrom:/ks/ks.cfg

Congratulations🙂 Your kickstart installation should run.

Friday, 2 March 2018

WARNING[4621] sig_pri.c: Span 1: Got SETUP with duplicate call ptr (0x7f6060000b20). Dropping call.

As i see this issue come with libpri updated version libpri-1.4.15 or more.

Resolve :-  After Down grade the libpri version from  libpri-1.4.15 to libpri-1.4.12. Its working fine now.


Wednesday, 21 February 2018

How to change Password by using sh script

Please find below script For change password automatic . set below script in crontab

Create new file .sh

vim  /home/Alert/

Enter below line in .sh file

# Change password echo -e "Password\nPassword" | passwd username

Set permission for .sh file

chmod 777 /home/Alert/

set script in crontab :-

45 10 * * * /bin/sh /home/Alert/


How to install perl modules on linux

Please find below command :-

yum -y install perl-CPAN
perl -MCPAN -e shell
yum install perl-DBD-mysql -y

Then start installation of modules :-

[root@localhost ~]# perl -MCPAN -e shell

Then Enter Below command :-


   install "Asterisk::AMI"
   install "asterisk::perl"
   install DBI
   install LWP
   install "Bit::Vector"
   install CGI
   install "Carp::Clan"
   install "Compress::Raw::Bzip2"
   install "Compress::Raw::Zlib"
   install "Config::Abstract"
   install DCOP
   install "Date::Calc"
   install "Device::Gsm"
   install "Device::Modem"
   install "Device::SerialPort"
   install "Email::Date::Format"
   install "Encode::Locale"
   install "ExtUtils::MakeMaker"
   install FCGI
   install "File::Listing"
   install "HTTP::Cookies"
   install "HTTP::Daemon"
   install "HTTP::Date"
   install "HTTP::Message"
   install "HTTP::Negotiate"
   install "IO::Compress::Base"
   install "LWP::MediaTypes"
   install "List::Util"
   install "MIME::Lite"
   install "MIME::Types"
   install "Mail::Lite"
   install "Net::HTTP"
   install Perl
   install "Pod::Simple"
   install Storable
   install "Sub::Uplevel"
   install "Test::Exception"
   install "Test::Pod"
   install "Test::Simple"
   install "Time::Local"
   install "Time::Piece"
   install "Template::Plugin::TimeDate"
   install "WWW::RobotRules"


Tuesday, 20 February 2018

mount: unknown filesystem type LVM2_member

Please find below :- 

root@zoo:~# mount /dev/sdd2 /home/mukesh
mount: unknown filesystem type 'LVM2_member'

root@zoo:~# fdisk -l /dev/sdd
Disk /dev/sdd: 233.8 GiB, 251000193024 bytes, 490234752 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0009345d
Device     Boot  Start       End   Sectors   Size Id Type
/dev/sdd1  *        63    208844    208782   102M 83 Linux
/dev/sdd2       208845 488247479 488038635 232.7G 8e Linux LVM
(/dev/sdi1 is /boot partition, /dev/sdi2 is where the /home data resides)

Seems lvm2 tools also provide a way to check if its lvm or not, using lvmdiskscan (/dev/sdd2 here)

root@zoo:~# lvmdiskscan
  /dev/sdb1  [       1.82 TiB]
  /dev/sdc2  [     149.04 GiB]
  /dev/sdd1  [     101.94 MiB]
  /dev/sdd2  [     232.71 GiB] LVM physical volume
  0 disks
  4 partitions
  0 LVM physical volume whole disks
  1 LVM physical volume

Scan LVM

root@zoo:~# lvscan
 inactive '/dev/VolGroup00/LogVol00' [457.75 GiB] inherit
 inactive '/dev/VolGroup00/LogVol01' [1.94 GiB] inherit

Run below command for Activate LVM

root@zoo:~# vgchange -ay

Check Now

root@zoo:~# lvscan
  ACTIVE            '/dev/VolGroup00/LogVol00' [457.75 GiB] inherit
  ACTIVE            '/dev/VolGroup00/LogVol01' [1.94 GiB] inherit

Now mount :

mount /dev/VolGroup00/LogVol00 /home/mukesh

Done !

Monday, 19 February 2018


Please find below steps :-

JAVA installation : 

Jenkins requires Java 7 Minimum version.

#yum search java |grep openjdk
#yum install java-1.8.0-openjdk* wget -y 

Then check JAVA version 

1) #java -version

Output :-
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)

Install RPM For Jenkins

#rpm –import
#cd /etc/yum.repos.d/

Install Jenkins:

#yum install jenkins -y

Now We have to enable, start and check the status of Jenkins:

systemctl enable jenkins
systemctl start jenkins
systemctl status jenkins

Thursday, 15 February 2018

How to Install Python 2.7 on centos 6 & 7

Installation steps :-

Check Python version:
1) python -V

update Puthon version:

1) sudo yum update
2) sudo yum install scl-utils
3) sudo yum install centos-release-scl-rh
4) sudo yum install python27
5) sudo scl enable python27 bash

Verify the update:

1) python -V
  Python 2.7.8

After logging out or restarting, you must enable python 2.7:
$ sudo scl enable python27 bash
Enabling Python 2.7 in .bash_profile or .bashrc causes the machine to hang because CentOS 6 relies on Python 2.6 for Yum.

Tuesday, 13 February 2018

How to install NTP in Linux

Tested configuration:-

At server side:-
1) Yum install ntp* -y
2) vim /etc/ntp.conf 
Here on line 8:- restrict default netrap nopeer noquery (From here remove nopeer and noquery)
3) Then restart ntp service

At client side:-

1) Install package chrony* 
2) Yum install system-config-date
3) system-config-date 
a) (Here check mark on syncronize date and time over network)
 b) remove all ntp server
c) add server IP of NTP server

4) Advanced Option 
a) Speed up initial syncronized (OK)
5) Then restart services

Trouble shooting:-

1) If after restart of service only time is changing then please check hard ware clock of both machines:- By following 
hwclock --show

If hardware clock is not same then sync there clock after restart NTP service

2) If hardware clock are same but still it is not working then change the BIOS cell of machine. It may be Down thats why it is not able to work with hardware.

Please do configuration and if face any problem then please let me know.

How to Download and Install RHEL8 Beta For Free (Red Hat Enterprise Linux)

RHEL (Red Hat Enterprise Linux) 8 beta was released on November 14, 2018, 4 years after the release of RHEL 7. This tutorial will be showi...