<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Simplified script for deletion single address from dynamic object's ip range in API / CLI Discussion</title>
    <link>https://community.checkpoint.com/t5/API-CLI-Discussion/Simplified-script-for-deletion-single-address-from-dynamic/m-p/52077#M3378</link>
    <description>&lt;P&gt;I added more readable version of code into thread main message&lt;/P&gt;</description>
    <pubDate>Mon, 29 Apr 2019 03:24:11 GMT</pubDate>
    <dc:creator>AlexeyB</dc:creator>
    <dc:date>2019-04-29T03:24:11Z</dc:date>
    <item>
      <title>Simplified script for deletion single address from dynamic object's ip range</title>
      <link>https://community.checkpoint.com/t5/API-CLI-Discussion/Simplified-script-for-deletion-single-address-from-dynamic/m-p/49879#M3278</link>
      <description>&lt;P&gt;If we have some dyn object with range like 10.10.10.0 - 10.10.10.20. And we want to delete ip 10.10.10.10 from this range, we need to delete&amp;nbsp;manual whole range 10.10.10.0-10.10.10.20 from our dynamic object and after that add two other ranges into this object. Script just simplify this routine. We just need edit two environment variables: DYN_OBJ and FIND_IP.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="ruby"&gt;export DYN_OBJ="dyn_obj_name"; export FIND_IP="10.10.10.10"; dynamic_objects -l | sed -n '/'"$DYN_OBJ"'/,/^$/p' | awk -v DYN_OBJ="$DYN_OBJ" -v FIND_IP="$FIND_IP" 
'
  function ip2dec(str){
    split(str, octets, ".");
    dec=0;
    for (i = 1; i &amp;lt;= 4; i++) {
        dec += octets[i] * 256 ** (4 - i);
    }
    return dec;
  }
  function dec2ip(dec){
    ip = "";
    delim = "";
    for (e = 3; e &amp;gt;= 0; e--) {
      octet = int(dec / (256 ^ e));
      dec -= octet * 256 ^ e;
      ip = ip delim octet;
      delim = ".";
    }
    return ip;
  }
    NR&amp;gt;2 {
      if( ip2dec($4) &amp;lt;= ip2dec(FIND_IP) &amp;amp;&amp;amp; ip2dec(FIND_IP) &amp;lt;= ip2dec($5) ) {print $4 " " $5; cmd="dynamic_objects -o " DYN_OBJ" -r " $4 " " $5 " -d"; print cmd; system(cmd);}
      if( ip2dec($4) == ip2dec(FIND_IP) &amp;amp;&amp;amp; ip2dec(FIND_IP) == ip2dec($5) ) { print "already deleted"};
      if( ip2dec($4) == ip2dec(FIND_IP) &amp;amp;&amp;amp; ip2dec(FIND_IP) &amp;lt; ip2dec($5) ) { cmd="dynamic_objects -o " DYN_OBJ" -r " dec2ip(ip2dec(FIND_IP)+1) " " $5 " -a"; print cmd; system(cmd);}
      if( ip2dec($4) &amp;lt; ip2dec(FIND_IP) &amp;amp;&amp;amp; ip2dec(FIND_IP) == ip2dec($5) ) { cmd="dynamic_objects -o " DYN_OBJ" -r " $4 " " dec2ip(ip2dec($5)-1) " -a"; print cmd; system(cmd);};
      if( ip2dec($4) &amp;lt; ip2dec(FIND_IP) &amp;amp;&amp;amp; ip2dec(FIND_IP) &amp;lt; ip2dec($5) ) { cmd="dynamic_objects -o " DYN_OBJ" -r " $4 " " dec2ip(ip2dec(FIND_IP)-1) " -a"; print cmd; system(cmd);cmd="dynamic_objects -o " DYN_OBJ" -r " dec2ip(ip2dec(FIND_IP)+1) " " $5 " -a"; print cmd; system(cmd);};
    }
'&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And all of it as `on-liner` for directly usage from CLI (run it from expert-mode)&lt;/P&gt;&lt;LI-CODE lang="ruby"&gt;export DYN_OBJ="dyn_obj_name"; export FIND_IP="10.10.10.10"; dynamic_objects -l | sed -n '/'"$DYN_OBJ"'/,/^$/p' | awk -v DYN_OBJ="$DYN_OBJ" -v FIND_IP="$FIND_IP" ' function ip2dec(str){ split(str, octets, "."); dec=0; for (i = 1; i &amp;lt;= 4; i++) { dec += octets[i] * 256 ** (4 - i); } return dec; } function dec2ip(dec){ for (e = 3; e &amp;gt;= 0; e--) { octet = int(dec / (256 ^ e)); dec -= octet * 256 ^ e; ip = ip delim octet; delim = "."; } return ip; } NR&amp;gt;2 { if( ip2dec($4) &amp;lt;= ip2dec(FIND_IP) &amp;amp;&amp;amp; ip2dec(FIND_IP) &amp;lt;= ip2dec($5) ) {print $4 " " $5; cmd="dynamic_objects -o " DYN_OBJ" -r " $4 " " $5 " -d"; print cmd; system(cmd);} if( ip2dec($4) == ip2dec(FIND_IP) &amp;amp;&amp;amp; ip2dec(FIND_IP) == ip2dec($5) ) { print "already deleted" }; if( ip2dec($4) == ip2dec(FIND_IP) &amp;amp;&amp;amp; ip2dec(FIND_IP) &amp;lt; ip2dec($5) ) { cmd="dynamic_objects -o " DYN_OBJ" -r " dec2ip(ip2dec(FIND_IP)+1) " " $5 " -a"; print cmd; system(cmd);} if( ip2dec($4) &amp;lt; ip2dec(FIND_IP) &amp;amp;&amp;amp; ip2dec(FIND_IP) == ip2dec($5) ) { cmd="dynamic_objects -o " DYN_OBJ" -r " $4 " " dec2ip(ip2dec($5)-1) " -a"; print cmd; system(cmd);}; if( ip2dec($4) &amp;lt; ip2dec(FIND_IP) &amp;amp;&amp;amp; ip2dec(FIND_IP) &amp;lt; ip2dec($5) ) { cmd="dynamic_objects -o " DYN_OBJ" -r " $4 " " dec2ip(ip2dec(FIND_IP)-1) " -a"; print cmd; system(cmd);cmd="dynamic_objects -o " DYN_OBJ" -r " dec2ip(ip2dec(FIND_IP)+1) " " $5 " -a"; print cmd; system(cmd);}; }'&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 29 Apr 2019 03:22:56 GMT</pubDate>
      <guid>https://community.checkpoint.com/t5/API-CLI-Discussion/Simplified-script-for-deletion-single-address-from-dynamic/m-p/49879#M3278</guid>
      <dc:creator>AlexeyB</dc:creator>
      <dc:date>2019-04-29T03:22:56Z</dc:date>
    </item>
    <item>
      <title>Re: Simplified script for deletion single address from dynamic object's ip range</title>
      <link>https://community.checkpoint.com/t5/API-CLI-Discussion/Simplified-script-for-deletion-single-address-from-dynamic/m-p/50045#M3279</link>
      <description>You may want to put the script in a text file and attach it to your post instead as it doesn't look correct as part of the post...</description>
      <pubDate>Sun, 07 Apr 2019 02:05:10 GMT</pubDate>
      <guid>https://community.checkpoint.com/t5/API-CLI-Discussion/Simplified-script-for-deletion-single-address-from-dynamic/m-p/50045#M3279</guid>
      <dc:creator>PhoneBoy</dc:creator>
      <dc:date>2019-04-07T02:05:10Z</dc:date>
    </item>
    <item>
      <title>Re: Simplified script for deletion single address from dynamic object's ip range</title>
      <link>https://community.checkpoint.com/t5/API-CLI-Discussion/Simplified-script-for-deletion-single-address-from-dynamic/m-p/50239#M3288</link>
      <description>&lt;P&gt;Because it is not a script-file. It's a one-liner. &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt; We have many appliances and I don't want to copy file on each. So I preferred one-liners which I just can copy in console.&lt;/P&gt;</description>
      <pubDate>Tue, 09 Apr 2019 09:52:36 GMT</pubDate>
      <guid>https://community.checkpoint.com/t5/API-CLI-Discussion/Simplified-script-for-deletion-single-address-from-dynamic/m-p/50239#M3288</guid>
      <dc:creator>AlexeyB</dc:creator>
      <dc:date>2019-04-09T09:52:36Z</dc:date>
    </item>
    <item>
      <title>Re: Simplified script for deletion single address from dynamic object's ip range</title>
      <link>https://community.checkpoint.com/t5/API-CLI-Discussion/Simplified-script-for-deletion-single-address-from-dynamic/m-p/50347#M3289</link>
      <description>Huh, so it is.&lt;BR /&gt;Was just a bit difficult to parse is all.</description>
      <pubDate>Tue, 09 Apr 2019 20:48:56 GMT</pubDate>
      <guid>https://community.checkpoint.com/t5/API-CLI-Discussion/Simplified-script-for-deletion-single-address-from-dynamic/m-p/50347#M3289</guid>
      <dc:creator>PhoneBoy</dc:creator>
      <dc:date>2019-04-09T20:48:56Z</dc:date>
    </item>
    <item>
      <title>Re: Simplified script for deletion single address from dynamic object's ip range</title>
      <link>https://community.checkpoint.com/t5/API-CLI-Discussion/Simplified-script-for-deletion-single-address-from-dynamic/m-p/52077#M3378</link>
      <description>&lt;P&gt;I added more readable version of code into thread main message&lt;/P&gt;</description>
      <pubDate>Mon, 29 Apr 2019 03:24:11 GMT</pubDate>
      <guid>https://community.checkpoint.com/t5/API-CLI-Discussion/Simplified-script-for-deletion-single-address-from-dynamic/m-p/52077#M3378</guid>
      <dc:creator>AlexeyB</dc:creator>
      <dc:date>2019-04-29T03:24:11Z</dc:date>
    </item>
  </channel>
</rss>

