Questo forum fa uso dei cookie
Questo forum utilizza i cookie per memorizzare i dettagli del tuo login o della tua ultima visita. I cookie sono piccoli files di testo salvati nel computer; i cookie da noi utilizzati sono relativi unicamente ai servizi da noi forniti direttamente o dai banner pubblicitari. I cookie su questo forum salvano inoltre i dettagli relativi alle discussioni lette e alle tue preferenze personali. Sei pregato di selezionare il tasto OKAY se sei consapevole della presenza di questi files e ci autorizzi ad utilizarli per le informazioni specificate.

Indipendentemente dalla tua scelta un cookie verrà salvato per memorizzare nel tuo pc la risposta a questo form. Puoi modificare le impostazioni relative ai cookie nelle preferenze del tuo browser.

  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
[Mikrotik] Using Fetch and Scripting to add IP Address Lists

#1
Information 
This only works with files under 4096 characters in size due to the variable size limit in v3 hopefully they will re-introduce the LUA system in v4 shortly so we can make this work with any size list.
If not I will be investigating an alternate solution for breaking files up into readable chunks.
Regards, Andrew Cox
The Code

Codice:
## Generic IP address list input
  ## Based on a script written by Sam Norris, ChangeIP.com 2008
  ## Edited by Andrew Cox, AccessPlus.com.au 2008
  :if ( [/file get [/file find name=ipaddress.txt] size] > 0 ) do={
  # Remove exisiting addresses from the current Address list
  /ip firewall address-list remove [/ip firewall address-list find list=MY-IP-LIST]
 
  :global content [/file get [/file find name=ipaddress.txt] contents] ;
  :global contentLen [ :len $content ] ;
 
  :global lineEnd 0;
  :global line "";
  :global lastEnd 0;
 
  :do {
        :set lineEnd [:find $content "\n" $lastEnd ] ;
        :set line [:pick $content $lastEnd $lineEnd] ;
        :set lastEnd ( $lineEnd + 1 ) ;#If the line doesn't start with a hash then process and add to the list
        :if ( [:pick $line 0 1] != "#" ) do={
 
       :local entry [:pick $line 0 ($lineEnd -1) ]
       :if ( [:len $entry ] > 0 ) do={
          /ip firewall address-list add list=MY-IP-LIST address=$entry
       }
     }
  } while ($lineEnd < $contentLen)
How to use
This will grab IP entries for a simple list in the format
Codice:
#This is a comment

Codice:
  #Blah blah blah

Codice:
  1.1.1.1

Codice:
  2.2.2.0/24

Codice:
  3.3.3.3

Codice:
  4.4.4.128/26


Just substitute the address-list and filename you want to pull from (for anyone else who wants to use it with their own generated lists)
You can use this hand-in-hand with a fetch script to retrive the list from a remote site then process it.
 
Code for fetching
Codice:
/tool fetch address=server.somewhere.tld host=server.somewhere.tld mode=http src-path=folder/anotherfolder/ipaddress.txt

Codice:
  :delay 10

Codice:
  #Replace with whatever name you have called the processing script

Codice:
  /system script run add-ip-addresses

Cita messaggio


Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
Information [Mikrotik] Sync Address List from DNS Lookup Results - CNAME and A Records berryberry 0 1'366 17-06-2015, 11:44
Ultimo messaggio: berryberry
Information [Mikrotik] Sync Address List with DNS Cache berryberry 0 1'743 17-06-2015, 11:42
Ultimo messaggio: berryberry
Information [Mikrotik] Failover Scripting berryberry 0 854 16-06-2015, 11:17
Ultimo messaggio: berryberry
Information [Mikrotik] Random MAC/Ethernet address generate and apply berryberry 0 737 15-06-2015, 11:55
Ultimo messaggio: berryberry
Information [Mikrotik] Using scripting to overcome the inability to specify number ranges on the berryberry 0 602 11-06-2015, 10:52
Ultimo messaggio: berryberry
Information [Mikrotik] Sending your self an e-mail with DSL interface IP address berryberry 0 805 09-06-2015, 10:57
Ultimo messaggio: berryberry

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


Utenti che stanno guardando questa discussione:
1 Ospite(i)


Powered by MyBB, © 2002-2019 MyBB Group.