I need to copy the contents of a .csv, that gets dumped from SQL each night to a folder location on my Ubuntu server that contains 100s of IP addresses to an area within a .conf file.
The csv puts all the IP addresses on the first row, separated with a space between each IP:
192.168.0.1 192.168.0.2 192.168.0.3 192.168.0.4
When I open the csv in Excel it looks like:
['192.168.0.1', '192.168.0.2', '192.168.0.3', '192.168.0.4']
And I need it to put into a file called something like routers.conf like this on row 2, but I need it be formatted like below and include the " instead of ‘around the IP, add the :161 etc and inject into row 2 and replace what is there:
[[inputs.snmp]]
agents ["192.168.0.1:161","192.168.0.2:161","192.168.0.3:161","192.168.0.4:161"]
version = 2
community = "publicblah"
interval = "120s"
timeout = "5s"
retries = 0
Could Python do this?
I’m currently using this to open and view it:
with open("ip.csv", 'r', encoding='utf-8-sig') as infile:
reader = csv.reader(infile, delimiter=" ")
header = next(reader)
print(header)
I did have a play with the outfile = open and outfile.write options, but get lost as this just writes a new .csv.
Any hope to parse this data, format it, and inject/replace the data in another file would be most welcome.
2
Answers
This should do the trick, let me know if you need any help!
You don’t have to worry about the single quotation mark as you see, because a string like
"abcdef"
or a character like"a"
doesn’t contain the QUOTATION MARK.Python uses quotation marks to remind you that this is a string (or a character). Below is my code.
More about string in Python, or in some other languages:
len()
to get the length of a string.e.g.,
You’ll get 1 rather than 3, so obviously the quotation marks aren’t included.