Oct-22-2019, 12:28 PM
I think that I may be in way over my head with this project. I am pretty new at python coding but I am having a lot of fun with it. In this automation project I am trying to ssh (using netmiko) into a list of IP addresses, open and read configuration files, post the results to a csv in the devices I am SSH'ing from, then close the ssh connection. I have gotten the csv portion working on a single computer:
-Josh
from datetime import datetime
import csv
#import os - for future use
import socket
# provide a list of IP addresses to scan
# Will add ssh capabilities later...commenting out
# ip_addresses = [10.252.247.141, 10.252.247.142]
hostname = (socket.gethostname())
# create the output file int the tmp directory for the results of the checks and open so it can be written to
with open('tmp/config_check_' + str(datetime.now().strftime('%Y_%m_%d_%H_%M')) + '.csv', 'w') as output_file:
fieldnames = ['Hostname', 'List', 'Result']
writer = csv.DictWriter(output_file, fieldnames=fieldnames)
writer.writeheader()
# check for martian packet setting
martian_setting = ('martians = 0')
sysctl_file = open('/etc/sysctl.conf', 'r')
if martian_setting in sysctl_file.read():
result = 'yes'
else:
result = 'no'
martian_results = (hostname, martian_setting, result)
results_writer = csv.writer(output_file, delimiter=',', lineterminator='\n')
results_writer.writerow(martian_results)
sysctl_file.close()
# check for message size settings
message_settings = ('discoveryagent.message.maxMessageSize=1572864', 'discoveryagent.message.maxTimeBetweenMessageSend=180',
'discoveryagent.target.queue.maxSize=30000')
messagesize_file = open('/usr/local/lumeta/discovery-agent/discovery-agent.properties', 'r')
for message in message_settings:
if message in messagesize_file.read():
result = 'yes'
else:
result = 'no'
message_results = (hostname, martian_setting, result)
results_writer = csv.writer(output_file, delimiter=',', lineterminator='\n')
results_writer.writerow(message_results)
messagesize_file.close()
# Check fips setting
fips_settings = ('fips=0')
fips_file = open('/boot/grub/grub.conf', 'r')
if fips_settings in fips_file.read():
result = 'yes'
else:
result = 'no'
fips_results = (hostname, martian_setting, result)
results_writer = csv.writer(output_file, delimiter=',', lineterminator='\n')
results_writer.writerow(fips_results)
fips_file.close()
# check utc setting
utc_setting = ('UTC')
utc_file = open('/etc/sysconfig/clock', 'r')
if utc_setting in utc_file.read():
result = 'yes'
else:
result = 'no'
utc_results = (hostname, martian_setting, result)
results_writer = csv.writer(output_file, delimiter=',', lineterminator='\n')
results_writer.writerow(utc_results)
utc_file.close()I can also get netmiko working and send simple one line commands but I dont know how to open the csv on the original device, send the commands via netmiko, and then write the results back to the csv. I am not sure that this can even be done using netmiko. Thanks in advance for the help!-Josh
