Skip to main content

Add hosts entry using python

#Task : To add hosts entry to a server hosts file using python script.
# To whomsoever wondering why, this is a task which can be easily achieved via shell script, but I went forward with Python to learn python.

#Script to change the remote IP across the hosts file.
#How to run this script : python scriptname IP_that_we_need_to_set_hosts_entry
#Importing system library for passing arguments during runtime to incorporate as a jenkins job.
import sys

#The function add_remote add the remote entry to the hosts file and shows us the new entry that we added.
def add_remote():
 with open("/etc/hosts", "a") as myfile:
  myfile.write( str(entered_IP) + ' remote_server_hostname' + '\n' )
 with open("/etc/hosts", "r") as myfile:
  for line in myfile.readlines():
   if 'remote_server_hostname' in line:
    print(line)

   
        
#The function fun checks if the hosts entry for remote is added in the server. [Main function]
def fun():
 if 'remote_server_hostname' in open('/etc/hosts').read():
  print("Entry exists and is shown below...!!")
  print("++++++++++++++++++++++++++++++++++++++")
  print
  print
  print
 for line in open("/etc/hosts"):
    if "remote_server_hostname" in line:
     print line,
     print
     print
     print("++++++++++++++++++++++++++++++++++++++")
     dup_remote()
 else:
  print("Going to add the entry for remote...!!")
  add_remote()   


print
print "+++++++++++++++++++++++++++++++++====================++++++++++++++++++++++++++++++++"       
print 'The IP that we are going to add in this server as remote IP is', str(sys.argv[1])
print
print
global entered_IP
entered_IP = str(sys.argv[1]) #Global Parameter.

for line in open("/etc/hosts"):
 if "remote_server_hostname" in line:
  global existing_IP
  existing_IP = str(line.split()[0]) #Global Parameter           
print '\t \t \t \t Checking the hosts entry now...!! \t \t'
print '.........+++++...........++++....................+++++...........++++....................+++++...........++++...........'
print
print

#The function which check if the entered IP is same as the existing remote IP on the server.
def dup_remote():
 global existing_IP
 global entered_IP
 print 'The existing IP for remote in this server is --->', existing_IP
 print 'The new IP that we need to add on this server is --->', entered_IP
 print
 print '==================================================================='
 if entered_IP == existing_IP:
  sys.exit("We already have the new IP in the hosts file for remote. We are stopping the execution of this script now. Thank you...!!")
 else:
  print 'We are going to add the new remote IP now...!! Thanks..!'
  print "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
  print
  file = open("/etc/hosts", "r")
  readed_lines = file.readlines()
  file.close()
  file = open("/etc/hosts","w")
  for line in readed_lines:
   if 'remote_server_hostname' not in line:
    file.write(line)
  add_remote()
       
fun()

Comments

Popular posts from this blog

Qmail cheat sheet

http://supportlobby.com/blog/category/technical/qmail-technical/

========================
1) To check the mail queue in plesk from command line, you can use the command :

 /var/qmail/bin/qmail-qstat
========================

=========================
2) You can examine the queue with qmail-qread.

/var/qmail/bin/qmail-qread
=========================

=========================
3) From the qread command you get the message id . In the above example , let us assume one of the id is 524514 . Now you can find the file holding the email in/var/qmail/queue with find command.

# find /var/qmail/queue -iname 524514

/var/qmail/queue/remote/22/524514

/var/qmail/queue/mess/22/524514 (mail headers)

/var/qmail/queue/info/22/524514

4) From the mail header you get the IP address

vi /var/qmail/queue/mess/22/524514


Or

Shortcut for the cool guys
---------------------------------

find /var/qmail/queue -iname queu_id | grep mess | xargs less

=========================

=========================
4) If you wish …

Logical volume vmxxxx_img is used by another device - Error on LVM removal

Hi Folks,

I've faced error while trying to remove an LVM from the server.

The exact LVM error will be "Logical volume vmxxxx_img is used by another device" on executing the lvremove command.

Feel free to remove the following steps to remove the LVM from the server.

Note: Please remember to replace <id> with your VMID in the below section.

----------------------------------------------------------
dmsetup ls dmsetup info -c xen-vm<id>_img dmsetup remove xen-vm<id>_img lvremove -f /dev/xen/vm<id>_img ----------------------------------------------------------

Cheat sheet for Hardware RAID health check - Megaraid, Adaptec, 3wareraid and HPraid.

Hi Folks,

In another post "raid type" I've mentioned how to find if the server is running with Software or Hardware RAID.

Here, we can go ahead and check the health of the Hardware RAID array in the server.

The first thing we need to detect is the controller in which the raid is configured and you can easily get it from the another post that I mentioned earlier. However, I'm providing it here again for your convenience.

1. Login to the server as the root user.
2. Execute the following command.

/sbin/lspci -vv | grep -i raid

3. This will show the raid controller running on the server. The different types of controller I've worked with includes

a. Megaraid which uses megacli
b. Adaptec which uses arcconf.
c. 3ware raid which uses tw_cli
d. HPraid which uses hpacucli.

How to check the Megaraid array health status?

The Megaraid is usually installed in the /opt/MegaRAID and you can execute the following command to verify the health of the array.

/opt/MegaRAID/MegaCli…