Gå til innhold

Script for søk og erstatt i tekstfil?


Anbefalte innlegg

Eg er ingen programmerar, men fekk plutseleg lyst på dette:

 

Ei løysing (script?) som kan opna ei mal-fil (tekst) og erstatta tekststrenger for så å lagra fila.

 

Målet er å script-konfigurera ein ruter som kan ta i mot config i form av ein tekstfil med ftp. Det er då IP, GW og MASK som skal endrast i tekstfila, men eg vil gjer det automatisk. Anten med ein kommando som dette:

 

script 192.168.1.20 192.168.1.1 255.255.255.0

 

eller ved at scriptet stiller spørsmål.

 

Eller vent?

Kunne heile tekstfila vert ein del av scriptet?

Køyr skriptet, svar på tre spørsmål og vips får du ut ei ferdig config-fil?

Hmm...

Lenke til kommentar
Videoannonse
Annonse

Hvis du vil prøve Python, så har du scriptet her.

http://www.python.org/download/

 

Lagre som f.eks cfg.py

 

ED: Men du ønsket kanskje at scriptet skulle snakke FTP direkte med router?

Det går også. Men du må gi lyd fra deg i så fall ;-)

 

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
#
# Genrerer config-fil 

import sys


# Config innhold skrives her, _xxx_ erstattes
CONFIG_TEMPLATE="""

_IP_
_GATEWAY_
_MASK_

"""


# Skriver ut usagesinfo
def usage():
   
   msg ="""
CFG genererer config fil bla bla
usage: CFG [interaktiv usage]
     CFG <ip adresse> <subnettmaske> <gateway>  NB! Denne rekkefølge!
     CFG -i <ip adresse> -m <subnettmaske> -g <gateway> NB! Rekkefølge likegyldig!
"""
   sys.exit(msg)


# Parser argumenter
def parse_args(power = 0):
   try:
   	sa = sys.argv
       if power:
           return sys.argv[1], sys.argv[2], sys.argv[3]
       else:
           for arg in sa:
               if arg.lower() == '-h':
                   usage()                
               if arg.lower() == '-i':
                   ip = sa[sa.index(arg) + 1]
               elif arg.lower() == '-m':
                   mask = sa[sa.index(arg) + 1]
               elif arg.lower() == '-g':
                   gw = sa[sa.index(arg) + 1]
       return ip, mask, gw
   except IndexError:
       sys.exit('Ugyldige argumenter')    
   

# eval args (hvis arg, parse dem, hvis ikke, interaktiv modus)
if len(sys.argv) == 7:
   ip, mask, gw = parse_args()
elif len(sys.argv) == 4:
   ip, mask, gw = parse_args(1)
elif len(sys.argv) > 1:
   usage()
else:
   print "Oppgi konfigurasjonsparametre\n"
   ip = raw_input("IP adresse: ")
   mask = raw_input("Subnettmaske: ")
   gw = raw_input("Gateway: ")

# søk erstatt
CONFIG_TEMPLATE = CONFIG_TEMPLATE.replace('_IP_', ip.strip())
CONFIG_TEMPLATE = CONFIG_TEMPLATE.replace('_MASK_', mask.strip())
CONFIG_TEMPLATE = CONFIG_TEMPLATE.replace('_GATEWAY_', gw.strip())

# skriv ut til skjerm
print CONFIG_TEMPLATE

#skriv ut til fil
file("config.txt", 'w+').write(CONFIG_TEMPLATE)

Endret av zeitgeist
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...