Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ############################################################################################
- # This script connects to every server, obtains root
- # credentials (sudo is disabled), get info for every drive from the file (roots)
- # (Hostname, RAID_type, Disk_Name, HDD_type, Power_ON_Hours, Model_type, SerialNo)
- # and create .csv report
- #
- # format of the roots file should be:
- # hostname<TAB>rootpassword<TAB>adminpassword
- #
- ############################################################################################
- #!/usr/bin/python2
- import paramiko
- import re
- def mdadminfo():
- fileread=open("/home/roots", "r")
- w=open("/home/report.csv","a+")
- CSVFIRSTLINE="Hostname,RAID_type,Disk_Name,HDD_type,Power_ON_Hours,Model_type,SerialNo" + "\n"
- w.write(CSVFIRSTLINE)
- w.close()
- f1 = fileread.readlines()
- for x in f1:
- w=open("/home/dgonczol/Desktop/report.csv","a+")
- NAME,ROOTPASS,ADMINPASS = re.split(r'\t+', x)
- ADMINPASS=ADMINPASS[:-1] #removing last character because Python adds new line automatically
- print(NAME,ADMINPASS,ROOTPASS)
- print(ROOTPASS)
- print(ADMINPASS)
- ssh = paramiko.SSHClient()
- ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
- ssh.connect(NAME, port=22, username='admin', password=ADMINPASS)
- stdin, stdout, stderr = ssh.exec_command('lsblk | grep "0 disk" | cut -d" " -f1' )
- DISKSCOUNT = stdout.read()
- for DISK in DISKSCOUNT.splitlines():
- stdin, stdout, stderr = ssh.exec_command('/bin/su root -c "smartctl -a /dev/' + DISK + ' > /tmp/' + DISK + '"', get_pty=True)
- stdin.write(ROOTPASS)
- stdin.write('\n')
- DEBUG1=stdout.read()
- stdin, stdout, stderr = ssh.exec_command('head -1 /proc/mdstat' )
- MDSTAT = stdout.read()
- if "raid" in MDSTAT:
- RAID_TYPE="software"
- print "RAID_TYPE=RAID_TYPE=RAID_TYPE=RAID_TYPE=" + (RAID_TYPE) #[DEBUG]
- else:
- RAID_TYPE="hardware"
- print "RAID_TYPE=RAID_TYPE=RAID_TYPE=RAID_TYPE=" + RAID_TYPE #[DEBUG]
- if RAID_TYPE=="software":
- stdin, stdout, stderr = ssh.exec_command('hostname')
- HOSTNAME = stdout.read()
- stdin, stdout, stderr = ssh.exec_command('cat /tmp/' + DISK + ' | grep "Power_On_Hours" | cut -d" " -f44' )
- POWERON = stdout.read()
- stdin, stdout, stderr = ssh.exec_command('cat /tmp/' + DISK + ' | grep "Rotation Rate" | cut -d" " -f6' )
- TYPE = stdout.read()
- stdin, stdout, stderr = ssh.exec_command('cat /tmp/' + DISK + ' | grep "Device Model:" | cut -d" " -f7' )
- MODEL = stdout.read()
- stdin, stdout, stderr = ssh.exec_command('cat /tmp/' + DISK + ' | grep "Serial Number:" | cut -d" " -f6' )
- SERIAL = stdout.read()
- typelen=len(TYPE)
- if typelen == 0:
- TYPE = "HDD"
- else:
- TYPE = "SSD"
- print "Hostname: " + HOSTNAME + "HDD type:" + TYPE + "\n" + "Power on time: " + POWERON + "Model: " + MODEL + "Serial No: " + SERIAL
- #CSVFIRSTLINE="Hostname,Disk Name,HDD type,Power ON time,Model type,Serial No"
- #CSVLINE = HOSTNAME[:-1] + "," + RAID_TYPE + "," + DISK + "," + TYPE + "," + POWERON[:-1] + "," + MODEL[:-1] + "," + SERIAL
- CSVLINE = NAME + "," + RAID_TYPE + "," + DISK + "," + TYPE + "," + POWERON[:-1] + "," + MODEL[:-1] + "," + SERIAL
- #print "CSVLINE = " + CSVLINE #[DEBUG]
- w.write(CSVLINE)
- else:
- CSVLINE = NAME + "," + RAID_TYPE + ",,,,,\n"
- w.write(CSVLINE)
- w.close()
- stdin.flush()
- ssh.close()
- if __name__== "__main__":
- mdadminfo()
Add Comment
Please, Sign In to add comment