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