<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://www.cpwiki.net/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://www.cpwiki.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nighthawk</id>
		<title>cpwiki.net - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://www.cpwiki.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nighthawk"/>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/Special:Contributions/Nighthawk"/>
		<updated>2026-04-29T08:23:52Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.21.10</generator>

	<entry>
		<id>http://www.cpwiki.net/index.php/cpuse_deployment_agent</id>
		<title>cpuse deployment agent</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/cpuse_deployment_agent"/>
				<updated>2026-03-29T02:23:08Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==checking current version==&lt;br /&gt;
 # clish -c &amp;quot;show installer status build&amp;quot;&lt;br /&gt;
 Build number: 2084 (agent build is up to date)&lt;br /&gt;
&lt;br /&gt;
==downloading the latest cpuse deployment agent==&lt;br /&gt;
&lt;br /&gt;
a download link to the latest cpuse is found in [https://supportcenter.checkpoint.com/supportcenter/portal?eventSubmit_doGoviewsolutiondetails=&amp;amp;solutionid=sk92449&amp;amp;partition=General&amp;amp;product=All%22 sk92449] on the user center&lt;br /&gt;
&lt;br /&gt;
==check currently installed version==&lt;br /&gt;
&lt;br /&gt;
cpvinfo $DADIR/bin/DAService | grep Build&lt;br /&gt;
&lt;br /&gt;
==how do perform and offline upgrades==&lt;br /&gt;
&lt;br /&gt;
# download the latest cpuse&lt;br /&gt;
# uninstall cpuse&lt;br /&gt;
 [Expert@chkpmds1:0]# '''rpm -e CPda-00-00'''&lt;br /&gt;
 /opt/CPshrd-R77/bin/cpwd_admin del -name DASERVICE&lt;br /&gt;
 cpwd_admin: &lt;br /&gt;
 successful Del operation&lt;br /&gt;
&lt;br /&gt;
# install new cpuse&lt;br /&gt;
&lt;br /&gt;
 Expert@chkpmds1:0]# '''rpm -ivh ./CPda-00-00.i386.rpm''' &lt;br /&gt;
 Preparing...                ########################################### [100%]&lt;br /&gt;
 cpwd_admin: &lt;br /&gt;
 Process DASERVICE isn't monitored by cpWatchDog. Stop request aborts &lt;br /&gt;
  Trying to stop DAService for 60 seconds - please wait...&lt;br /&gt;
 Error: DAService is not running.&lt;br /&gt;
 &amp;lt;br&amp;gt;Waiting for DAService to stop...&lt;br /&gt;
 Error: DAService is not running.&lt;br /&gt;
&lt;br /&gt;
*** note: it is typical to see the above message many times&lt;br /&gt;
&lt;br /&gt;
== restarting clishd==&lt;br /&gt;
&lt;br /&gt;
To Stop	[Expert@HostName]# '''tellpm process:clishd'''&lt;br /&gt;
&amp;lt;br&amp;gt;To Start [Expert@HostName]# '''tellpm process:clishd t'''&lt;br /&gt;
&lt;br /&gt;
start agent&lt;br /&gt;
&lt;br /&gt;
 # clish -c &amp;quot;installer agent start&amp;quot;&lt;br /&gt;
&lt;br /&gt;
upgrade should be completed.&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/growing_root_partition</id>
		<title>growing root partition</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/growing_root_partition"/>
				<updated>2025-10-25T02:21:56Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: /* Solution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Problem ==&lt;br /&gt;
&lt;br /&gt;
insufficient disk space in /opt to apply an upgrade.  &lt;br /&gt;
&lt;br /&gt;
O.S. : secure platform (splat) or gaia&lt;br /&gt;
&lt;br /&gt;
Check Point versions: multiple&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
Use available, unallocated disk space.  Newer Check Point version use LVM.  Check Point often doesn't allocate it all.  This not a bad thing.  It is a common, best practice with LVM.  This allows admins to easily grow partitions as needed using the free disk space.  If you allocated it all up front, but needed one partition bigger, you would have to shrink one to grow another.  This is more complicated.  With root, it can't be shrunk while the system is running(it can be grown as we are about to see).&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 [Expert@chkpfw1:0]# '''df -h'''&lt;br /&gt;
 Filesystem            Size  Used Avail Use% Mounted on&lt;br /&gt;
 /dev/mapper/vg_splat-lv_current&lt;br /&gt;
                      4.9G  3.6G  1.1G  77% /         &amp;lt;&amp;lt;&amp;lt; root does't have enough space for my 77.30 upgrade :(&lt;br /&gt;
 /dev/hda1             289M   24M  251M   9% /boot&lt;br /&gt;
 tmpfs                 217M     0  217M   0% /dev/shm&lt;br /&gt;
 /dev/mapper/vg_splat-lv_log&lt;br /&gt;
                      6.8G  3.7G  2.9G  57% /var/log&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Check the volumn groups for Free space&lt;br /&gt;
&lt;br /&gt;
 [Expert@chkpfw2:0]# '''vgdisplay | grep -i size'''&lt;br /&gt;
  VG Size               18.69 GB&lt;br /&gt;
  PE Size               32.00 MB&lt;br /&gt;
  Alloc PE / Size       384 / 12.00 GB&lt;br /&gt;
  Free  PE / Size       214 / 6.69 GB   &amp;lt;&amp;lt;&amp;lt; yay! I have some!&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
adding/growing the logical volume &amp;quot;container&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 [Expert@chkpfw2:0]# '''lvresize -L +6.69GB vg_splat/lv_current'''&lt;br /&gt;
  Rounding up size to full physical extent 6.72 GB&lt;br /&gt;
  Extending logical volume lv_current to 11.72 GB&lt;br /&gt;
  Insufficient free space: 215 extents needed, but only 214 available&lt;br /&gt;
&lt;br /&gt;
that failed... specifying the increase in GB is less precise. So, lets use &amp;quot;extents&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 [Expert@chkpfw2:0]# '''lvresize -l +214 vg_splat/lv_current'''&lt;br /&gt;
  Extending logical volume lv_current to 11.69 GB&lt;br /&gt;
  Logical volume lv_current successfully resized&lt;br /&gt;
&lt;br /&gt;
verifying new volume group size&lt;br /&gt;
&lt;br /&gt;
 [Expert@chkpfw2:0]# vgdisplay | grep -i -E &amp;quot;name|size&amp;quot;&lt;br /&gt;
  VG Name               vg_splat&lt;br /&gt;
  VG Size               18.69 GB&lt;br /&gt;
  PE Size               32.00 MB&lt;br /&gt;
  Alloc PE / Size       598 / 18.69 GB&lt;br /&gt;
  Free  PE / Size       0 / 0&lt;br /&gt;
&lt;br /&gt;
growing the file system to fill the &amp;quot;container&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 [Expert@chkpfw2:0]# '''resize2fs /dev/mapper/vg_splat-lv_current'''&lt;br /&gt;
 resize2fs 1.39 (29-May-2006)&lt;br /&gt;
 Filesystem at /dev/mapper/vg_splat-lv_current is mounted on /; on-line resizing required&lt;br /&gt;
 Performing an on-line resize of /dev/mapper/vg_splat-lv_current to 3063808 (4k) blocks.&lt;br /&gt;
 The filesystem on /dev/mapper/vg_splat-lv_current is now 3063808 blocks long.&lt;br /&gt;
&lt;br /&gt;
newer Gaia O.S. implementations utilize xfs file systems. resize2fs won't work. use xfs_growfw instead&lt;br /&gt;
&lt;br /&gt;
 [Expert@chkpfw2:0]# '''xfs_growfs /dev/mapper/vg_splat-lv_current'''&lt;br /&gt;
 meta-data=/dev/mapper/vg_splat-lv_log isize=512    agcount=4, agsize=2097152 blks&lt;br /&gt;
         =                       sectsz=512   attr=2, projid32bit=1&lt;br /&gt;
         =                       crc=1        finobt=0 spinodes=0&lt;br /&gt;
 data     =                       bsize=4096   blocks=8388608, imaxpct=25&lt;br /&gt;
         =                       sunit=0      swidth=0 blks&lt;br /&gt;
 naming   =version 2              bsize=4096   ascii-ci=0 ftype=1&lt;br /&gt;
 log      =internal               bsize=4096   blocks=4096, version=2&lt;br /&gt;
         =                       sectsz=512   sunit=0 blks, lazy-count=1&lt;br /&gt;
 realtime =none                   extsz=4096   blocks=0, rtextents=0&lt;br /&gt;
 data blocks changed from 8388608 to 31981568&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
viewing newly allocated disk space&lt;br /&gt;
&lt;br /&gt;
 [Expert@chkpfw2:0]# df -h&lt;br /&gt;
 Filesystem            Size  Used Avail Use% Mounted on&lt;br /&gt;
 /dev/mapper/vg_splat-lv_current&lt;br /&gt;
                       12G  3.6G  7.2G  33% /&lt;br /&gt;
 /dev/hda1             289M   24M  251M   9% /boot&lt;br /&gt;
 tmpfs                 217M     0  217M   0% /dev/shm&lt;br /&gt;
 /dev/mapper/vg_splat-lv_log&lt;br /&gt;
                      6.8G  2.2G  4.3G  34% /var/log&lt;br /&gt;
&lt;br /&gt;
So, we grew root while the system had it mounted and was running from it. Thank you LVM!&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/growing_root_partition</id>
		<title>growing root partition</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/growing_root_partition"/>
				<updated>2025-10-25T02:21:23Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: /* Solution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Problem ==&lt;br /&gt;
&lt;br /&gt;
insufficient disk space in /opt to apply an upgrade.  &lt;br /&gt;
&lt;br /&gt;
O.S. : secure platform (splat) or gaia&lt;br /&gt;
&lt;br /&gt;
Check Point versions: multiple&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
Use available, unallocated disk space.  Newer Check Point version use LVM.  Check Point often doesn't allocate it all.  This not a bad thing.  It is a common, best practice with LVM.  This allows admins to easily grow partitions as needed using the free disk space.  If you allocated it all up front, but needed one partition bigger, you would have to shrink one to grow another.  This is more complicated.  With root, it can't be shrunk while the system is running(it can be grown as we are about to see).&lt;br /&gt;
&lt;br /&gt;
'''Example'''&lt;br /&gt;
&lt;br /&gt;
 [Expert@chkpfw1:0]# '''df -h'''&lt;br /&gt;
 Filesystem            Size  Used Avail Use% Mounted on&lt;br /&gt;
 /dev/mapper/vg_splat-lv_current&lt;br /&gt;
                      4.9G  3.6G  1.1G  77% /         &amp;lt;&amp;lt;&amp;lt; root does't have enough space for my 77.30 upgrade :(&lt;br /&gt;
 /dev/hda1             289M   24M  251M   9% /boot&lt;br /&gt;
 tmpfs                 217M     0  217M   0% /dev/shm&lt;br /&gt;
 /dev/mapper/vg_splat-lv_log&lt;br /&gt;
                      6.8G  3.7G  2.9G  57% /var/log&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Check the volumn groups for Free space&lt;br /&gt;
&lt;br /&gt;
 [Expert@chkpfw2:0]# '''vgdisplay | grep -i size'''&lt;br /&gt;
  VG Size               18.69 GB&lt;br /&gt;
  PE Size               32.00 MB&lt;br /&gt;
  Alloc PE / Size       384 / 12.00 GB&lt;br /&gt;
  Free  PE / Size       214 / 6.69 GB   &amp;lt;&amp;lt;&amp;lt; yay! I have some!&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
adding/growing the logical volume &amp;quot;container&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 [Expert@chkpfw2:0]# '''lvresize -L +6.69GB vg_splat/lv_current'''&lt;br /&gt;
  Rounding up size to full physical extent 6.72 GB&lt;br /&gt;
  Extending logical volume lv_current to 11.72 GB&lt;br /&gt;
  Insufficient free space: 215 extents needed, but only 214 available&lt;br /&gt;
&lt;br /&gt;
that failed... specifying the increase in GB is less precise. So, lets use &amp;quot;extents&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 [Expert@chkpfw2:0]# '''lvresize -l +214 vg_splat/lv_current'''&lt;br /&gt;
  Extending logical volume lv_current to 11.69 GB&lt;br /&gt;
  Logical volume lv_current successfully resized&lt;br /&gt;
&lt;br /&gt;
verifying new volume group size&lt;br /&gt;
&lt;br /&gt;
 [Expert@chkpfw2:0]# vgdisplay | grep -i -E &amp;quot;name|size&amp;quot;&lt;br /&gt;
  VG Name               vg_splat&lt;br /&gt;
  VG Size               18.69 GB&lt;br /&gt;
  PE Size               32.00 MB&lt;br /&gt;
  Alloc PE / Size       598 / 18.69 GB&lt;br /&gt;
  Free  PE / Size       0 / 0&lt;br /&gt;
&lt;br /&gt;
growing the file system to fill the &amp;quot;container&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 [Expert@chkpfw2:0]# '''resize2fs /dev/mapper/vg_splat-lv_current'''&lt;br /&gt;
 resize2fs 1.39 (29-May-2006)&lt;br /&gt;
 Filesystem at /dev/mapper/vg_splat-lv_current is mounted on /; on-line resizing required&lt;br /&gt;
 Performing an on-line resize of /dev/mapper/vg_splat-lv_current to 3063808 (4k) blocks.&lt;br /&gt;
 The filesystem on /dev/mapper/vg_splat-lv_current is now 3063808 blocks long.&lt;br /&gt;
&lt;br /&gt;
 newer Gaia O.S. implementations utilize xfs file systems. resize2fs won't work. use xfs_growfw instead&lt;br /&gt;
&lt;br /&gt;
 [Expert@chkpfw2:0]# '''xfs_growfs /dev/mapper/vg_splat-lv_current'''&lt;br /&gt;
 meta-data=/dev/mapper/vg_splat-lv_log isize=512    agcount=4, agsize=2097152 blks&lt;br /&gt;
         =                       sectsz=512   attr=2, projid32bit=1&lt;br /&gt;
         =                       crc=1        finobt=0 spinodes=0&lt;br /&gt;
 data     =                       bsize=4096   blocks=8388608, imaxpct=25&lt;br /&gt;
         =                       sunit=0      swidth=0 blks&lt;br /&gt;
 naming   =version 2              bsize=4096   ascii-ci=0 ftype=1&lt;br /&gt;
 log      =internal               bsize=4096   blocks=4096, version=2&lt;br /&gt;
         =                       sectsz=512   sunit=0 blks, lazy-count=1&lt;br /&gt;
 realtime =none                   extsz=4096   blocks=0, rtextents=0&lt;br /&gt;
 data blocks changed from 8388608 to 31981568&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
viewing newly allocated disk space&lt;br /&gt;
&lt;br /&gt;
 [Expert@chkpfw2:0]# df -h&lt;br /&gt;
 Filesystem            Size  Used Avail Use% Mounted on&lt;br /&gt;
 /dev/mapper/vg_splat-lv_current&lt;br /&gt;
                       12G  3.6G  7.2G  33% /&lt;br /&gt;
 /dev/hda1             289M   24M  251M   9% /boot&lt;br /&gt;
 tmpfs                 217M     0  217M   0% /dev/shm&lt;br /&gt;
 /dev/mapper/vg_splat-lv_log&lt;br /&gt;
                      6.8G  2.2G  4.3G  34% /var/log&lt;br /&gt;
&lt;br /&gt;
So, we grew root while the system had it mounted and was running from it. Thank you LVM!&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/First_time_config_%22wizard%22_via_CLI_mode</id>
		<title>First time config &quot;wizard&quot; via CLI mode</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/First_time_config_%22wizard%22_via_CLI_mode"/>
				<updated>2025-10-24T14:26:10Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: Created page with &amp;quot;  == Creating a configuration file ==  # '''config_system -t &amp;lt;File Name&amp;gt;'''  === configuration file validation ===  # config_system --config-file &amp;lt;File Name&amp;gt; --dry-run  == run...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== Creating a configuration file ==&lt;br /&gt;
 # '''config_system -t &amp;lt;File Name&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
=== configuration file validation ===&lt;br /&gt;
 # config_system --config-file &amp;lt;File Name&amp;gt; --dry-run&lt;br /&gt;
&lt;br /&gt;
== running config with template file ==&lt;br /&gt;
 # config_system -f &amp;lt;File Name&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/fortinet_CLI_notes</id>
		<title>fortinet CLI notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/fortinet_CLI_notes"/>
				<updated>2025-10-14T15:17:35Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: /* logging */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==vdom==&lt;br /&gt;
entering editing a vdom&lt;br /&gt;
&lt;br /&gt;
 # config vdom&lt;br /&gt;
 (vdom) #  edit myvdom&lt;br /&gt;
 (myvdom) # &lt;br /&gt;
&lt;br /&gt;
==interface commands==&lt;br /&gt;
===configure===&lt;br /&gt;
example&lt;br /&gt;
 # config system interface&lt;br /&gt;
 # edit port1&lt;br /&gt;
 # set mode static&lt;br /&gt;
 # set ip 10.1.1.1 255.255.255.0&lt;br /&gt;
 # next&lt;br /&gt;
 # end&lt;br /&gt;
&lt;br /&gt;
===get info==&lt;br /&gt;
for admin status, link stat, speeds, counters...&lt;br /&gt;
 # config global&lt;br /&gt;
 # get hardware nic &amp;lt;interface name&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==routes==&lt;br /&gt;
 # config router static&lt;br /&gt;
 # edit &amp;lt;route_index&amp;gt;&lt;br /&gt;
 # set device &amp;quot;&amp;lt;interface_name&amp;gt;&amp;quot;&lt;br /&gt;
 # set dst &amp;quot;&amp;lt;destination_ip&amp;gt;&amp;quot;&lt;br /&gt;
 # set gateway &amp;quot;&amp;lt;router_ip&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
for default gw..&lt;br /&gt;
 # set dst 0.0.0.0 0.0.0.0&lt;br /&gt;
or just leave the line out.&lt;br /&gt;
&lt;br /&gt;
HA status&lt;br /&gt;
 # config global&lt;br /&gt;
 # get sys ha status&lt;br /&gt;
&lt;br /&gt;
HA failover to highest priority (if it is not currently Master)&lt;br /&gt;
on current master run...&lt;br /&gt;
 # config global&lt;br /&gt;
 # diagnose sys ha reset-uptime&lt;br /&gt;
&lt;br /&gt;
get admin hash password&lt;br /&gt;
 # config global&lt;br /&gt;
 # config sys admin&lt;br /&gt;
 # show&lt;br /&gt;
&lt;br /&gt;
uptime&lt;br /&gt;
 # config global&lt;br /&gt;
 # get system perf status | grep -i uptime&lt;br /&gt;
&lt;br /&gt;
shutdown/reboot&lt;br /&gt;
&lt;br /&gt;
 # execute shutdown&lt;br /&gt;
or&lt;br /&gt;
 # execute reboot&lt;br /&gt;
&lt;br /&gt;
==firewall==&lt;br /&gt;
 # show firewall policy&lt;br /&gt;
&lt;br /&gt;
==packet capture==&lt;br /&gt;
&lt;br /&gt;
 # diagnose sniffer packet &amp;lt;interface|any&amp;gt; '&amp;lt;tcpdump-filter&amp;gt;' &amp;lt;verbosity&amp;gt; &amp;lt;count&amp;gt; &amp;lt;time-format&amp;gt;&lt;br /&gt;
&lt;br /&gt;
verbosity of 4 will show the port name&lt;br /&gt;
&lt;br /&gt;
where if count = 0, then unlimited&lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 fotinet1 # '''diagnose sniffer packet port1 'icmp'''' 4 2 l&lt;br /&gt;
 interfaces=[port1]&lt;br /&gt;
 filters=[icmp]&lt;br /&gt;
 2022-08-25 13:16:52.397609 port1 -- 192.168.169.76 -&amp;gt; 192.168.169.31: icmp: echo request&lt;br /&gt;
 2022-08-25 13:16:52.397673 port1 -- 192.168.169.31 -&amp;gt; 192.168.169.76: icmp: echo reply&lt;br /&gt;
&lt;br /&gt;
==misc==&lt;br /&gt;
&lt;br /&gt;
check if fortigate has fortimanager central-management setting&lt;br /&gt;
  $ show full-configuration | grep &amp;quot;set fmg &amp;quot;&lt;br /&gt;
&lt;br /&gt;
==default login==&lt;br /&gt;
&lt;br /&gt;
VM images = admin / (empty password)&lt;br /&gt;
&lt;br /&gt;
==logging==&lt;br /&gt;
[https://community.fortinet.com/t5/FortiGate/Technical-Tip-Displaying-logs-via-FortiGate-s-CLI/ta-p/193027 Displaying logs via FortiGate's CLI]&lt;br /&gt;
&lt;br /&gt;
set log filter to view category with traffic logs&lt;br /&gt;
 execute log filter category 0&lt;br /&gt;
set log filter to view logs from local disk&lt;br /&gt;
 execute log filter device 0&lt;br /&gt;
view log filter settings&lt;br /&gt;
 execute log filter dump&lt;br /&gt;
reset log filter&lt;br /&gt;
 execute log filter reset&lt;br /&gt;
example..&lt;br /&gt;
&lt;br /&gt;
 execute log filter category 0&lt;br /&gt;
 execute log filter device 0&lt;br /&gt;
 execute log filter field srcip 10.0.0.10&lt;br /&gt;
 execute log filter field dstip 192.168.1.1&lt;br /&gt;
 execute log display&lt;br /&gt;
&lt;br /&gt;
[[category:fortinet]]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/fortinet_CLI_notes</id>
		<title>fortinet CLI notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/fortinet_CLI_notes"/>
				<updated>2025-08-13T17:29:20Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==vdom==&lt;br /&gt;
entering editing a vdom&lt;br /&gt;
&lt;br /&gt;
 # config vdom&lt;br /&gt;
 (vdom) #  edit myvdom&lt;br /&gt;
 (myvdom) # &lt;br /&gt;
&lt;br /&gt;
==interface commands==&lt;br /&gt;
===configure===&lt;br /&gt;
example&lt;br /&gt;
 # config system interface&lt;br /&gt;
 # edit port1&lt;br /&gt;
 # set mode static&lt;br /&gt;
 # set ip 10.1.1.1 255.255.255.0&lt;br /&gt;
 # next&lt;br /&gt;
 # end&lt;br /&gt;
&lt;br /&gt;
===get info==&lt;br /&gt;
for admin status, link stat, speeds, counters...&lt;br /&gt;
 # config global&lt;br /&gt;
 # get hardware nic &amp;lt;interface name&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==routes==&lt;br /&gt;
 # config router static&lt;br /&gt;
 # edit &amp;lt;route_index&amp;gt;&lt;br /&gt;
 # set device &amp;quot;&amp;lt;interface_name&amp;gt;&amp;quot;&lt;br /&gt;
 # set dst &amp;quot;&amp;lt;destination_ip&amp;gt;&amp;quot;&lt;br /&gt;
 # set gateway &amp;quot;&amp;lt;router_ip&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
for default gw..&lt;br /&gt;
 # set dst 0.0.0.0 0.0.0.0&lt;br /&gt;
or just leave the line out.&lt;br /&gt;
&lt;br /&gt;
HA status&lt;br /&gt;
 # config global&lt;br /&gt;
 # get sys ha status&lt;br /&gt;
&lt;br /&gt;
HA failover to highest priority (if it is not currently Master)&lt;br /&gt;
on current master run...&lt;br /&gt;
 # config global&lt;br /&gt;
 # diagnose sys ha reset-uptime&lt;br /&gt;
&lt;br /&gt;
get admin hash password&lt;br /&gt;
 # config global&lt;br /&gt;
 # config sys admin&lt;br /&gt;
 # show&lt;br /&gt;
&lt;br /&gt;
uptime&lt;br /&gt;
 # config global&lt;br /&gt;
 # get system perf status | grep -i uptime&lt;br /&gt;
&lt;br /&gt;
shutdown/reboot&lt;br /&gt;
&lt;br /&gt;
 # execute shutdown&lt;br /&gt;
or&lt;br /&gt;
 # execute reboot&lt;br /&gt;
&lt;br /&gt;
==firewall==&lt;br /&gt;
 # show firewall policy&lt;br /&gt;
&lt;br /&gt;
==packet capture==&lt;br /&gt;
&lt;br /&gt;
 # diagnose sniffer packet &amp;lt;interface|any&amp;gt; '&amp;lt;tcpdump-filter&amp;gt;' &amp;lt;verbosity&amp;gt; &amp;lt;count&amp;gt; &amp;lt;time-format&amp;gt;&lt;br /&gt;
&lt;br /&gt;
verbosity of 4 will show the port name&lt;br /&gt;
&lt;br /&gt;
where if count = 0, then unlimited&lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 fotinet1 # '''diagnose sniffer packet port1 'icmp'''' 4 2 l&lt;br /&gt;
 interfaces=[port1]&lt;br /&gt;
 filters=[icmp]&lt;br /&gt;
 2022-08-25 13:16:52.397609 port1 -- 192.168.169.76 -&amp;gt; 192.168.169.31: icmp: echo request&lt;br /&gt;
 2022-08-25 13:16:52.397673 port1 -- 192.168.169.31 -&amp;gt; 192.168.169.76: icmp: echo reply&lt;br /&gt;
&lt;br /&gt;
==misc==&lt;br /&gt;
&lt;br /&gt;
check if fortigate has fortimanager central-management setting&lt;br /&gt;
  $ show full-configuration | grep &amp;quot;set fmg &amp;quot;&lt;br /&gt;
&lt;br /&gt;
==default login==&lt;br /&gt;
&lt;br /&gt;
VM images = admin / (empty password)&lt;br /&gt;
&lt;br /&gt;
==logging==&lt;br /&gt;
[https://community.fortinet.com/t5/FortiGate/Technical-Tip-Displaying-logs-via-FortiGate-s-CLI/ta-p/193027 Displaying logs via FortiGate's CLI]&lt;br /&gt;
&lt;br /&gt;
set log filter to view category with traffic logs&lt;br /&gt;
 execute log filter category 0&lt;br /&gt;
set log filter to view logs from local disk&lt;br /&gt;
 execute log filter device 0&lt;br /&gt;
view log filter settings&lt;br /&gt;
 execute log filter dump&lt;br /&gt;
reset log filter&lt;br /&gt;
 execute log filter reset&lt;br /&gt;
example..&lt;br /&gt;
&lt;br /&gt;
 execute log filter category 0&lt;br /&gt;
 execute log filter device 0&lt;br /&gt;
 execute log filter srcip 10.0.0.10&lt;br /&gt;
 execute log filter dstip 192.168.1.1&lt;br /&gt;
 execute log display&lt;br /&gt;
&lt;br /&gt;
[[category:fortinet]]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/big-ip_notes</id>
		<title>big-ip notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/big-ip_notes"/>
				<updated>2025-05-13T16:20:59Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
get pool membership by node IP via CLI&lt;br /&gt;
 #  '''tmsh -q -c &amp;quot;cd /; list ltm pool one-line recursive&amp;quot; | grep &amp;lt;ip address&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
==links==&lt;br /&gt;
&lt;br /&gt;
[https://community.f5.com/kb/codeshare/big-ip-upgrade-procedure-using-cli-vcmp-guest--host/280685 BIG-IP Upgrade Procedure Using CLI (vCMP Guest &amp;amp; Host)]&lt;br /&gt;
&lt;br /&gt;
[https://networkproguide.com/f5-big-ip-cli-commands-cheat-sheet/ Big-ip cheat sheet]&lt;br /&gt;
[[category:f5]]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/fortinet_create_api_user_via_CLI</id>
		<title>fortinet create api user via CLI</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/fortinet_create_api_user_via_CLI"/>
				<updated>2025-04-28T17:20:15Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: Created page with &amp;quot;   To create a REST API administrator in the CLI:    config system api-user     edit &amp;quot;api-admin&amp;quot;         set comments &amp;lt;string&amp;gt;         set api-key ************         set acc...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To create a REST API administrator in the CLI:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 config system api-user&lt;br /&gt;
    edit &amp;quot;api-admin&amp;quot;&lt;br /&gt;
        set comments &amp;lt;string&amp;gt;&lt;br /&gt;
        set api-key ************&lt;br /&gt;
        set accprofile &amp;quot;API profile&amp;quot;&lt;br /&gt;
        set vdom &amp;quot;root&amp;quot;&lt;br /&gt;
        set peer-auth enable&lt;br /&gt;
        set peer-group &amp;lt;group&amp;gt;&lt;br /&gt;
        config trusthost&lt;br /&gt;
            edit 1&lt;br /&gt;
                set ipv4-trusthost &amp;lt;class_ip&amp;amp;net_netmask&amp;gt;&lt;br /&gt;
            next&lt;br /&gt;
            ...&lt;br /&gt;
        end&lt;br /&gt;
    next&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Generate the API token:&lt;br /&gt;
&lt;br /&gt;
 # execute api-user generate-key &amp;lt;API username&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[category:fortinet]]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/fortinet_downloads</id>
		<title>fortinet downloads</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/fortinet_downloads"/>
				<updated>2025-04-21T21:48:27Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://support.fortinet.com/Download/FirmwareImages.aspx&lt;br /&gt;
&lt;br /&gt;
[[category: fortinet]]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/fortinet_CLI_notes</id>
		<title>fortinet CLI notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/fortinet_CLI_notes"/>
				<updated>2025-03-29T14:30:04Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: /* packet capture */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==vdom==&lt;br /&gt;
entering editing a vdom&lt;br /&gt;
&lt;br /&gt;
 # config vdom&lt;br /&gt;
 (vdom) #  edit myvdom&lt;br /&gt;
 (myvdom) # &lt;br /&gt;
&lt;br /&gt;
==interface commands==&lt;br /&gt;
===configure===&lt;br /&gt;
example&lt;br /&gt;
 # config system interface&lt;br /&gt;
 # edit port1&lt;br /&gt;
 # set mode static&lt;br /&gt;
 # set ip 10.1.1.1 255.255.255.0&lt;br /&gt;
 # next&lt;br /&gt;
 # end&lt;br /&gt;
&lt;br /&gt;
===get info==&lt;br /&gt;
for admin status, link stat, speeds, counters...&lt;br /&gt;
 # config global&lt;br /&gt;
 # get hardware nic &amp;lt;interface name&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==routes==&lt;br /&gt;
 # config router static&lt;br /&gt;
 # edit &amp;lt;route_index&amp;gt;&lt;br /&gt;
 # set device &amp;quot;&amp;lt;interface_name&amp;gt;&amp;quot;&lt;br /&gt;
 # set dst &amp;quot;&amp;lt;destination_ip&amp;gt;&amp;quot;&lt;br /&gt;
 # set gateway &amp;quot;&amp;lt;router_ip&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
for default gw..&lt;br /&gt;
 # set dst 0.0.0.0 0.0.0.0&lt;br /&gt;
or just leave the line out.&lt;br /&gt;
&lt;br /&gt;
HA status&lt;br /&gt;
 # config global&lt;br /&gt;
 # get sys ha status&lt;br /&gt;
&lt;br /&gt;
HA failover to highest priority (if it is not currently Master)&lt;br /&gt;
on current master run...&lt;br /&gt;
 # config global&lt;br /&gt;
 # diagnose sys ha reset-uptime&lt;br /&gt;
&lt;br /&gt;
get admin hash password&lt;br /&gt;
 # config global&lt;br /&gt;
 # config sys admin&lt;br /&gt;
 # show&lt;br /&gt;
&lt;br /&gt;
uptime&lt;br /&gt;
 # config global&lt;br /&gt;
 # get system perf status | grep -i uptime&lt;br /&gt;
&lt;br /&gt;
shutdown/reboot&lt;br /&gt;
&lt;br /&gt;
 # execute shutdown&lt;br /&gt;
or&lt;br /&gt;
 # execute reboot&lt;br /&gt;
&lt;br /&gt;
==firewall==&lt;br /&gt;
 # show firewall policy&lt;br /&gt;
&lt;br /&gt;
==packet capture==&lt;br /&gt;
&lt;br /&gt;
 # diagnose sniffer packet &amp;lt;interface|any&amp;gt; '&amp;lt;tcpdump-filter&amp;gt;' &amp;lt;verbosity&amp;gt; &amp;lt;count&amp;gt; &amp;lt;time-format&amp;gt;&lt;br /&gt;
&lt;br /&gt;
verbosity of 4 will show the port name&lt;br /&gt;
&lt;br /&gt;
where if count = 0, then unlimited&lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 fotinet1 # '''diagnose sniffer packet port1 'icmp'''' 4 2 l&lt;br /&gt;
 interfaces=[port1]&lt;br /&gt;
 filters=[icmp]&lt;br /&gt;
 2022-08-25 13:16:52.397609 port1 -- 192.168.169.76 -&amp;gt; 192.168.169.31: icmp: echo request&lt;br /&gt;
 2022-08-25 13:16:52.397673 port1 -- 192.168.169.31 -&amp;gt; 192.168.169.76: icmp: echo reply&lt;br /&gt;
&lt;br /&gt;
==misc==&lt;br /&gt;
&lt;br /&gt;
check if fortigate has fortimanager central-management setting&lt;br /&gt;
  $ show full-configuration | grep &amp;quot;set fmg &amp;quot;&lt;br /&gt;
&lt;br /&gt;
==default login==&lt;br /&gt;
&lt;br /&gt;
VM images = admin / (empty password)&lt;br /&gt;
&lt;br /&gt;
[[category:fortinet]]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/fortinet_CLI_notes</id>
		<title>fortinet CLI notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/fortinet_CLI_notes"/>
				<updated>2025-03-29T14:29:46Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==vdom==&lt;br /&gt;
entering editing a vdom&lt;br /&gt;
&lt;br /&gt;
 # config vdom&lt;br /&gt;
 (vdom) #  edit myvdom&lt;br /&gt;
 (myvdom) # &lt;br /&gt;
&lt;br /&gt;
==interface commands==&lt;br /&gt;
===configure===&lt;br /&gt;
example&lt;br /&gt;
 # config system interface&lt;br /&gt;
 # edit port1&lt;br /&gt;
 # set mode static&lt;br /&gt;
 # set ip 10.1.1.1 255.255.255.0&lt;br /&gt;
 # next&lt;br /&gt;
 # end&lt;br /&gt;
&lt;br /&gt;
===get info==&lt;br /&gt;
for admin status, link stat, speeds, counters...&lt;br /&gt;
 # config global&lt;br /&gt;
 # get hardware nic &amp;lt;interface name&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==routes==&lt;br /&gt;
 # config router static&lt;br /&gt;
 # edit &amp;lt;route_index&amp;gt;&lt;br /&gt;
 # set device &amp;quot;&amp;lt;interface_name&amp;gt;&amp;quot;&lt;br /&gt;
 # set dst &amp;quot;&amp;lt;destination_ip&amp;gt;&amp;quot;&lt;br /&gt;
 # set gateway &amp;quot;&amp;lt;router_ip&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
for default gw..&lt;br /&gt;
 # set dst 0.0.0.0 0.0.0.0&lt;br /&gt;
or just leave the line out.&lt;br /&gt;
&lt;br /&gt;
HA status&lt;br /&gt;
 # config global&lt;br /&gt;
 # get sys ha status&lt;br /&gt;
&lt;br /&gt;
HA failover to highest priority (if it is not currently Master)&lt;br /&gt;
on current master run...&lt;br /&gt;
 # config global&lt;br /&gt;
 # diagnose sys ha reset-uptime&lt;br /&gt;
&lt;br /&gt;
get admin hash password&lt;br /&gt;
 # config global&lt;br /&gt;
 # config sys admin&lt;br /&gt;
 # show&lt;br /&gt;
&lt;br /&gt;
uptime&lt;br /&gt;
 # config global&lt;br /&gt;
 # get system perf status | grep -i uptime&lt;br /&gt;
&lt;br /&gt;
shutdown/reboot&lt;br /&gt;
&lt;br /&gt;
 # execute shutdown&lt;br /&gt;
or&lt;br /&gt;
 # execute reboot&lt;br /&gt;
&lt;br /&gt;
==firewall==&lt;br /&gt;
 # show firewall policy&lt;br /&gt;
&lt;br /&gt;
==packet capture==&lt;br /&gt;
&lt;br /&gt;
 # diagnose sniffer packet &amp;lt;interface|any&amp;gt; '&amp;lt;tcpdump-filter&amp;gt;' &amp;lt;verbosity&amp;gt; &amp;lt;count&amp;gt; &amp;lt;time-format&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;verbosity of 4 will show the port name&lt;br /&gt;
&lt;br /&gt;
where if count = 0, then unlimited&lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 fotinet1 # '''diagnose sniffer packet port1 'icmp'''' 4 2 l&lt;br /&gt;
 interfaces=[port1]&lt;br /&gt;
 filters=[icmp]&lt;br /&gt;
 2022-08-25 13:16:52.397609 port1 -- 192.168.169.76 -&amp;gt; 192.168.169.31: icmp: echo request&lt;br /&gt;
 2022-08-25 13:16:52.397673 port1 -- 192.168.169.31 -&amp;gt; 192.168.169.76: icmp: echo reply&lt;br /&gt;
&lt;br /&gt;
==misc==&lt;br /&gt;
&lt;br /&gt;
check if fortigate has fortimanager central-management setting&lt;br /&gt;
  $ show full-configuration | grep &amp;quot;set fmg &amp;quot;&lt;br /&gt;
&lt;br /&gt;
==default login==&lt;br /&gt;
&lt;br /&gt;
VM images = admin / (empty password)&lt;br /&gt;
&lt;br /&gt;
[[category:fortinet]]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/fortinet_CLI_notes</id>
		<title>fortinet CLI notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/fortinet_CLI_notes"/>
				<updated>2025-03-29T14:29:09Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: /* packet capture */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==vdom==&lt;br /&gt;
entering editing a vdom&lt;br /&gt;
&lt;br /&gt;
 # config vdom&lt;br /&gt;
 (vdom) #  edit myvdom&lt;br /&gt;
 (myvdom) # &lt;br /&gt;
&lt;br /&gt;
==interface commands==&lt;br /&gt;
===configure===&lt;br /&gt;
example&lt;br /&gt;
 # config system interface&lt;br /&gt;
 # edit port1&lt;br /&gt;
 # set mode static&lt;br /&gt;
 # set ip 10.1.1.1 255.255.255.0&lt;br /&gt;
 # next&lt;br /&gt;
 # end&lt;br /&gt;
&lt;br /&gt;
===get info==&lt;br /&gt;
for admin status, link stat, speeds, counters...&lt;br /&gt;
 # config global&lt;br /&gt;
 # get hardware nic &amp;lt;interface name&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==routes==&lt;br /&gt;
 # config router static&lt;br /&gt;
 # edit &amp;lt;route_index&amp;gt;&lt;br /&gt;
 # set device &amp;quot;&amp;lt;interface_name&amp;gt;&amp;quot;&lt;br /&gt;
 # set dst &amp;quot;&amp;lt;destination_ip&amp;gt;&amp;quot;&lt;br /&gt;
 # set gateway &amp;quot;&amp;lt;router_ip&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
for default gw..&lt;br /&gt;
 # set dst 0.0.0.0 0.0.0.0&lt;br /&gt;
or just leave the line out.&lt;br /&gt;
&lt;br /&gt;
HA status&lt;br /&gt;
 # config global&lt;br /&gt;
 # get sys ha status&lt;br /&gt;
&lt;br /&gt;
HA failover to highest priority (if it is not currently Master)&lt;br /&gt;
on current master run...&lt;br /&gt;
 # config global&lt;br /&gt;
 # diagnose sys ha reset-uptime&lt;br /&gt;
&lt;br /&gt;
get admin hash password&lt;br /&gt;
 # config global&lt;br /&gt;
 # config sys admin&lt;br /&gt;
 # show&lt;br /&gt;
&lt;br /&gt;
uptime&lt;br /&gt;
 # config global&lt;br /&gt;
 # get system perf status | grep -i uptime&lt;br /&gt;
&lt;br /&gt;
shutdown/reboot&lt;br /&gt;
&lt;br /&gt;
 # execute shutdown&lt;br /&gt;
or&lt;br /&gt;
 # execute reboot&lt;br /&gt;
&lt;br /&gt;
==firewall==&lt;br /&gt;
# show firewall policy&lt;br /&gt;
&lt;br /&gt;
==packet capture==&lt;br /&gt;
&lt;br /&gt;
# diagnose sniffer packet &amp;lt;interface|any&amp;gt; '&amp;lt;tcpdump-filter&amp;gt;' &amp;lt;verbosity&amp;gt; &amp;lt;count&amp;gt; &amp;lt;time-format&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;verbosity of 4 will show the port name&lt;br /&gt;
&lt;br /&gt;
where if count = 0, then unlimited&lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 fotinet1 # '''diagnose sniffer packet port1 'icmp'''' 4 2 l&lt;br /&gt;
 interfaces=[port1]&lt;br /&gt;
 filters=[icmp]&lt;br /&gt;
 2022-08-25 13:16:52.397609 port1 -- 192.168.169.76 -&amp;gt; 192.168.169.31: icmp: echo request&lt;br /&gt;
 2022-08-25 13:16:52.397673 port1 -- 192.168.169.31 -&amp;gt; 192.168.169.76: icmp: echo reply&lt;br /&gt;
&lt;br /&gt;
==misc==&lt;br /&gt;
&lt;br /&gt;
check if fortigate has fortimanager central-management setting&lt;br /&gt;
  $ show full-configuration | grep &amp;quot;set fmg &amp;quot;&lt;br /&gt;
&lt;br /&gt;
==default login==&lt;br /&gt;
&lt;br /&gt;
VM images = admin / (empty password)&lt;br /&gt;
&lt;br /&gt;
[[category:fortinet]]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/fortinet_CLI_notes</id>
		<title>fortinet CLI notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/fortinet_CLI_notes"/>
				<updated>2025-03-29T14:28:20Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: /* packet capture */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==vdom==&lt;br /&gt;
entering editing a vdom&lt;br /&gt;
&lt;br /&gt;
 # config vdom&lt;br /&gt;
 (vdom) #  edit myvdom&lt;br /&gt;
 (myvdom) # &lt;br /&gt;
&lt;br /&gt;
==interface commands==&lt;br /&gt;
===configure===&lt;br /&gt;
example&lt;br /&gt;
 # config system interface&lt;br /&gt;
 # edit port1&lt;br /&gt;
 # set mode static&lt;br /&gt;
 # set ip 10.1.1.1 255.255.255.0&lt;br /&gt;
 # next&lt;br /&gt;
 # end&lt;br /&gt;
&lt;br /&gt;
===get info==&lt;br /&gt;
for admin status, link stat, speeds, counters...&lt;br /&gt;
 # config global&lt;br /&gt;
 # get hardware nic &amp;lt;interface name&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==routes==&lt;br /&gt;
 # config router static&lt;br /&gt;
 # edit &amp;lt;route_index&amp;gt;&lt;br /&gt;
 # set device &amp;quot;&amp;lt;interface_name&amp;gt;&amp;quot;&lt;br /&gt;
 # set dst &amp;quot;&amp;lt;destination_ip&amp;gt;&amp;quot;&lt;br /&gt;
 # set gateway &amp;quot;&amp;lt;router_ip&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
for default gw..&lt;br /&gt;
 # set dst 0.0.0.0 0.0.0.0&lt;br /&gt;
or just leave the line out.&lt;br /&gt;
&lt;br /&gt;
HA status&lt;br /&gt;
 # config global&lt;br /&gt;
 # get sys ha status&lt;br /&gt;
&lt;br /&gt;
HA failover to highest priority (if it is not currently Master)&lt;br /&gt;
on current master run...&lt;br /&gt;
 # config global&lt;br /&gt;
 # diagnose sys ha reset-uptime&lt;br /&gt;
&lt;br /&gt;
get admin hash password&lt;br /&gt;
 # config global&lt;br /&gt;
 # config sys admin&lt;br /&gt;
 # show&lt;br /&gt;
&lt;br /&gt;
uptime&lt;br /&gt;
 # config global&lt;br /&gt;
 # get system perf status | grep -i uptime&lt;br /&gt;
&lt;br /&gt;
shutdown/reboot&lt;br /&gt;
&lt;br /&gt;
 # execute shutdown&lt;br /&gt;
or&lt;br /&gt;
 # execute reboot&lt;br /&gt;
&lt;br /&gt;
==firewall==&lt;br /&gt;
# show firewall policy&lt;br /&gt;
&lt;br /&gt;
==packet capture==&lt;br /&gt;
&lt;br /&gt;
# diagnose sniffer packet &amp;lt;interface|any&amp;gt; '&amp;lt;tcpdump-filter&amp;gt;' &amp;lt;verbosity&amp;gt; &amp;lt;count&amp;gt; &amp;lt;time-format&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;bnspverbosity of 4 will show the port name&lt;br /&gt;
&lt;br /&gt;
where if count = 0, then unlimited&lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 fotinet1 # '''diagnose sniffer packet port1 'icmp'''' 4 2 l&lt;br /&gt;
 interfaces=[port1]&lt;br /&gt;
 filters=[icmp]&lt;br /&gt;
 2022-08-25 13:16:52.397609 port1 -- 192.168.169.76 -&amp;gt; 192.168.169.31: icmp: echo request&lt;br /&gt;
 2022-08-25 13:16:52.397673 port1 -- 192.168.169.31 -&amp;gt; 192.168.169.76: icmp: echo reply&lt;br /&gt;
&lt;br /&gt;
==misc==&lt;br /&gt;
&lt;br /&gt;
check if fortigate has fortimanager central-management setting&lt;br /&gt;
  $ show full-configuration | grep &amp;quot;set fmg &amp;quot;&lt;br /&gt;
&lt;br /&gt;
==default login==&lt;br /&gt;
&lt;br /&gt;
VM images = admin / (empty password)&lt;br /&gt;
&lt;br /&gt;
[[category:fortinet]]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/API_for_logs_manpage</id>
		<title>API for logs manpage</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/API_for_logs_manpage"/>
				<updated>2025-03-26T22:52:11Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==For a new logs query==&lt;br /&gt;
 '''mgmt_cli show-logs new-query.filter product:&amp;lt;product name&amp;gt; new-query.time-frame &amp;lt;time-frame&amp;gt; new-query.max-logs-per-request &amp;lt;limit&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
filter - The filter as entered in SmartConsole/SmartView. Type: String&lt;br /&gt;
&lt;br /&gt;
time-frame - Specify the time frame to query logs. Type: String&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;Valid values: last-7-days last-hour today last-24-hours yesterday this-week this-month last-30-days all-time custom Default: last-7-days&lt;br /&gt;
&lt;br /&gt;
custom-start - Must be in ISO861 format. Type: String&lt;br /&gt;
&lt;br /&gt;
custom-end - Must be in ISO861 format. Type: String&lt;br /&gt;
&lt;br /&gt;
max-logs-per-request - Valid values: 1-100 Default: 10 Type: String&lt;br /&gt;
&lt;br /&gt;
type - Type of logs to return. Valid values: logs, audit. Default: logs&lt;br /&gt;
&lt;br /&gt;
log-servers - List of IPs of log servers to query. Default: all&lt;br /&gt;
&lt;br /&gt;
==To get results for top statistics==&lt;br /&gt;
 '''mgmt_cli show-logs new-query.filter product:&amp;lt;product name&amp;gt; new-query.top.field blades new-query.top.count &amp;lt;number&amp;gt; --format json -r true'''&lt;br /&gt;
&lt;br /&gt;
count - Valid values: 1-50&lt;br /&gt;
&lt;br /&gt;
field - Valid values: sources destinations services actions blades origins users applications&lt;br /&gt;
&lt;br /&gt;
==To get more results for an existing query==&lt;br /&gt;
 '''mgmt_cli show-logs query-id &amp;lt;query-id&amp;gt; --session-id &amp;lt;session-id&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
query-id - Get the next page of the last run query with a specified limit.&lt;br /&gt;
&lt;br /&gt;
ignore-warnings - Ignore warnings if they exist. Type: Boolean&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
The parameter &amp;quot;time-frame&amp;quot; in the API command does not accept this format as input:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp; yyyymmddThhmmssZ&lt;br /&gt;
&lt;br /&gt;
The command does not support non-index mode log queries.&lt;br /&gt;
&lt;br /&gt;
[[category:api]]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/API_for_logs_manpage</id>
		<title>API for logs manpage</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/API_for_logs_manpage"/>
				<updated>2025-03-26T22:41:55Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; mgmt_cli show-logs new-query.filter product:&amp;lt;product name&amp;gt; new-query.time-frame &amp;lt;time-frame&amp;gt; new-query.max-logs-per-request &amp;lt;limit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
filter - The filter as entered in SmartConsole/SmartView. Type: String&lt;br /&gt;
&lt;br /&gt;
time-frame - Specify the time frame to query logs. Type: String&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;Valid values: last-7-days last-hour today last-24-hours yesterday this-week this-month last-30-days all-time custom Default: last-7-days&lt;br /&gt;
&lt;br /&gt;
custom-start - Must be in ISO861 format. Type: String&lt;br /&gt;
&lt;br /&gt;
custom-end - Must be in ISO861 format. Type: String&lt;br /&gt;
&lt;br /&gt;
max-logs-per-request - Valid values: 1-100 Default: 10 Type: String&lt;br /&gt;
&lt;br /&gt;
type - Type of logs to return. Valid values: logs, audit. Default: logs&lt;br /&gt;
&lt;br /&gt;
log-servers - List of IPs of log servers to query. Default: all&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/API_for_logs_manpage</id>
		<title>API for logs manpage</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/API_for_logs_manpage"/>
				<updated>2025-03-26T22:35:54Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: Created page with &amp;quot; mgmt_cli show-logs new-query.filter product:&amp;lt;product name&amp;gt; new-query.time-frame &amp;lt;time-frame&amp;gt; new-query.max-logs-per-request &amp;lt;limit&amp;gt;   filter - The filter as entered in SmartC...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; mgmt_cli show-logs new-query.filter product:&amp;lt;product name&amp;gt; new-query.time-frame &amp;lt;time-frame&amp;gt; new-query.max-logs-per-request &amp;lt;limit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
filter - The filter as entered in SmartConsole/SmartView. Type: String&lt;br /&gt;
&lt;br /&gt;
time-frame - Specify the time frame to query logs.&lt;br /&gt;
&lt;br /&gt;
{{spc}}Valid values: last-7-days last-hour today last-24-hours yesterday this-week this-month last-30-days all-time custom Default: last-7-days&lt;br /&gt;
&lt;br /&gt;
{{spc}}Type: String&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/big-ip_notes</id>
		<title>big-ip notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/big-ip_notes"/>
				<updated>2024-12-09T17:55:37Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==links==&lt;br /&gt;
&lt;br /&gt;
[https://community.f5.com/kb/codeshare/big-ip-upgrade-procedure-using-cli-vcmp-guest--host/280685 BIG-IP Upgrade Procedure Using CLI (vCMP Guest &amp;amp; Host)]&lt;br /&gt;
&lt;br /&gt;
[https://networkproguide.com/f5-big-ip-cli-commands-cheat-sheet/ Big-ip cheat sheet]&lt;br /&gt;
[[category:f5]]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/big-ip_notes</id>
		<title>big-ip notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/big-ip_notes"/>
				<updated>2024-10-04T19:06:57Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: Created page with &amp;quot;==links==  [https://community.f5.com/kb/codeshare/big-ip-upgrade-procedure-using-cli-vcmp-guest--host/280685 BIG-IP Upgrade Procedure Using CLI (vCMP Guest &amp;amp; Host)] category...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==links==&lt;br /&gt;
&lt;br /&gt;
[https://community.f5.com/kb/codeshare/big-ip-upgrade-procedure-using-cli-vcmp-guest--host/280685 BIG-IP Upgrade Procedure Using CLI (vCMP Guest &amp;amp; Host)]&lt;br /&gt;
[[category:f5]]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/snmp</id>
		<title>snmp</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/snmp"/>
				<updated>2024-07-08T20:56:55Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;mib files location on check point device&lt;br /&gt;
 $CPDIR/lib/snmp/&lt;br /&gt;
&lt;br /&gt;
==mib descriptions and OID of interest==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
appliance model&lt;br /&gt;
 &amp;quot;svnApplianceProductName&amp;quot;                       &amp;quot;1.3.6.1.4.1.2620.1.6.16.7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
get check point version&lt;br /&gt;
&amp;quot;svnVersion&amp;quot;                    &amp;quot;1.3.6.1.4.1.2620.1.6.4.1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 [Expert@chkpfw1:0]# '''snmpget -v2c -c public localhost 1.3.6.1.4.1.2620.1.6.4.1.0'''&lt;br /&gt;
 SNMPv2-SMI::enterprises.2620.1.6.4.1.0 = STRING: &amp;quot;R80.20&amp;quot;&lt;br /&gt;
&lt;br /&gt;
firewall connections&lt;br /&gt;
 $ '''snmptranslate -Tz -m CHECKPOINT-MIB | grep -i fwnumconn'''&lt;br /&gt;
 &amp;quot;fwNumConn&amp;quot;                     &amp;quot;1.3.6.1.4.1.2620.1.1.25.3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 $ '''snmpget -v 2c -c public 10.0.0.254 1.3.6.1.4.1.2620.1.1.25.3.0'''&lt;br /&gt;
 SNMPv2-SMI::enterprises.2620.1.1.25.3.0 = Gauge32: 3310&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category:snmp]]&lt;br /&gt;
[[category:monitoring]]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/snmp</id>
		<title>snmp</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/snmp"/>
				<updated>2024-07-08T20:53:59Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;mib files location on check point device&lt;br /&gt;
 $CPDIR/lib/snmp/&lt;br /&gt;
&lt;br /&gt;
==mib descriptions and OID of interest==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
appliance model&lt;br /&gt;
 &amp;quot;svnApplianceProductName&amp;quot;                       &amp;quot;1.3.6.1.4.1.2620.1.6.16.7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
get check point version&lt;br /&gt;
&amp;quot;svnVersion&amp;quot;                    &amp;quot;1.3.6.1.4.1.2620.1.6.4.1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 [Expert@chkpfw1:0]# '''snmpget -v2c -c public localhost 1.3.6.1.4.1.2620.1.6.4.1.0'''&lt;br /&gt;
 SNMPv2-SMI::enterprises.2620.1.6.4.1.0 = STRING: &amp;quot;R80.20&amp;quot;&lt;br /&gt;
&lt;br /&gt;
firewall connections&lt;br /&gt;
 $ '''snmptranslate -Tz -m CHECKPOINT-MIB | grep -i fwnumconn'''&lt;br /&gt;
&amp;quot;fwNumConn&amp;quot;                     &amp;quot;1.3.6.1.4.1.2620.1.1.25.3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 $ '''snmpget -v 2c -c public 10.0.0.254 1.3.6.1.4.1.2620.1.1.25.3.0'''&lt;br /&gt;
 SNMPv2-SMI::enterprises.2620.1.1.25.3.0 = Gauge32: 3310&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category:snmp]]&lt;br /&gt;
[[category:monitoring]]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/vsx_notes</id>
		<title>vsx notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/vsx_notes"/>
				<updated>2024-07-03T14:25:54Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==performance optimization==&lt;br /&gt;
concurrent connections sizing - automatic setting not available for VSX. this must be hard coded and monitored.&lt;br /&gt;
==troubleshooting==&lt;br /&gt;
&lt;br /&gt;
show status&lt;br /&gt;
 [Expert@MyVsxGW:2]# '''vsx stat -v'''&lt;br /&gt;
 VSX Gateway Status&lt;br /&gt;
 ==================&lt;br /&gt;
 Name:&lt;br /&gt;
  VSX1_192.168.3.241&lt;br /&gt;
 Access Control Policy: VSX_Cluster_VSX&lt;br /&gt;
 Installed at:&lt;br /&gt;
  20Sep2019 22:06:33&lt;br /&gt;
 Threat Prevention Policy: &amp;lt;No Policy&amp;gt;&lt;br /&gt;
 SIC Status:&lt;br /&gt;
  Trust&lt;br /&gt;
 Number of Virtual Systems allowed by license:&lt;br /&gt;
  25&lt;br /&gt;
 Virtual Systems [active / configured]:&lt;br /&gt;
  2 / 2&lt;br /&gt;
 Virtual Routers and Switches [active / configured]:&lt;br /&gt;
  0 / 0&lt;br /&gt;
 Total connections [current / limit]:&lt;br /&gt;
  5 / 44700&lt;br /&gt;
 Virtual Devices Status&lt;br /&gt;
 ======================&lt;br /&gt;
 ID   | Type &amp;amp; Name | Access Control Policy | Installed at    | Threat Prevention Policy | SIC Stat&lt;br /&gt;
 -----+-------------+-----------------------+-----------------+--------------------------+---------&lt;br /&gt;
 1    | S VS1       | VS_Policy             | 20Sep2019 22:07 | &amp;lt;No Policy&amp;gt;              | Trust&lt;br /&gt;
 2    | S VS2       | VS_Policy             | 20Sep2019 22:07 | &amp;lt;No Policy&amp;gt;              | Trust&lt;br /&gt;
&lt;br /&gt;
set the context to the appropriate Virtual System with &amp;quot;vsenv &amp;lt;ID|name&amp;gt;&lt;br /&gt;
 # '''vsenv 2'''&lt;br /&gt;
&lt;br /&gt;
get interfaces&lt;br /&gt;
 # '''fw getifs'''&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/vsx_notes</id>
		<title>vsx notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/vsx_notes"/>
				<updated>2024-07-03T03:57:42Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==troubleshooting==&lt;br /&gt;
&lt;br /&gt;
show status&lt;br /&gt;
 [Expert@MyVsxGW:2]# '''vsx stat -v'''&lt;br /&gt;
 VSX Gateway Status&lt;br /&gt;
 ==================&lt;br /&gt;
 Name:&lt;br /&gt;
  VSX1_192.168.3.241&lt;br /&gt;
 Access Control Policy: VSX_Cluster_VSX&lt;br /&gt;
 Installed at:&lt;br /&gt;
  20Sep2019 22:06:33&lt;br /&gt;
 Threat Prevention Policy: &amp;lt;No Policy&amp;gt;&lt;br /&gt;
 SIC Status:&lt;br /&gt;
  Trust&lt;br /&gt;
 Number of Virtual Systems allowed by license:&lt;br /&gt;
  25&lt;br /&gt;
 Virtual Systems [active / configured]:&lt;br /&gt;
  2 / 2&lt;br /&gt;
 Virtual Routers and Switches [active / configured]:&lt;br /&gt;
  0 / 0&lt;br /&gt;
 Total connections [current / limit]:&lt;br /&gt;
  5 / 44700&lt;br /&gt;
 Virtual Devices Status&lt;br /&gt;
 ======================&lt;br /&gt;
 ID   | Type &amp;amp; Name | Access Control Policy | Installed at    | Threat Prevention Policy | SIC Stat&lt;br /&gt;
 -----+-------------+-----------------------+-----------------+--------------------------+---------&lt;br /&gt;
 1    | S VS1       | VS_Policy             | 20Sep2019 22:07 | &amp;lt;No Policy&amp;gt;              | Trust&lt;br /&gt;
 2    | S VS2       | VS_Policy             | 20Sep2019 22:07 | &amp;lt;No Policy&amp;gt;              | Trust&lt;br /&gt;
&lt;br /&gt;
set the context to the appropriate Virtual System with &amp;quot;vsenv &amp;lt;ID|name&amp;gt;&lt;br /&gt;
 # '''vsenv 2'''&lt;br /&gt;
&lt;br /&gt;
get interfaces&lt;br /&gt;
 # '''fw getifs'''&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/vsx_notes</id>
		<title>vsx notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/vsx_notes"/>
				<updated>2024-07-03T03:50:29Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: Created page with &amp;quot;  ==troubleshooting==  show status  [Expert@MyVsxGW:2]# '''vsx stat -v'''  VSX Gateway Status  ==================  Name:   VSX1_192.168.3.241  Access Control Policy: VSX_Clust...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==troubleshooting==&lt;br /&gt;
&lt;br /&gt;
show status&lt;br /&gt;
 [Expert@MyVsxGW:2]# '''vsx stat -v'''&lt;br /&gt;
 VSX Gateway Status&lt;br /&gt;
 ==================&lt;br /&gt;
 Name:&lt;br /&gt;
  VSX1_192.168.3.241&lt;br /&gt;
 Access Control Policy: VSX_Cluster_VSX&lt;br /&gt;
 Installed at:&lt;br /&gt;
  20Sep2019 22:06:33&lt;br /&gt;
 Threat Prevention Policy: &amp;lt;No Policy&amp;gt;&lt;br /&gt;
 SIC Status:&lt;br /&gt;
  Trust&lt;br /&gt;
 Number of Virtual Systems allowed by license:&lt;br /&gt;
  25&lt;br /&gt;
 Virtual Systems [active / configured]:&lt;br /&gt;
  2 / 2&lt;br /&gt;
 Virtual Routers and Switches [active / configured]:&lt;br /&gt;
  0 / 0&lt;br /&gt;
 Total connections [current / limit]:&lt;br /&gt;
  5 / 44700&lt;br /&gt;
 Virtual Devices Status&lt;br /&gt;
 ======================&lt;br /&gt;
 ID | Type &amp;amp; Name | Access Control Policy | Installed at&lt;br /&gt;
  | Threat Prevention Policy | SIC Stat&lt;br /&gt;
 -----+-------------+-----------------------+-----------------+--------------------------+---------&lt;br /&gt;
 1    | S VS1       | VS_Policy             | 20Sep2019 22:07 | &amp;lt;No Policy&amp;gt;              | Trust&lt;br /&gt;
 2    | S VS2       | VS_Policy             | 20Sep2019 22:07 | &amp;lt;No Policy&amp;gt;              | Trust&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/cisco_asa_notes</id>
		<title>cisco asa notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/cisco_asa_notes"/>
				<updated>2024-06-24T18:54:53Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Getting Started==&lt;br /&gt;
===Accessing the Appliance Command-Line Interface===&lt;br /&gt;
&lt;br /&gt;
This following prompt indicates that you are in user EXEC mode. Only basic commands are available from user EXEC mode.&lt;br /&gt;
 hostname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To access privileged EXEC mode, enter the following command:&lt;br /&gt;
 hostname&amp;gt; '''enable'''&lt;br /&gt;
&lt;br /&gt;
The prompt changes to the following:&lt;br /&gt;
 hostname#&lt;br /&gt;
&lt;br /&gt;
To exit privileged mode, enter the disable, exit, or quit command.&lt;br /&gt;
&lt;br /&gt;
access global configuration mode&lt;br /&gt;
 hostname# '''configure terminal'''&lt;br /&gt;
&lt;br /&gt;
The prompt changes to the following:&lt;br /&gt;
 hostname(config)#&lt;br /&gt;
&lt;br /&gt;
===configure base system===&lt;br /&gt;
&lt;br /&gt;
set firewall mode to transparent or routed? (Optional)&lt;br /&gt;
&lt;br /&gt;
example config... can paste on command line over console&lt;br /&gt;
 ASA Version 9.18.4&lt;br /&gt;
 !&lt;br /&gt;
 console serial&lt;br /&gt;
 interface management0/0&lt;br /&gt;
 nameif management&lt;br /&gt;
 security-level 100&lt;br /&gt;
 ip address 192.168.100.254 255.255.255.0&lt;br /&gt;
 no shutdown&lt;br /&gt;
 interface gigabitethernet0/0&lt;br /&gt;
 nameif inside&lt;br /&gt;
 security-level 100&lt;br /&gt;
 ip address 10.100.0.254 255.255.255.0&lt;br /&gt;
 no shutdown&lt;br /&gt;
 interface gigabitethernet0/1&lt;br /&gt;
 nameif outside&lt;br /&gt;
 security-level 0&lt;br /&gt;
 ip address 172.16.100.254 255.255.255.0&lt;br /&gt;
 no shutdown&lt;br /&gt;
 http server enable&lt;br /&gt;
 http 192.168.100.0 255.255.255.0 management&lt;br /&gt;
 crypto key generate rsa modulus 1024&lt;br /&gt;
 username admin password admin&lt;br /&gt;
 ssh 192.168.100.0 255.255.255.0 management&lt;br /&gt;
 aaa authentication ssh console LOCAL &lt;br /&gt;
&lt;br /&gt;
save config&lt;br /&gt;
 hostname(config)# '''write memory'''&lt;br /&gt;
&lt;br /&gt;
==VM notes==&lt;br /&gt;
&lt;br /&gt;
KVM graphical console stops after...&lt;br /&gt;
 Booting the kernel.&lt;br /&gt;
&lt;br /&gt;
at this point he VM is outputing to the virtual serial console. There are similar experiences on VMware.&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/fortinet_downloads</id>
		<title>fortinet downloads</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/fortinet_downloads"/>
				<updated>2024-06-20T21:18:53Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: Created page with &amp;quot;https://support.fortinet.com/Download/FirmwareImages.aspx&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://support.fortinet.com/Download/FirmwareImages.aspx&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/fortinet_CLI_notes</id>
		<title>fortinet CLI notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/fortinet_CLI_notes"/>
				<updated>2024-06-20T18:10:14Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==vdom==&lt;br /&gt;
entering editing a vdom&lt;br /&gt;
&lt;br /&gt;
 # config vdom&lt;br /&gt;
 (vdom) #  edit myvdom&lt;br /&gt;
 (myvdom) # &lt;br /&gt;
&lt;br /&gt;
==interface commands==&lt;br /&gt;
===configure===&lt;br /&gt;
example&lt;br /&gt;
 # config system interface&lt;br /&gt;
 # edit port1&lt;br /&gt;
 # set mode static&lt;br /&gt;
 # set ip 10.1.1.1 255.255.255.0&lt;br /&gt;
 # next&lt;br /&gt;
 # end&lt;br /&gt;
&lt;br /&gt;
===get info==&lt;br /&gt;
for admin status, link stat, speeds, counters...&lt;br /&gt;
 # config global&lt;br /&gt;
 # get hardware nic &amp;lt;interface name&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==routes==&lt;br /&gt;
 # config router static&lt;br /&gt;
 # edit &amp;lt;route_index&amp;gt;&lt;br /&gt;
 # set device &amp;quot;&amp;lt;interface_name&amp;gt;&amp;quot;&lt;br /&gt;
 # set dst &amp;quot;&amp;lt;destination_ip&amp;gt;&amp;quot;&lt;br /&gt;
 # set gateway &amp;quot;&amp;lt;router_ip&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
for default gw..&lt;br /&gt;
 # set dst 0.0.0.0 0.0.0.0&lt;br /&gt;
or just leave the line out.&lt;br /&gt;
&lt;br /&gt;
HA status&lt;br /&gt;
 # config global&lt;br /&gt;
 # get sys ha status&lt;br /&gt;
&lt;br /&gt;
HA failover to highest priority (if it is not currently Master)&lt;br /&gt;
on current master run...&lt;br /&gt;
 # config global&lt;br /&gt;
 # diagnose sys ha reset-uptime&lt;br /&gt;
&lt;br /&gt;
get admin hash password&lt;br /&gt;
 # config global&lt;br /&gt;
 # config sys admin&lt;br /&gt;
 # show&lt;br /&gt;
&lt;br /&gt;
uptime&lt;br /&gt;
 # config global&lt;br /&gt;
 # get system perf status | grep -i uptime&lt;br /&gt;
&lt;br /&gt;
shutdown/reboot&lt;br /&gt;
&lt;br /&gt;
 # execute shutdown&lt;br /&gt;
or&lt;br /&gt;
 # execute reboot&lt;br /&gt;
&lt;br /&gt;
==firewall==&lt;br /&gt;
# show firewall policy&lt;br /&gt;
&lt;br /&gt;
==packet capture==&lt;br /&gt;
&lt;br /&gt;
# diagnose sniffer packet &amp;lt;interface|any&amp;gt; '&amp;lt;tcpdump-filter&amp;gt;' &amp;lt;verbosity&amp;gt; &amp;lt;count&amp;gt; &amp;lt;time-format&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where if count = 0, then unlimited&lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 fotinet1 # '''diagnose sniffer packet port1 'icmp'''' 4 2 l&lt;br /&gt;
 interfaces=[port1]&lt;br /&gt;
 filters=[icmp]&lt;br /&gt;
 2022-08-25 13:16:52.397609 port1 -- 192.168.169.76 -&amp;gt; 192.168.169.31: icmp: echo request&lt;br /&gt;
 2022-08-25 13:16:52.397673 port1 -- 192.168.169.31 -&amp;gt; 192.168.169.76: icmp: echo reply&lt;br /&gt;
&lt;br /&gt;
==misc==&lt;br /&gt;
&lt;br /&gt;
check if fortigate has fortimanager central-management setting&lt;br /&gt;
  $ show full-configuration | grep &amp;quot;set fmg &amp;quot;&lt;br /&gt;
&lt;br /&gt;
==default login==&lt;br /&gt;
&lt;br /&gt;
VM images = admin / (empty password)&lt;br /&gt;
&lt;br /&gt;
[[category:fortinet]]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/fortimanager_VM_notes</id>
		<title>fortimanager VM notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/fortimanager_VM_notes"/>
				<updated>2024-06-20T18:05:10Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: Created page with &amp;quot;==version 6.4== this version was used because higher versions were failing on the trial license for me. ==console login== default login = admin / (empty password)  ==initial c...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==version 6.4==&lt;br /&gt;
this version was used because higher versions were failing on the trial license for me.&lt;br /&gt;
==console login==&lt;br /&gt;
default login = admin / (empty password)&lt;br /&gt;
&lt;br /&gt;
==initial config==&lt;br /&gt;
&lt;br /&gt;
 config system interface&lt;br /&gt;
 edit port1&lt;br /&gt;
 set mode static&lt;br /&gt;
 set ip 10.1.1.100 255.255.255.0&lt;br /&gt;
 next&lt;br /&gt;
 end&lt;br /&gt;
 config system route&lt;br /&gt;
 edit 1&lt;br /&gt;
 set device port1&lt;br /&gt;
 set gateway 10.1.1.1&lt;br /&gt;
 next&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
==license==&lt;br /&gt;
&lt;br /&gt;
connect a browser via https to the IP above. You get a message about signing into forticloud for the trial license. Login and proceed and hope for a message of success. I forgot to screenshot it.&lt;br /&gt;
&lt;br /&gt;
view VM license via CLI.&lt;br /&gt;
&lt;br /&gt;
 FMG-VM64-KVM # '''diag debug vminfo'''&lt;br /&gt;
 VM license is valid.&lt;br /&gt;
 Type: Trial&lt;br /&gt;
 Max devices: 3&lt;br /&gt;
 Management IP: 0.0.0.0&lt;br /&gt;
 VM UUID: 2da3fe28-143d-415f-9939-2d8f8c6ce433&lt;br /&gt;
&lt;br /&gt;
no expiration date... yay! too bad it is so old.&lt;br /&gt;
&lt;br /&gt;
[[category:fortinet]]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/fortinet_CLI_notes</id>
		<title>fortinet CLI notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/fortinet_CLI_notes"/>
				<updated>2024-06-20T17:59:13Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==vdom==&lt;br /&gt;
entering editing a vdom&lt;br /&gt;
&lt;br /&gt;
 # config vdom&lt;br /&gt;
 (vdom) #  edit myvdom&lt;br /&gt;
 (myvdom) # &lt;br /&gt;
&lt;br /&gt;
==interface commands==&lt;br /&gt;
for admin status, link stat, speeds, counters...&lt;br /&gt;
 # config global&lt;br /&gt;
 # get hardware nic &amp;lt;interface name&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==routes==&lt;br /&gt;
 # config router static&lt;br /&gt;
 # edit &amp;lt;route_index&amp;gt;&lt;br /&gt;
 # set device &amp;quot;&amp;lt;interface_name&amp;gt;&amp;quot;&lt;br /&gt;
 # set dst &amp;quot;&amp;lt;destination_ip&amp;gt;&amp;quot;&lt;br /&gt;
 # set gateway &amp;quot;&amp;lt;router_ip&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
for default gw..&lt;br /&gt;
 # set dst 0.0.0.0 0.0.0.0&lt;br /&gt;
&lt;br /&gt;
HA status&lt;br /&gt;
 # config global&lt;br /&gt;
 # get sys ha status&lt;br /&gt;
&lt;br /&gt;
HA failover to highest priority (if it is not currently Master)&lt;br /&gt;
on current master run...&lt;br /&gt;
 # config global&lt;br /&gt;
 # diagnose sys ha reset-uptime&lt;br /&gt;
&lt;br /&gt;
get admin hash password&lt;br /&gt;
 # config global&lt;br /&gt;
 # config sys admin&lt;br /&gt;
 # show&lt;br /&gt;
&lt;br /&gt;
uptime&lt;br /&gt;
 # config global&lt;br /&gt;
 # get system perf status | grep -i uptime&lt;br /&gt;
&lt;br /&gt;
shutdown/reboot&lt;br /&gt;
&lt;br /&gt;
 # execute shutdown&lt;br /&gt;
or&lt;br /&gt;
 # execute reboot&lt;br /&gt;
&lt;br /&gt;
==firewall==&lt;br /&gt;
# show firewall policy&lt;br /&gt;
&lt;br /&gt;
==packet capture==&lt;br /&gt;
&lt;br /&gt;
# diagnose sniffer packet &amp;lt;interface|any&amp;gt; '&amp;lt;tcpdump-filter&amp;gt;' &amp;lt;verbosity&amp;gt; &amp;lt;count&amp;gt; &amp;lt;time-format&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where if count = 0, then unlimited&lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 fotinet1 # '''diagnose sniffer packet port1 'icmp'''' 4 2 l&lt;br /&gt;
 interfaces=[port1]&lt;br /&gt;
 filters=[icmp]&lt;br /&gt;
 2022-08-25 13:16:52.397609 port1 -- 192.168.169.76 -&amp;gt; 192.168.169.31: icmp: echo request&lt;br /&gt;
 2022-08-25 13:16:52.397673 port1 -- 192.168.169.31 -&amp;gt; 192.168.169.76: icmp: echo reply&lt;br /&gt;
&lt;br /&gt;
==misc==&lt;br /&gt;
&lt;br /&gt;
check if fortigate has fortimanager central-management setting&lt;br /&gt;
  $ show full-configuration | grep &amp;quot;set fmg &amp;quot;&lt;br /&gt;
&lt;br /&gt;
==virtual machine==&lt;br /&gt;
&lt;br /&gt;
default login = admin / (empty password)&lt;br /&gt;
&lt;br /&gt;
[[category:fortinet]]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/SRX_notes</id>
		<title>SRX notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/SRX_notes"/>
				<updated>2024-06-20T14:28:52Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;junos  SRX notes&lt;br /&gt;
&lt;br /&gt;
show interface IPs&lt;br /&gt;
 &amp;gt; show interfaces terse | match inet&lt;br /&gt;
&lt;br /&gt;
show rule / policy&lt;br /&gt;
 # show security policies from-zone trust to-zone untrust policy &amp;lt;policy_name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
search address book for pre-defined objects&lt;br /&gt;
 #  show security zones security-zone untrust address-book | match &amp;quot;192.168.1.1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
monitoring traffic example&lt;br /&gt;
   monitor traffic matching &amp;quot;host 10.0.0.1&amp;quot; no-resolve interface reth0&lt;br /&gt;
&lt;br /&gt;
show cluster status &lt;br /&gt;
  root@SRXfw&amp;gt; '''show chassis cluster status''' &lt;br /&gt;
  Cluster ID: 1 &lt;br /&gt;
  Node                  Priority          Status    Preempt  Manual failover&lt;br /&gt;
  Redundancy group: 0 , Failover count: 0&lt;br /&gt;
      node0                   200         primary        no       no  &lt;br /&gt;
      node1                   100         secondary      no       no  &lt;br /&gt;
  Redundancy group: 1 , Failover count: 3&lt;br /&gt;
      node0                   200         secondary      no       no  &lt;br /&gt;
      node1                   100         primary        no       no&lt;br /&gt;
&lt;br /&gt;
add proxy arp&lt;br /&gt;
  set security nat proxy-arp interface reth0 address 192.168.1.1&lt;br /&gt;
&lt;br /&gt;
start unix shell&lt;br /&gt;
 &amp;gt; start shell user root &lt;br /&gt;
&lt;br /&gt;
example new rule (in progress)&lt;br /&gt;
&lt;br /&gt;
match &amp;gt; permit &amp;gt; insert&lt;br /&gt;
&lt;br /&gt;
==VM download==&lt;br /&gt;
&lt;br /&gt;
[https://webdownload.juniper.net/swdl/dl/secure/site/1/record/117212.html?pf=vSRX%20EVAL https://webdownload.juniper.net/swdl/dl/secure/site/1/record/117212.html?pf=vSRX%20EVAL]&lt;br /&gt;
&lt;br /&gt;
[[category:juniper]]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/cisco_asa_notes</id>
		<title>cisco asa notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/cisco_asa_notes"/>
				<updated>2024-06-20T04:41:25Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Getting Started==&lt;br /&gt;
===Accessing the Appliance Command-Line Interface===&lt;br /&gt;
&lt;br /&gt;
This following prompt indicates that you are in user EXEC mode. Only basic commands are available from user EXEC mode.&lt;br /&gt;
 hostname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To access privileged EXEC mode, enter the following command:&lt;br /&gt;
 hostname&amp;gt; '''enable'''&lt;br /&gt;
&lt;br /&gt;
The prompt changes to the following:&lt;br /&gt;
 hostname#&lt;br /&gt;
&lt;br /&gt;
To exit privileged mode, enter the disable, exit, or quit command.&lt;br /&gt;
&lt;br /&gt;
access global configuration mode&lt;br /&gt;
 hostname# '''configure terminal'''&lt;br /&gt;
&lt;br /&gt;
The prompt changes to the following:&lt;br /&gt;
 hostname(config)#&lt;br /&gt;
&lt;br /&gt;
===configure base system===&lt;br /&gt;
&lt;br /&gt;
set firewall mode to transparent or routed? (Optional)&lt;br /&gt;
&lt;br /&gt;
example config... can paste on command line over console&lt;br /&gt;
 ASA Version 9.18.4&lt;br /&gt;
 !&lt;br /&gt;
 console serial&lt;br /&gt;
 interface management0/0&lt;br /&gt;
 nameif management&lt;br /&gt;
 security-level 100&lt;br /&gt;
 ip address 192.168.100.254 255.255.255.0&lt;br /&gt;
 no shutdown&lt;br /&gt;
 interface gigabitethernet0/0&lt;br /&gt;
 nameif inside&lt;br /&gt;
 security-level 100&lt;br /&gt;
 ip address 10.100.0.254 255.255.255.0&lt;br /&gt;
 no shutdown&lt;br /&gt;
 interface gigabitethernet0/1&lt;br /&gt;
 nameif outside&lt;br /&gt;
 security-level 0&lt;br /&gt;
 ip address 172.16.100.254 255.255.255.0&lt;br /&gt;
 no shutdown&lt;br /&gt;
 http server enable&lt;br /&gt;
 http 192.168.100.0 255.255.255.0 management&lt;br /&gt;
 crypto key generate rsa modulus 1024&lt;br /&gt;
 username admin password admin&lt;br /&gt;
 ssh 192.168.100.0 255.255.255.0 management&lt;br /&gt;
 aaa authentication ssh console LOCAL &lt;br /&gt;
&lt;br /&gt;
save config&lt;br /&gt;
 hostname(config)# '''write memory'''&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/cisco_asa_notes</id>
		<title>cisco asa notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/cisco_asa_notes"/>
				<updated>2024-06-20T03:16:13Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: Created page with &amp;quot;==Getting Started== Accessing the Appliance Command-Line Interface  This following prompt indicates that you are in user EXEC mode. Only basic commands are available from user...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Getting Started==&lt;br /&gt;
Accessing the Appliance Command-Line Interface&lt;br /&gt;
&lt;br /&gt;
This following prompt indicates that you are in user EXEC mode. Only basic commands are available from user EXEC mode.&lt;br /&gt;
 hostname&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To access privileged EXEC mode, enter the following command:&lt;br /&gt;
 hostname&amp;gt; '''enable'''&lt;br /&gt;
&lt;br /&gt;
The prompt changes to the following:&lt;br /&gt;
 hostname#&lt;br /&gt;
&lt;br /&gt;
To exit privileged mode, enter the disable, exit, or quit command.&lt;br /&gt;
&lt;br /&gt;
access global configuration mode&lt;br /&gt;
 hostname# '''configure terminal'''&lt;br /&gt;
&lt;br /&gt;
The prompt changes to the following:&lt;br /&gt;
 hostname(config)#&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/r80_api_notes</id>
		<title>r80 api notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/r80_api_notes"/>
				<updated>2024-06-09T07:05:30Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Management server API setup==&lt;br /&gt;
===enabling for remote IPs===&lt;br /&gt;
done the smartconsole&lt;br /&gt;
&lt;br /&gt;
[[file:cp_mgmt_api_enable_all_IPs.png]]&lt;br /&gt;
&lt;br /&gt;
it can also be enabled via mgmt_cli under &amp;quot;set api-settings&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===status check===&lt;br /&gt;
&lt;br /&gt;
[Expert@chmkmgr1:0]# '''api status'''&lt;br /&gt;
&amp;lt;br&amp;gt;API Settings:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Accessibility:                      Require all granted      &lt;br /&gt;
&amp;lt;br&amp;gt;Automatic Start:                    Enabled       &lt;br /&gt;
&amp;lt;br&amp;gt;Processes:      &lt;br /&gt;
&amp;lt;br&amp;gt;Name      State     PID       More Information&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API       Started   10763               &lt;br /&gt;
&amp;lt;br&amp;gt;CPM       Started   10460     Check Point Security Management Server is running and ready&lt;br /&gt;
&amp;lt;br&amp;gt;FWM       Started   10007               &lt;br /&gt;
&amp;lt;br&amp;gt;Port Details:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;JETTY Internal Port:      50276          &lt;br /&gt;
&amp;lt;br&amp;gt;APACHE Gaia Port:         443            &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Overall API Status: Started&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API readiness test SUCCESSFUL. The server is up and ready to receive connections&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===logging in===&lt;br /&gt;
login and redirect session info to a file for reuse&lt;br /&gt;
 # mgmt_cli login user admin &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
same but read only&lt;br /&gt;
 # mgmt_cli login user admin read-only true &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
===search existing object===&lt;br /&gt;
search objects by IP, return all objects that contain the ip explicitly or within a nework address space/range.&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true  --format json | jq '.objects[] | {name: .name, subnet: .subnet4, mask: .&amp;quot;mask-length4&amp;quot;}'&lt;br /&gt;
&lt;br /&gt;
return only objects with the EXACT ip&lt;br /&gt;
&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true details-level full --format json |  jq '.objects[] | select(.&amp;quot;ipv4-address&amp;quot; == &amp;quot;192.168.1.1&amp;quot;) | .name'&lt;br /&gt;
&lt;br /&gt;
*** details-level full will include more objects, including other stuff like type CpmiHostCkp (built in smartcenter object)&lt;br /&gt;
&lt;br /&gt;
===access rules===&lt;br /&gt;
====notes before you begin====&lt;br /&gt;
when using the parameter &amp;quot;name&amp;quot; to refer to a particular package, it appears to require the following...&lt;br /&gt;
&amp;lt;package name&amp;gt; &amp;lt;layer name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
as shown by the show access-layers command below. Also, the output of show access-rulebase doesn't is limited to 50 rules. If you want more, I think you have to iterate though a set of offets until all the rules are dumped. That dump in json format is a bit confusing. If you have no &amp;quot;headers&amp;quot; or &amp;quot;titles&amp;quot; in the ruleset, you will get 1 rulebase[] array.  If you have headers, each section is its own rulebase[] array with yet another rulebase[] array containing the actual rules.&lt;br /&gt;
&lt;br /&gt;
What this means is the commands below may or may not work as you expect them to. The will likely need to be altered with mgmt_cli &amp;quot;offset&amp;quot; commands and/or modified jq commands... &lt;br /&gt;
&lt;br /&gt;
for example, if you have NO headers in your policy and are running show access-rulebase, it will output the rules with &lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[]'&lt;br /&gt;
&lt;br /&gt;
if you DO HAVE headers, to output the rules you need&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[]'&lt;br /&gt;
&lt;br /&gt;
====show access layers?====&lt;br /&gt;
 [Expert@chmkmgr1:0]# '''mgmt_cli show access-layers -s id.txt --format json | jq '.&amp;quot;access-layers&amp;quot;[].name'&lt;br /&gt;
 &amp;quot;dropall Network&amp;quot;'''&lt;br /&gt;
 &amp;quot;Network&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;quot;Network&amp;quot; represents the default policy package Standard&lt;br /&gt;
&lt;br /&gt;
====examples====&lt;br /&gt;
show number of rules in policy&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;&amp;lt;layer&amp;gt;&amp;quot; -s id.txt --format json limit 1 | jq '.total'&lt;br /&gt;
&lt;br /&gt;
display rule with uid = xxx&lt;br /&gt;
&lt;br /&gt;
 # '''mgmt_cli -s id.txt show access-rule layer &amp;quot;My_policy Network&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
display src/dst/service from rule with uid&lt;br /&gt;
 for i in source destination service; do echo $i; mgmt_cli -s id.txt show access-rule layer &amp;quot;&amp;lt;policy_name&amp;gt; &amp;lt;layer_name&amp;gt;&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot; --format json | jq .$i[].name; done&lt;br /&gt;
&lt;br /&gt;
alternate(inferior) way with jq&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.uid == &amp;quot;1de8fab0-4858-4067-977d-1cbb5cd2e55d&amp;quot;) | .&amp;quot;rule-number&amp;quot;'&lt;br /&gt;
 1&lt;br /&gt;
&lt;br /&gt;
display rule number with comment containing a string haha&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.comments | contains(&amp;quot;haha&amp;quot;)) | {rulenum: .&amp;quot;rule-number&amp;quot;, comment: .comments}'&lt;br /&gt;
&lt;br /&gt;
====adding rules====&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xxad70c9-b4c6-4e64-9bfd-d57ac91289f3 name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xx70adc9-b4c6-4e64-9bfd-d57ac91289f3 position top name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; action &amp;quot;Accept&amp;quot; service add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; service.add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===mds / domain===&lt;br /&gt;
&lt;br /&gt;
get list of domains,objects(management and firewalls),object type&lt;br /&gt;
 mgmt_cli.exe -s id.txt show gateways-and-servers --format json limit 500 | jq '.objects.nat,.name,.type' | xargs -n3&lt;br /&gt;
&lt;br /&gt;
===log queries===&lt;br /&gt;
 mgmt_cli -s id.txt show-logs new-query.filter &amp;quot;src:10.0.0.11 and service:https&amp;quot; new-query.time-frame last-hour new-query.max-logs-per-request 1 --format json | jq '.logs[] | {time: .time,fw: .orig,log_server: .orig_log_server,policy: .policy_name,action: .action,source: .src,dest: .dst,service: .service}'&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;time&amp;quot;: &amp;quot;2023-06-09T06:20:20Z&amp;quot;,&lt;br /&gt;
  &amp;quot;fw&amp;quot;: &amp;quot;my_cp_fw1&amp;quot;,&lt;br /&gt;
  &amp;quot;log_server&amp;quot;: &amp;quot;192.168.1.88&amp;quot;,&lt;br /&gt;
  &amp;quot;policy&amp;quot;: &amp;quot;super_secure&amp;quot;,&lt;br /&gt;
  &amp;quot;action&amp;quot;: &amp;quot;Accept&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;10.0.0.11&amp;quot;,&lt;br /&gt;
  &amp;quot;dest&amp;quot;: &amp;quot;204.79.197.203&amp;quot;,&lt;br /&gt;
  &amp;quot;service&amp;quot;: &amp;quot;443&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
==jq==&lt;br /&gt;
compound jq select using and/or (note: contains returns true/false)&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select (.comments | (contains(&amp;quot;hahaha&amp;quot;) or contains(&amp;quot;lol&amp;quot;)) | not ) | {ruleUID: .uid, comments: .comments} '&lt;br /&gt;
&lt;br /&gt;
and another one...&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select ((.comments | (contains(&amp;quot;hahah&amp;quot;) or contains(&amp;quot;lol&amp;quot;) | not )) and (.enabled == true)) | {enabled: .enabled, rulenum: .&amp;quot;rule-number&amp;quot;, ruleUID: .uid, comments: .comments} '&lt;br /&gt;
 &lt;br /&gt;
filter objects dictary for uid for accept action&lt;br /&gt;
 jq '.&amp;quot;objects-dictionary&amp;quot;[] | select (.name == &amp;quot;Accept&amp;quot;) | .uid'&lt;br /&gt;
&lt;br /&gt;
get cluster member policy installation targets&lt;br /&gt;
&lt;br /&gt;
 | jq -c '.&amp;quot;installation-targets-revision&amp;quot;[] | .&amp;quot;cluster-members-revision&amp;quot;[] | .&amp;quot;target-name&amp;quot;' | tr -d '&amp;quot;' | tr '\n' ' '&lt;br /&gt;
&lt;br /&gt;
get values without keys&lt;br /&gt;
&lt;br /&gt;
example&lt;br /&gt;
&lt;br /&gt;
with keys...&lt;br /&gt;
 '''| jq '.objects[] | {name: .name,type: .type}''''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;name&amp;quot;: chkp-fw&amp;quot;,&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;simple-gateway&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;chkp-mgmt&amp;quot;,&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;checkpoint-host&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
without keys, change from curly {} to square [] brackets and drop key references&lt;br /&gt;
 '''| jq '.objects[] | [.name, .type]''''&lt;br /&gt;
 [&lt;br /&gt;
  &amp;quot;chkp-fw&amp;quot;,&lt;br /&gt;
  &amp;quot;simple-gateway&amp;quot;&lt;br /&gt;
 ]&lt;br /&gt;
 [&lt;br /&gt;
  &amp;quot;chkp-mgmt&amp;quot;,&lt;br /&gt;
  &amp;quot;checkpoint-host&amp;quot;&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
print all values on the same line, comma separated&lt;br /&gt;
 '''| jq '.objects[] | [.name, .type] | join (&amp;quot;,&amp;quot;)'''&lt;br /&gt;
 &amp;quot;chkp-fw simple-gateway&amp;quot;&lt;br /&gt;
 &amp;quot;chkp-mgmt,checkpoint-host&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==curl==&lt;br /&gt;
&lt;br /&gt;
 curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;userId&amp;quot;: 5, &amp;quot;title&amp;quot;: &amp;quot;Post Title&amp;quot;, &amp;quot;body&amp;quot;: &amp;quot;Post content.&amp;quot;}' &lt;br /&gt;
		&lt;br /&gt;
 curl -X -H POST -H &amp;quot;Content-Type: application/json&amp;quot; -d	'{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' 192.168.1.10:443/login&lt;br /&gt;
	&lt;br /&gt;
 $ '''curl --insecure -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' https://192.168.1.10:443/web_api/login'''&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;uid&amp;quot; : &amp;quot;46a11170-e554-4e58-a5fc-65ff9e38d8cb&amp;quot;,&lt;br /&gt;
 &amp;quot;sid&amp;quot; : &amp;quot;dfq6sI1MxMT1qUhXQ7tafQduKAfJxYkqXCEjaQKjres&amp;quot;,&lt;br /&gt;
 &amp;quot;url&amp;quot; : &amp;quot;https://192.168.1.10:443/web_api&amp;quot;,&lt;br /&gt;
 &amp;quot;session-timeout&amp;quot; : 600,&lt;br /&gt;
 &amp;quot;last-login-was-at&amp;quot; : {&lt;br /&gt;
   &amp;quot;posix&amp;quot; : 1707413218074,&lt;br /&gt;
   &amp;quot;iso-8601&amp;quot; : &amp;quot;2024-02-08T10:26-0700&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;api-server-version&amp;quot; : &amp;quot;1.8.1&amp;quot;,&lt;br /&gt;
 &amp;quot;user-name&amp;quot; : &amp;quot;jsmith&amp;quot;,&lt;br /&gt;
 &amp;quot;user-uid&amp;quot; : &amp;quot;c1109c35-d741-7jg8-98e3-36669b7047a2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 $ '''curl --insecure -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -H &amp;quot;X-chkp-sid: dfq6sI1MxMT1qUhXQ7tafQduKAfJxYkqXCEjaQKjres&amp;quot; -d '{ }' https://192.168.1.10:443/web_api/keepalive'''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;message&amp;quot; : &amp;quot;OK&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==links==&lt;br /&gt;
[https://community.checkpoint.com/t5/General-Management-Topics/What-s-new-with-R80-20M1-Management-API/td-p/39522 What's new with R80.20M1 Management API]&lt;br /&gt;
&lt;br /&gt;
[https://sc1.checkpoint.com/documents/latest/APIs/index.html#introduction~v1.4%20 r80 api reference]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/CheckPointSW/cp_mgmt_api_python_sdk official python open source api]&lt;br /&gt;
&lt;br /&gt;
parsing json return output&lt;br /&gt;
[https://stedolan.github.io/jq/ jq]&lt;br /&gt;
&lt;br /&gt;
[https://community.checkpoint.com/thread/1083 Parsing the output of mgmt_cli]&lt;br /&gt;
&lt;br /&gt;
[https://devqa.io/curl-sending-api-requests/ How to Use CURL to Send API Requests]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/r80_api_notes</id>
		<title>r80 api notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/r80_api_notes"/>
				<updated>2024-06-09T07:04:51Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Management server API setup==&lt;br /&gt;
===enabling for remote IPs===&lt;br /&gt;
done the smartconsole&lt;br /&gt;
&lt;br /&gt;
[[file:cp_mgmt_api_enable_all_IPs.png]]&lt;br /&gt;
&lt;br /&gt;
it can also be enabled via mgmt_cli under &amp;quot;set api-settings&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===status check===&lt;br /&gt;
&lt;br /&gt;
[Expert@chmkmgr1:0]# '''api status'''&lt;br /&gt;
&amp;lt;br&amp;gt;API Settings:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Accessibility:                      Require all granted      &lt;br /&gt;
&amp;lt;br&amp;gt;Automatic Start:                    Enabled       &lt;br /&gt;
&amp;lt;br&amp;gt;Processes:      &lt;br /&gt;
&amp;lt;br&amp;gt;Name      State     PID       More Information&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API       Started   10763               &lt;br /&gt;
&amp;lt;br&amp;gt;CPM       Started   10460     Check Point Security Management Server is running and ready&lt;br /&gt;
&amp;lt;br&amp;gt;FWM       Started   10007               &lt;br /&gt;
&amp;lt;br&amp;gt;Port Details:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;JETTY Internal Port:      50276          &lt;br /&gt;
&amp;lt;br&amp;gt;APACHE Gaia Port:         443            &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Overall API Status: Started&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API readiness test SUCCESSFUL. The server is up and ready to receive connections&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===logging in===&lt;br /&gt;
login and redirect session info to a file for reuse&lt;br /&gt;
 # mgmt_cli login user admin &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
same but read only&lt;br /&gt;
 # mgmt_cli login user admin read-only true &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
===search existing object===&lt;br /&gt;
search objects by IP, return all objects that contain the ip explicitly or within a nework address space/range.&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true  --format json | jq '.objects[] | {name: .name, subnet: .subnet4, mask: .&amp;quot;mask-length4&amp;quot;}'&lt;br /&gt;
&lt;br /&gt;
return only objects with the EXACT ip&lt;br /&gt;
&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true details-level full --format json |  jq '.objects[] | select(.&amp;quot;ipv4-address&amp;quot; == &amp;quot;192.168.1.1&amp;quot;) | .name'&lt;br /&gt;
&lt;br /&gt;
*** details-level full will include more objects, including other stuff like type CpmiHostCkp (built in smartcenter object)&lt;br /&gt;
&lt;br /&gt;
===access rules===&lt;br /&gt;
====notes before you begin====&lt;br /&gt;
when using the parameter &amp;quot;name&amp;quot; to refer to a particular package, it appears to require the following...&lt;br /&gt;
&amp;lt;package name&amp;gt; &amp;lt;layer name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
as shown by the show access-layers command below. Also, the output of show access-rulebase doesn't is limited to 50 rules. If you want more, I think you have to iterate though a set of offets until all the rules are dumped. That dump in json format is a bit confusing. If you have no &amp;quot;headers&amp;quot; or &amp;quot;titles&amp;quot; in the ruleset, you will get 1 rulebase[] array.  If you have headers, each section is its own rulebase[] array with yet another rulebase[] array containing the actual rules.&lt;br /&gt;
&lt;br /&gt;
What this means is the commands below may or may not work as you expect them to. The will likely need to be altered with mgmt_cli &amp;quot;offset&amp;quot; commands and/or modified jq commands... &lt;br /&gt;
&lt;br /&gt;
for example, if you have NO headers in your policy and are running show access-rulebase, it will output the rules with &lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[]'&lt;br /&gt;
&lt;br /&gt;
if you DO HAVE headers, to output the rules you need&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[]'&lt;br /&gt;
&lt;br /&gt;
====show access layers?====&lt;br /&gt;
 [Expert@chmkmgr1:0]# '''mgmt_cli show access-layers -s id.txt --format json | jq '.&amp;quot;access-layers&amp;quot;[].name'&lt;br /&gt;
 &amp;quot;dropall Network&amp;quot;'''&lt;br /&gt;
 &amp;quot;Network&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;quot;Network&amp;quot; represents the default policy package Standard&lt;br /&gt;
&lt;br /&gt;
====examples====&lt;br /&gt;
show number of rules in policy&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;&amp;lt;layer&amp;gt;&amp;quot; -s id.txt --format json limit 1 | jq '.total'&lt;br /&gt;
&lt;br /&gt;
display rule with uid = xxx&lt;br /&gt;
&lt;br /&gt;
 # '''mgmt_cli -s id.txt show access-rule layer &amp;quot;My_policy Network&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
display src/dst/service from rule with uid&lt;br /&gt;
 for i in source destination service; do echo $i; mgmt_cli -s id.txt show access-rule layer &amp;quot;&amp;lt;policy_name&amp;gt; &amp;lt;layer_name&amp;gt;&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot; --format json | jq .$i[].name; done&lt;br /&gt;
&lt;br /&gt;
alternate(inferior) way with jq&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.uid == &amp;quot;1de8fab0-4858-4067-977d-1cbb5cd2e55d&amp;quot;) | .&amp;quot;rule-number&amp;quot;'&lt;br /&gt;
 1&lt;br /&gt;
&lt;br /&gt;
display rule number with comment containing a string haha&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.comments | contains(&amp;quot;haha&amp;quot;)) | {rulenum: .&amp;quot;rule-number&amp;quot;, comment: .comments}'&lt;br /&gt;
&lt;br /&gt;
====adding rules====&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xxad70c9-b4c6-4e64-9bfd-d57ac91289f3 name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xx70adc9-b4c6-4e64-9bfd-d57ac91289f3 position top name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; action &amp;quot;Accept&amp;quot; service add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; service.add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===mds / domain===&lt;br /&gt;
&lt;br /&gt;
get list of domains,objects(management and firewalls),object type&lt;br /&gt;
 mgmt_cli.exe -s id.txt show gateways-and-servers --format json limit 500 | jq '.objects.nat,.name,.type' | xargs -n3&lt;br /&gt;
&lt;br /&gt;
===log queries===&lt;br /&gt;
 mgmt_cli -s id.txt show-logs new-query.filter &amp;quot;src:10.0.0.11 and service:https&amp;quot; new-query.time-frame last-hour new-query.max-logs-per-request 1 --format json | jq '.logs[] | {time: .time,fw: .orig,log_server: .orig_log_server,policy: .policy_name,action: .action,source: .src,dest: .dst,service: .service}'&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;time&amp;quot;: &amp;quot;2023-06-09T06:20:20Z&amp;quot;,&lt;br /&gt;
  &amp;quot;fw&amp;quot;: &amp;quot;my_cp_fw1&amp;quot;,&lt;br /&gt;
  &amp;quot;log_server&amp;quot;: &amp;quot;192.168.1.88&amp;quot;,&lt;br /&gt;
  &amp;quot;policy&amp;quot;: &amp;quot;super_secure&amp;quot;,&lt;br /&gt;
  &amp;quot;action&amp;quot;: &amp;quot;Accept&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;10.0.0.11&amp;quot;,&lt;br /&gt;
  &amp;quot;dest&amp;quot;: &amp;quot;204.79.197.203&amp;quot;,&lt;br /&gt;
  &amp;quot;service&amp;quot;: &amp;quot;443&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
===jq===&lt;br /&gt;
compound jq select using and/or (note: contains returns true/false)&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select (.comments | (contains(&amp;quot;hahaha&amp;quot;) or contains(&amp;quot;lol&amp;quot;)) | not ) | {ruleUID: .uid, comments: .comments} '&lt;br /&gt;
&lt;br /&gt;
and another one...&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select ((.comments | (contains(&amp;quot;hahah&amp;quot;) or contains(&amp;quot;lol&amp;quot;) | not )) and (.enabled == true)) | {enabled: .enabled, rulenum: .&amp;quot;rule-number&amp;quot;, ruleUID: .uid, comments: .comments} '&lt;br /&gt;
 &lt;br /&gt;
filter objects dictary for uid for accept action&lt;br /&gt;
 jq '.&amp;quot;objects-dictionary&amp;quot;[] | select (.name == &amp;quot;Accept&amp;quot;) | .uid'&lt;br /&gt;
&lt;br /&gt;
get cluster member policy installation targets&lt;br /&gt;
&lt;br /&gt;
 | jq -c '.&amp;quot;installation-targets-revision&amp;quot;[] | .&amp;quot;cluster-members-revision&amp;quot;[] | .&amp;quot;target-name&amp;quot;' | tr -d '&amp;quot;' | tr '\n' ' '&lt;br /&gt;
&lt;br /&gt;
get values without keys&lt;br /&gt;
&lt;br /&gt;
example&lt;br /&gt;
&lt;br /&gt;
with keys...&lt;br /&gt;
 '''| jq '.objects[] | {name: .name,type: .type}''''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;name&amp;quot;: chkp-fw&amp;quot;,&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;simple-gateway&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;chkp-mgmt&amp;quot;,&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;checkpoint-host&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
without keys, change from curly {} to square [] brackets and drop key references&lt;br /&gt;
 '''| jq '.objects[] | [.name, .type]''''&lt;br /&gt;
 [&lt;br /&gt;
  &amp;quot;chkp-fw&amp;quot;,&lt;br /&gt;
  &amp;quot;simple-gateway&amp;quot;&lt;br /&gt;
 ]&lt;br /&gt;
 [&lt;br /&gt;
  &amp;quot;chkp-mgmt&amp;quot;,&lt;br /&gt;
  &amp;quot;checkpoint-host&amp;quot;&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
print all values on the same line, comma separated&lt;br /&gt;
 '''| jq '.objects[] | [.name, .type] | join (&amp;quot;,&amp;quot;)'''&lt;br /&gt;
 &amp;quot;chkp-fw simple-gateway&amp;quot;&lt;br /&gt;
 &amp;quot;chkp-mgmt,checkpoint-host&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===curl===&lt;br /&gt;
&lt;br /&gt;
 curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;userId&amp;quot;: 5, &amp;quot;title&amp;quot;: &amp;quot;Post Title&amp;quot;, &amp;quot;body&amp;quot;: &amp;quot;Post content.&amp;quot;}' &lt;br /&gt;
		&lt;br /&gt;
 curl -X -H POST -H &amp;quot;Content-Type: application/json&amp;quot; -d	'{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' 192.168.1.10:443/login&lt;br /&gt;
	&lt;br /&gt;
 $ '''curl --insecure -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' https://192.168.1.10:443/web_api/login'''&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;uid&amp;quot; : &amp;quot;46a11170-e554-4e58-a5fc-65ff9e38d8cb&amp;quot;,&lt;br /&gt;
 &amp;quot;sid&amp;quot; : &amp;quot;dfq6sI1MxMT1qUhXQ7tafQduKAfJxYkqXCEjaQKjres&amp;quot;,&lt;br /&gt;
 &amp;quot;url&amp;quot; : &amp;quot;https://192.168.1.10:443/web_api&amp;quot;,&lt;br /&gt;
 &amp;quot;session-timeout&amp;quot; : 600,&lt;br /&gt;
 &amp;quot;last-login-was-at&amp;quot; : {&lt;br /&gt;
   &amp;quot;posix&amp;quot; : 1707413218074,&lt;br /&gt;
   &amp;quot;iso-8601&amp;quot; : &amp;quot;2024-02-08T10:26-0700&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;api-server-version&amp;quot; : &amp;quot;1.8.1&amp;quot;,&lt;br /&gt;
 &amp;quot;user-name&amp;quot; : &amp;quot;jsmith&amp;quot;,&lt;br /&gt;
 &amp;quot;user-uid&amp;quot; : &amp;quot;c1109c35-d741-7jg8-98e3-36669b7047a2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 $ '''curl --insecure -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -H &amp;quot;X-chkp-sid: dfq6sI1MxMT1qUhXQ7tafQduKAfJxYkqXCEjaQKjres&amp;quot; -d '{ }' https://192.168.1.10:443/web_api/keepalive'''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;message&amp;quot; : &amp;quot;OK&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==links==&lt;br /&gt;
[https://community.checkpoint.com/t5/General-Management-Topics/What-s-new-with-R80-20M1-Management-API/td-p/39522 What's new with R80.20M1 Management API]&lt;br /&gt;
&lt;br /&gt;
[https://sc1.checkpoint.com/documents/latest/APIs/index.html#introduction~v1.4%20 r80 api reference]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/CheckPointSW/cp_mgmt_api_python_sdk official python open source api]&lt;br /&gt;
&lt;br /&gt;
parsing json return output&lt;br /&gt;
[https://stedolan.github.io/jq/ jq]&lt;br /&gt;
&lt;br /&gt;
[https://community.checkpoint.com/thread/1083 Parsing the output of mgmt_cli]&lt;br /&gt;
&lt;br /&gt;
[https://devqa.io/curl-sending-api-requests/ How to Use CURL to Send API Requests]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/maestro_reference</id>
		<title>maestro reference</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/maestro_reference"/>
				<updated>2024-05-13T16:39:23Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==security groups==&lt;br /&gt;
Single Management Object (SMO) handles all management tasks, such as Security Gateway configuration, policy installation, remote connections, and logging. The Active Security Group Member with the lowest ID number is automatically assigned to be the SMO.&lt;br /&gt;
&lt;br /&gt;
identify the SMO and tasks&lt;br /&gt;
 # asg stat -i tasks&lt;br /&gt;
&lt;br /&gt;
===policy installation===&lt;br /&gt;
Management ServerClosed installs the policy on the SMO Master and then it is copied to the other UP members. Use [[asg policy - command|asg policy]] to verify or unload a policy.&lt;br /&gt;
===Synchronizing Policy and Configuration Between Security Group Members===&lt;br /&gt;
&lt;br /&gt;
synchronize the policies manually to a SG member&lt;br /&gt;
 asg_blade_config pull_config&lt;br /&gt;
&lt;br /&gt;
==Managing Security Groups==&lt;br /&gt;
===Connecting to a Specific Security Group Member ===&lt;br /&gt;
 # member &amp;lt;Member ID&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
 # m &amp;lt;Member ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
connecting to member in specific SG&lt;br /&gt;
# m &amp;lt;Security Group ID&amp;gt; &amp;lt;Member ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==HA==&lt;br /&gt;
clusterXL_admin up&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==orchestrator==&lt;br /&gt;
&lt;br /&gt;
get port transiever typoe&lt;br /&gt;
 &amp;gt; show maestro port x optic info&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/fortinet_CLI_notes</id>
		<title>fortinet CLI notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/fortinet_CLI_notes"/>
				<updated>2024-05-07T19:47:12Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==vdom==&lt;br /&gt;
entering editing a vdom&lt;br /&gt;
&lt;br /&gt;
 # config vdom&lt;br /&gt;
 (vdom) #  edit myvdom&lt;br /&gt;
 (myvdom) # &lt;br /&gt;
&lt;br /&gt;
==interface commands==&lt;br /&gt;
for admin status, link stat, speeds, counters...&lt;br /&gt;
 # config global&lt;br /&gt;
 # get hardware nic &amp;lt;interface name&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==routes==&lt;br /&gt;
 # config router static&lt;br /&gt;
 # edit &amp;lt;route_index&amp;gt;&lt;br /&gt;
 # set device &amp;quot;&amp;lt;interface_name&amp;gt;&amp;quot;&lt;br /&gt;
 # set dst &amp;quot;&amp;lt;destination_ip&amp;gt;&amp;quot;&lt;br /&gt;
 # set gateway &amp;quot;&amp;lt;router_ip&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
for default gw..&lt;br /&gt;
 # set dst 0.0.0.0 0.0.0.0&lt;br /&gt;
&lt;br /&gt;
HA status&lt;br /&gt;
 # config global&lt;br /&gt;
 # get sys ha status&lt;br /&gt;
&lt;br /&gt;
HA failover to highest priority (if it is not currently Master)&lt;br /&gt;
on current master run...&lt;br /&gt;
 # config global&lt;br /&gt;
 # diagnose sys ha reset-uptime&lt;br /&gt;
&lt;br /&gt;
get admin hash password&lt;br /&gt;
 # config global&lt;br /&gt;
 # config sys admin&lt;br /&gt;
 # show&lt;br /&gt;
&lt;br /&gt;
uptime&lt;br /&gt;
 # config global&lt;br /&gt;
 # get system perf status | grep -i uptime&lt;br /&gt;
&lt;br /&gt;
shutdown/reboot&lt;br /&gt;
&lt;br /&gt;
 # execute shutdown&lt;br /&gt;
or&lt;br /&gt;
 # execute reboot&lt;br /&gt;
&lt;br /&gt;
==firewall==&lt;br /&gt;
# show firewall policy&lt;br /&gt;
&lt;br /&gt;
==packet capture==&lt;br /&gt;
&lt;br /&gt;
# diagnose sniffer packet &amp;lt;interface|any&amp;gt; '&amp;lt;tcpdump-filter&amp;gt;' &amp;lt;verbosity&amp;gt; &amp;lt;count&amp;gt; &amp;lt;time-format&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where if count = 0, then unlimited&lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 fotinet1 # '''diagnose sniffer packet port1 'icmp'''' 4 2 l&lt;br /&gt;
 interfaces=[port1]&lt;br /&gt;
 filters=[icmp]&lt;br /&gt;
 2022-08-25 13:16:52.397609 port1 -- 192.168.169.76 -&amp;gt; 192.168.169.31: icmp: echo request&lt;br /&gt;
 2022-08-25 13:16:52.397673 port1 -- 192.168.169.31 -&amp;gt; 192.168.169.76: icmp: echo reply&lt;br /&gt;
&lt;br /&gt;
==misc==&lt;br /&gt;
&lt;br /&gt;
check if fortigate has fortimanager central-management setting&lt;br /&gt;
  $ show full-configuration | grep &amp;quot;set fmg &amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category:fortinet]]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/fortinet_CLI_notes</id>
		<title>fortinet CLI notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/fortinet_CLI_notes"/>
				<updated>2024-05-02T23:14:15Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: /* packet capture */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
==vdom==&lt;br /&gt;
entering editing a vdom&lt;br /&gt;
&lt;br /&gt;
 # config vdom&lt;br /&gt;
 (vdom) #  edit myvdom&lt;br /&gt;
 (myvdom) # &lt;br /&gt;
&lt;br /&gt;
==interface commands==&lt;br /&gt;
for admin status, link stat, speeds, counters...&lt;br /&gt;
 # config global&lt;br /&gt;
 # get hardware nic &amp;lt;interface name&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==routes==&lt;br /&gt;
 # config router static&lt;br /&gt;
 # edit &amp;lt;route_index&amp;gt;&lt;br /&gt;
 # set device &amp;quot;&amp;lt;interface_name&amp;gt;&amp;quot;&lt;br /&gt;
 # set dst &amp;quot;&amp;lt;destination_ip&amp;gt;&amp;quot;&lt;br /&gt;
 # set gateway &amp;quot;&amp;lt;router_ip&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
for default gw..&lt;br /&gt;
 # set dst 0.0.0.0 0.0.0.0&lt;br /&gt;
&lt;br /&gt;
HA status&lt;br /&gt;
 # config global&lt;br /&gt;
 # get sys ha status&lt;br /&gt;
&lt;br /&gt;
HA failover to highest priority (if it is not currently Master)&lt;br /&gt;
on current master run...&lt;br /&gt;
 # config global&lt;br /&gt;
 # diagnose sys ha reset-uptime&lt;br /&gt;
&lt;br /&gt;
get admin hash password&lt;br /&gt;
 # config global&lt;br /&gt;
 # config sys admin&lt;br /&gt;
 # show&lt;br /&gt;
&lt;br /&gt;
uptime&lt;br /&gt;
 # config global&lt;br /&gt;
 # get system perf status | grep -i uptime&lt;br /&gt;
&lt;br /&gt;
shutdown/reboot&lt;br /&gt;
&lt;br /&gt;
 # execute shutdown&lt;br /&gt;
or&lt;br /&gt;
 # execute reboot&lt;br /&gt;
&lt;br /&gt;
==firewall==&lt;br /&gt;
# show firewall policy&lt;br /&gt;
&lt;br /&gt;
==packet capture==&lt;br /&gt;
&lt;br /&gt;
# diagnose sniffer packet &amp;lt;interface|any&amp;gt; '&amp;lt;tcpdump-filter&amp;gt;' &amp;lt;verbosity&amp;gt; &amp;lt;count&amp;gt; &amp;lt;time-format&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where if count = 0, then unlimited&lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 fotinet1 # '''diagnose sniffer packet port1 'icmp'''' 4 2 l&lt;br /&gt;
 interfaces=[port1]&lt;br /&gt;
 filters=[icmp]&lt;br /&gt;
 2022-08-25 13:16:52.397609 port1 -- 192.168.169.76 -&amp;gt; 192.168.169.31: icmp: echo request&lt;br /&gt;
 2022-08-25 13:16:52.397673 port1 -- 192.168.169.31 -&amp;gt; 192.168.169.76: icmp: echo reply&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category:fortinet]]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/r80_api_notes</id>
		<title>r80 api notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/r80_api_notes"/>
				<updated>2024-05-02T04:18:22Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: /* jq */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Management server API setup==&lt;br /&gt;
===enabling for remote IPs===&lt;br /&gt;
done the smartconsole&lt;br /&gt;
&lt;br /&gt;
[[file:cp_mgmt_api_enable_all_IPs.png]]&lt;br /&gt;
&lt;br /&gt;
it can also be enabled via mgmt_cli under &amp;quot;set api-settings&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===status check===&lt;br /&gt;
&lt;br /&gt;
[Expert@chmkmgr1:0]# '''api status'''&lt;br /&gt;
&amp;lt;br&amp;gt;API Settings:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Accessibility:                      Require all granted      &lt;br /&gt;
&amp;lt;br&amp;gt;Automatic Start:                    Enabled       &lt;br /&gt;
&amp;lt;br&amp;gt;Processes:      &lt;br /&gt;
&amp;lt;br&amp;gt;Name      State     PID       More Information&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API       Started   10763               &lt;br /&gt;
&amp;lt;br&amp;gt;CPM       Started   10460     Check Point Security Management Server is running and ready&lt;br /&gt;
&amp;lt;br&amp;gt;FWM       Started   10007               &lt;br /&gt;
&amp;lt;br&amp;gt;Port Details:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;JETTY Internal Port:      50276          &lt;br /&gt;
&amp;lt;br&amp;gt;APACHE Gaia Port:         443            &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Overall API Status: Started&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API readiness test SUCCESSFUL. The server is up and ready to receive connections&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===logging in===&lt;br /&gt;
login and redirect session info to a file for reuse&lt;br /&gt;
 # mgmt_cli login user admin &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
same but read only&lt;br /&gt;
 # mgmt_cli login user admin read-only true &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
===search existing object===&lt;br /&gt;
search objects by IP, return all objects that contain the ip explicitly or within a nework address space/range.&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true  --format json | jq '.objects[] | {name: .name, subnet: .subnet4, mask: .&amp;quot;mask-length4&amp;quot;}'&lt;br /&gt;
&lt;br /&gt;
return only objects with the EXACT ip&lt;br /&gt;
&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true details-level full --format json |  jq '.objects[] | select(.&amp;quot;ipv4-address&amp;quot; == &amp;quot;192.168.1.1&amp;quot;) | .name'&lt;br /&gt;
&lt;br /&gt;
*** details-level full will include more objects, including other stuff like type CpmiHostCkp (built in smartcenter object)&lt;br /&gt;
&lt;br /&gt;
==access rules==&lt;br /&gt;
===notes before you begin===&lt;br /&gt;
when using the parameter &amp;quot;name&amp;quot; to refer to a particular package, it appears to require the following...&lt;br /&gt;
&amp;lt;package name&amp;gt; &amp;lt;layer name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
as shown by the show access-layers command below. Also, the output of show access-rulebase doesn't is limited to 50 rules. If you want more, I think you have to iterate though a set of offets until all the rules are dumped. That dump in json format is a bit confusing. If you have no &amp;quot;headers&amp;quot; or &amp;quot;titles&amp;quot; in the ruleset, you will get 1 rulebase[] array.  If you have headers, each section is its own rulebase[] array with yet another rulebase[] array containing the actual rules.&lt;br /&gt;
&lt;br /&gt;
What this means is the commands below may or may not work as you expect them to. The will likely need to be altered with mgmt_cli &amp;quot;offset&amp;quot; commands and/or modified jq commands... &lt;br /&gt;
&lt;br /&gt;
for example, if you have NO headers in your policy and are running show access-rulebase, it will output the rules with &lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[]'&lt;br /&gt;
&lt;br /&gt;
if you DO HAVE headers, to output the rules you need&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[]'&lt;br /&gt;
&lt;br /&gt;
====rule numbers====&lt;br /&gt;
&lt;br /&gt;
===show access layers?===&lt;br /&gt;
 [Expert@chmkmgr1:0]# '''mgmt_cli show access-layers -s id.txt --format json | jq '.&amp;quot;access-layers&amp;quot;[].name'&lt;br /&gt;
 &amp;quot;dropall Network&amp;quot;'''&lt;br /&gt;
 &amp;quot;Network&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;quot;Network&amp;quot; represents the default policy package Standard&lt;br /&gt;
&lt;br /&gt;
===examples===&lt;br /&gt;
show number of rules in policy&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;&amp;lt;layer&amp;gt;&amp;quot; -s id.txt --format json limit 1 | jq '.total'&lt;br /&gt;
&lt;br /&gt;
display rule with uid = xxx&lt;br /&gt;
&lt;br /&gt;
 # '''mgmt_cli -s id.txt show access-rule layer &amp;quot;My_policy Network&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
display src/dst/service from rule with uid&lt;br /&gt;
 for i in source destination service; do echo $i; mgmt_cli -s id.txt show access-rule layer &amp;quot;&amp;lt;policy_name&amp;gt; &amp;lt;layer_name&amp;gt;&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot; --format json | jq .$i[].name; done&lt;br /&gt;
&lt;br /&gt;
alternate(inferior) way with jq&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.uid == &amp;quot;1de8fab0-4858-4067-977d-1cbb5cd2e55d&amp;quot;) | .&amp;quot;rule-number&amp;quot;'&lt;br /&gt;
 1&lt;br /&gt;
&lt;br /&gt;
display rule number with comment containing a string haha&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.comments | contains(&amp;quot;haha&amp;quot;)) | {rulenum: .&amp;quot;rule-number&amp;quot;, comment: .comments}'&lt;br /&gt;
&lt;br /&gt;
===adding rules===&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xxad70c9-b4c6-4e64-9bfd-d57ac91289f3 name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xx70adc9-b4c6-4e64-9bfd-d57ac91289f3 position top name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; action &amp;quot;Accept&amp;quot; service add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; service.add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===mds / domain===&lt;br /&gt;
&lt;br /&gt;
get list of domains,objects(management and firewalls),object type&lt;br /&gt;
 mgmt_cli.exe -s id.txt show gateways-and-servers --format json limit 500 | jq '.objects.nat,.name,.type' | xargs -n3&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===jq===&lt;br /&gt;
compound jq select using and/or (note: contains returns true/false)&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select (.comments | (contains(&amp;quot;hahaha&amp;quot;) or contains(&amp;quot;lol&amp;quot;)) | not ) | {ruleUID: .uid, comments: .comments} '&lt;br /&gt;
&lt;br /&gt;
and another one...&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select ((.comments | (contains(&amp;quot;hahah&amp;quot;) or contains(&amp;quot;lol&amp;quot;) | not )) and (.enabled == true)) | {enabled: .enabled, rulenum: .&amp;quot;rule-number&amp;quot;, ruleUID: .uid, comments: .comments} '&lt;br /&gt;
 &lt;br /&gt;
filter objects dictary for uid for accept action&lt;br /&gt;
 jq '.&amp;quot;objects-dictionary&amp;quot;[] | select (.name == &amp;quot;Accept&amp;quot;) | .uid'&lt;br /&gt;
&lt;br /&gt;
get cluster member policy installation targets&lt;br /&gt;
&lt;br /&gt;
 | jq -c '.&amp;quot;installation-targets-revision&amp;quot;[] | .&amp;quot;cluster-members-revision&amp;quot;[] | .&amp;quot;target-name&amp;quot;' | tr -d '&amp;quot;' | tr '\n' ' '&lt;br /&gt;
&lt;br /&gt;
get values without keys&lt;br /&gt;
&lt;br /&gt;
example&lt;br /&gt;
&lt;br /&gt;
with keys...&lt;br /&gt;
 '''| jq '.objects[] | {name: .name,type: .type}''''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;name&amp;quot;: chkp-fw&amp;quot;,&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;simple-gateway&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;chkp-mgmt&amp;quot;,&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;checkpoint-host&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
without keys, change from curly {} to square [] brackets and drop key references&lt;br /&gt;
 '''| jq '.objects[] | [.name, .type]''''&lt;br /&gt;
 [&lt;br /&gt;
  &amp;quot;chkp-fw&amp;quot;,&lt;br /&gt;
  &amp;quot;simple-gateway&amp;quot;&lt;br /&gt;
 ]&lt;br /&gt;
 [&lt;br /&gt;
  &amp;quot;chkp-mgmt&amp;quot;,&lt;br /&gt;
  &amp;quot;checkpoint-host&amp;quot;&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
print all values on the same line, comma separated&lt;br /&gt;
 '''| jq '.objects[] | [.name, .type] | join (&amp;quot;,&amp;quot;)'''&lt;br /&gt;
 &amp;quot;chkp-fw simple-gateway&amp;quot;&lt;br /&gt;
 &amp;quot;chkp-mgmt,checkpoint-host&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===curl===&lt;br /&gt;
&lt;br /&gt;
 curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;userId&amp;quot;: 5, &amp;quot;title&amp;quot;: &amp;quot;Post Title&amp;quot;, &amp;quot;body&amp;quot;: &amp;quot;Post content.&amp;quot;}' &lt;br /&gt;
		&lt;br /&gt;
 curl -X -H POST -H &amp;quot;Content-Type: application/json&amp;quot; -d	'{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' 192.168.1.10:443/login&lt;br /&gt;
	&lt;br /&gt;
 $ '''curl --insecure -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' https://192.168.1.10:443/web_api/login'''&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;uid&amp;quot; : &amp;quot;46a11170-e554-4e58-a5fc-65ff9e38d8cb&amp;quot;,&lt;br /&gt;
 &amp;quot;sid&amp;quot; : &amp;quot;dfq6sI1MxMT1qUhXQ7tafQduKAfJxYkqXCEjaQKjres&amp;quot;,&lt;br /&gt;
 &amp;quot;url&amp;quot; : &amp;quot;https://192.168.1.10:443/web_api&amp;quot;,&lt;br /&gt;
 &amp;quot;session-timeout&amp;quot; : 600,&lt;br /&gt;
 &amp;quot;last-login-was-at&amp;quot; : {&lt;br /&gt;
   &amp;quot;posix&amp;quot; : 1707413218074,&lt;br /&gt;
   &amp;quot;iso-8601&amp;quot; : &amp;quot;2024-02-08T10:26-0700&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;api-server-version&amp;quot; : &amp;quot;1.8.1&amp;quot;,&lt;br /&gt;
 &amp;quot;user-name&amp;quot; : &amp;quot;jsmith&amp;quot;,&lt;br /&gt;
 &amp;quot;user-uid&amp;quot; : &amp;quot;c1109c35-d741-7jg8-98e3-36669b7047a2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 $ '''curl --insecure -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -H &amp;quot;X-chkp-sid: dfq6sI1MxMT1qUhXQ7tafQduKAfJxYkqXCEjaQKjres&amp;quot; -d '{ }' https://192.168.1.10:443/web_api/keepalive'''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;message&amp;quot; : &amp;quot;OK&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==links==&lt;br /&gt;
[https://community.checkpoint.com/t5/General-Management-Topics/What-s-new-with-R80-20M1-Management-API/td-p/39522 What's new with R80.20M1 Management API]&lt;br /&gt;
&lt;br /&gt;
[https://sc1.checkpoint.com/documents/latest/APIs/index.html#introduction~v1.4%20 r80 api reference]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/CheckPointSW/cp_mgmt_api_python_sdk official python open source api]&lt;br /&gt;
&lt;br /&gt;
parsing json return output&lt;br /&gt;
[https://stedolan.github.io/jq/ jq]&lt;br /&gt;
&lt;br /&gt;
[https://community.checkpoint.com/thread/1083 Parsing the output of mgmt_cli]&lt;br /&gt;
&lt;br /&gt;
[https://devqa.io/curl-sending-api-requests/ How to Use CURL to Send API Requests]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/r80_api_notes</id>
		<title>r80 api notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/r80_api_notes"/>
				<updated>2024-05-02T04:18:00Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: /* jq */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Management server API setup==&lt;br /&gt;
===enabling for remote IPs===&lt;br /&gt;
done the smartconsole&lt;br /&gt;
&lt;br /&gt;
[[file:cp_mgmt_api_enable_all_IPs.png]]&lt;br /&gt;
&lt;br /&gt;
it can also be enabled via mgmt_cli under &amp;quot;set api-settings&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===status check===&lt;br /&gt;
&lt;br /&gt;
[Expert@chmkmgr1:0]# '''api status'''&lt;br /&gt;
&amp;lt;br&amp;gt;API Settings:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Accessibility:                      Require all granted      &lt;br /&gt;
&amp;lt;br&amp;gt;Automatic Start:                    Enabled       &lt;br /&gt;
&amp;lt;br&amp;gt;Processes:      &lt;br /&gt;
&amp;lt;br&amp;gt;Name      State     PID       More Information&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API       Started   10763               &lt;br /&gt;
&amp;lt;br&amp;gt;CPM       Started   10460     Check Point Security Management Server is running and ready&lt;br /&gt;
&amp;lt;br&amp;gt;FWM       Started   10007               &lt;br /&gt;
&amp;lt;br&amp;gt;Port Details:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;JETTY Internal Port:      50276          &lt;br /&gt;
&amp;lt;br&amp;gt;APACHE Gaia Port:         443            &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Overall API Status: Started&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API readiness test SUCCESSFUL. The server is up and ready to receive connections&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===logging in===&lt;br /&gt;
login and redirect session info to a file for reuse&lt;br /&gt;
 # mgmt_cli login user admin &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
same but read only&lt;br /&gt;
 # mgmt_cli login user admin read-only true &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
===search existing object===&lt;br /&gt;
search objects by IP, return all objects that contain the ip explicitly or within a nework address space/range.&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true  --format json | jq '.objects[] | {name: .name, subnet: .subnet4, mask: .&amp;quot;mask-length4&amp;quot;}'&lt;br /&gt;
&lt;br /&gt;
return only objects with the EXACT ip&lt;br /&gt;
&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true details-level full --format json |  jq '.objects[] | select(.&amp;quot;ipv4-address&amp;quot; == &amp;quot;192.168.1.1&amp;quot;) | .name'&lt;br /&gt;
&lt;br /&gt;
*** details-level full will include more objects, including other stuff like type CpmiHostCkp (built in smartcenter object)&lt;br /&gt;
&lt;br /&gt;
==access rules==&lt;br /&gt;
===notes before you begin===&lt;br /&gt;
when using the parameter &amp;quot;name&amp;quot; to refer to a particular package, it appears to require the following...&lt;br /&gt;
&amp;lt;package name&amp;gt; &amp;lt;layer name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
as shown by the show access-layers command below. Also, the output of show access-rulebase doesn't is limited to 50 rules. If you want more, I think you have to iterate though a set of offets until all the rules are dumped. That dump in json format is a bit confusing. If you have no &amp;quot;headers&amp;quot; or &amp;quot;titles&amp;quot; in the ruleset, you will get 1 rulebase[] array.  If you have headers, each section is its own rulebase[] array with yet another rulebase[] array containing the actual rules.&lt;br /&gt;
&lt;br /&gt;
What this means is the commands below may or may not work as you expect them to. The will likely need to be altered with mgmt_cli &amp;quot;offset&amp;quot; commands and/or modified jq commands... &lt;br /&gt;
&lt;br /&gt;
for example, if you have NO headers in your policy and are running show access-rulebase, it will output the rules with &lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[]'&lt;br /&gt;
&lt;br /&gt;
if you DO HAVE headers, to output the rules you need&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[]'&lt;br /&gt;
&lt;br /&gt;
====rule numbers====&lt;br /&gt;
&lt;br /&gt;
===show access layers?===&lt;br /&gt;
 [Expert@chmkmgr1:0]# '''mgmt_cli show access-layers -s id.txt --format json | jq '.&amp;quot;access-layers&amp;quot;[].name'&lt;br /&gt;
 &amp;quot;dropall Network&amp;quot;'''&lt;br /&gt;
 &amp;quot;Network&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;quot;Network&amp;quot; represents the default policy package Standard&lt;br /&gt;
&lt;br /&gt;
===examples===&lt;br /&gt;
show number of rules in policy&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;&amp;lt;layer&amp;gt;&amp;quot; -s id.txt --format json limit 1 | jq '.total'&lt;br /&gt;
&lt;br /&gt;
display rule with uid = xxx&lt;br /&gt;
&lt;br /&gt;
 # '''mgmt_cli -s id.txt show access-rule layer &amp;quot;My_policy Network&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
display src/dst/service from rule with uid&lt;br /&gt;
 for i in source destination service; do echo $i; mgmt_cli -s id.txt show access-rule layer &amp;quot;&amp;lt;policy_name&amp;gt; &amp;lt;layer_name&amp;gt;&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot; --format json | jq .$i[].name; done&lt;br /&gt;
&lt;br /&gt;
alternate(inferior) way with jq&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.uid == &amp;quot;1de8fab0-4858-4067-977d-1cbb5cd2e55d&amp;quot;) | .&amp;quot;rule-number&amp;quot;'&lt;br /&gt;
 1&lt;br /&gt;
&lt;br /&gt;
display rule number with comment containing a string haha&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.comments | contains(&amp;quot;haha&amp;quot;)) | {rulenum: .&amp;quot;rule-number&amp;quot;, comment: .comments}'&lt;br /&gt;
&lt;br /&gt;
===adding rules===&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xxad70c9-b4c6-4e64-9bfd-d57ac91289f3 name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xx70adc9-b4c6-4e64-9bfd-d57ac91289f3 position top name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; action &amp;quot;Accept&amp;quot; service add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; service.add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===mds / domain===&lt;br /&gt;
&lt;br /&gt;
get list of domains,objects(management and firewalls),object type&lt;br /&gt;
 mgmt_cli.exe -s id.txt show gateways-and-servers --format json limit 500 | jq '.objects.nat,.name,.type' | xargs -n3&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===jq===&lt;br /&gt;
compound jq select using and/or (note: contains returns true/false)&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select (.comments | (contains(&amp;quot;hahaha&amp;quot;) or contains(&amp;quot;lol&amp;quot;)) | not ) | {ruleUID: .uid, comments: .comments} '&lt;br /&gt;
&lt;br /&gt;
and another one...&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select ((.comments | (contains(&amp;quot;hahah&amp;quot;) or contains(&amp;quot;lol&amp;quot;) | not )) and (.enabled == true)) | {enabled: .enabled, rulenum: .&amp;quot;rule-number&amp;quot;, ruleUID: .uid, comments: .comments} '&lt;br /&gt;
 &lt;br /&gt;
filter objects dictary for uid for accept action&lt;br /&gt;
 jq '.&amp;quot;objects-dictionary&amp;quot;[] | select (.name == &amp;quot;Accept&amp;quot;) | .uid'&lt;br /&gt;
&lt;br /&gt;
get cluster member policy installation targets&lt;br /&gt;
&lt;br /&gt;
 | jq -c '.&amp;quot;installation-targets-revision&amp;quot;[] | .&amp;quot;cluster-members-revision&amp;quot;[] | .&amp;quot;target-name&amp;quot;' | tr -d '&amp;quot;' | tr '\n' ' '&lt;br /&gt;
&lt;br /&gt;
get values without keys&lt;br /&gt;
&lt;br /&gt;
example&lt;br /&gt;
&lt;br /&gt;
with keys...&lt;br /&gt;
 '''| jq '.objects[] | {name: .name,type: .type}''''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;name&amp;quot;: chkp-fw&amp;quot;,&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;simple-gateway&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;chkp-mgmt&amp;quot;,&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;checkpoint-host&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
without keys, change from curly {} to square [] brackets and drop key references&lt;br /&gt;
 '''| jq '.objects[] | [.name, .type]''''&lt;br /&gt;
 [&lt;br /&gt;
  &amp;quot;chkp-fw&amp;quot;,&lt;br /&gt;
  &amp;quot;simple-gateway&amp;quot;&lt;br /&gt;
 ]&lt;br /&gt;
 [&lt;br /&gt;
  &amp;quot;chkp-mgmt&amp;quot;,&lt;br /&gt;
  &amp;quot;checkpoint-host&amp;quot;&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
print all values on the same line, comma separated&lt;br /&gt;
 '''| jq '.objects[] | [.name, .type] | join (&amp;quot;,&amp;quot;)'''&lt;br /&gt;
 &amp;quot;chkp-fw simple-gateway&amp;quot;&lt;br /&gt;
 &amp;quot;chkp-mgmt,checkpoint-host&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;rulenum&amp;quot;: 1,&lt;br /&gt;
&amp;lt;br&amp;gt;  &amp;quot;comment&amp;quot;: &amp;quot;hahahlol&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===curl===&lt;br /&gt;
&lt;br /&gt;
 curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;userId&amp;quot;: 5, &amp;quot;title&amp;quot;: &amp;quot;Post Title&amp;quot;, &amp;quot;body&amp;quot;: &amp;quot;Post content.&amp;quot;}' &lt;br /&gt;
		&lt;br /&gt;
 curl -X -H POST -H &amp;quot;Content-Type: application/json&amp;quot; -d	'{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' 192.168.1.10:443/login&lt;br /&gt;
	&lt;br /&gt;
 $ '''curl --insecure -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' https://192.168.1.10:443/web_api/login'''&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;uid&amp;quot; : &amp;quot;46a11170-e554-4e58-a5fc-65ff9e38d8cb&amp;quot;,&lt;br /&gt;
 &amp;quot;sid&amp;quot; : &amp;quot;dfq6sI1MxMT1qUhXQ7tafQduKAfJxYkqXCEjaQKjres&amp;quot;,&lt;br /&gt;
 &amp;quot;url&amp;quot; : &amp;quot;https://192.168.1.10:443/web_api&amp;quot;,&lt;br /&gt;
 &amp;quot;session-timeout&amp;quot; : 600,&lt;br /&gt;
 &amp;quot;last-login-was-at&amp;quot; : {&lt;br /&gt;
   &amp;quot;posix&amp;quot; : 1707413218074,&lt;br /&gt;
   &amp;quot;iso-8601&amp;quot; : &amp;quot;2024-02-08T10:26-0700&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;api-server-version&amp;quot; : &amp;quot;1.8.1&amp;quot;,&lt;br /&gt;
 &amp;quot;user-name&amp;quot; : &amp;quot;jsmith&amp;quot;,&lt;br /&gt;
 &amp;quot;user-uid&amp;quot; : &amp;quot;c1109c35-d741-7jg8-98e3-36669b7047a2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 $ '''curl --insecure -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -H &amp;quot;X-chkp-sid: dfq6sI1MxMT1qUhXQ7tafQduKAfJxYkqXCEjaQKjres&amp;quot; -d '{ }' https://192.168.1.10:443/web_api/keepalive'''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;message&amp;quot; : &amp;quot;OK&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==links==&lt;br /&gt;
[https://community.checkpoint.com/t5/General-Management-Topics/What-s-new-with-R80-20M1-Management-API/td-p/39522 What's new with R80.20M1 Management API]&lt;br /&gt;
&lt;br /&gt;
[https://sc1.checkpoint.com/documents/latest/APIs/index.html#introduction~v1.4%20 r80 api reference]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/CheckPointSW/cp_mgmt_api_python_sdk official python open source api]&lt;br /&gt;
&lt;br /&gt;
parsing json return output&lt;br /&gt;
[https://stedolan.github.io/jq/ jq]&lt;br /&gt;
&lt;br /&gt;
[https://community.checkpoint.com/thread/1083 Parsing the output of mgmt_cli]&lt;br /&gt;
&lt;br /&gt;
[https://devqa.io/curl-sending-api-requests/ How to Use CURL to Send API Requests]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/r80_api_notes</id>
		<title>r80 api notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/r80_api_notes"/>
				<updated>2024-05-02T04:17:39Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: /* jq */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Management server API setup==&lt;br /&gt;
===enabling for remote IPs===&lt;br /&gt;
done the smartconsole&lt;br /&gt;
&lt;br /&gt;
[[file:cp_mgmt_api_enable_all_IPs.png]]&lt;br /&gt;
&lt;br /&gt;
it can also be enabled via mgmt_cli under &amp;quot;set api-settings&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===status check===&lt;br /&gt;
&lt;br /&gt;
[Expert@chmkmgr1:0]# '''api status'''&lt;br /&gt;
&amp;lt;br&amp;gt;API Settings:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Accessibility:                      Require all granted      &lt;br /&gt;
&amp;lt;br&amp;gt;Automatic Start:                    Enabled       &lt;br /&gt;
&amp;lt;br&amp;gt;Processes:      &lt;br /&gt;
&amp;lt;br&amp;gt;Name      State     PID       More Information&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API       Started   10763               &lt;br /&gt;
&amp;lt;br&amp;gt;CPM       Started   10460     Check Point Security Management Server is running and ready&lt;br /&gt;
&amp;lt;br&amp;gt;FWM       Started   10007               &lt;br /&gt;
&amp;lt;br&amp;gt;Port Details:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;JETTY Internal Port:      50276          &lt;br /&gt;
&amp;lt;br&amp;gt;APACHE Gaia Port:         443            &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Overall API Status: Started&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API readiness test SUCCESSFUL. The server is up and ready to receive connections&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===logging in===&lt;br /&gt;
login and redirect session info to a file for reuse&lt;br /&gt;
 # mgmt_cli login user admin &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
same but read only&lt;br /&gt;
 # mgmt_cli login user admin read-only true &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
===search existing object===&lt;br /&gt;
search objects by IP, return all objects that contain the ip explicitly or within a nework address space/range.&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true  --format json | jq '.objects[] | {name: .name, subnet: .subnet4, mask: .&amp;quot;mask-length4&amp;quot;}'&lt;br /&gt;
&lt;br /&gt;
return only objects with the EXACT ip&lt;br /&gt;
&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true details-level full --format json |  jq '.objects[] | select(.&amp;quot;ipv4-address&amp;quot; == &amp;quot;192.168.1.1&amp;quot;) | .name'&lt;br /&gt;
&lt;br /&gt;
*** details-level full will include more objects, including other stuff like type CpmiHostCkp (built in smartcenter object)&lt;br /&gt;
&lt;br /&gt;
==access rules==&lt;br /&gt;
===notes before you begin===&lt;br /&gt;
when using the parameter &amp;quot;name&amp;quot; to refer to a particular package, it appears to require the following...&lt;br /&gt;
&amp;lt;package name&amp;gt; &amp;lt;layer name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
as shown by the show access-layers command below. Also, the output of show access-rulebase doesn't is limited to 50 rules. If you want more, I think you have to iterate though a set of offets until all the rules are dumped. That dump in json format is a bit confusing. If you have no &amp;quot;headers&amp;quot; or &amp;quot;titles&amp;quot; in the ruleset, you will get 1 rulebase[] array.  If you have headers, each section is its own rulebase[] array with yet another rulebase[] array containing the actual rules.&lt;br /&gt;
&lt;br /&gt;
What this means is the commands below may or may not work as you expect them to. The will likely need to be altered with mgmt_cli &amp;quot;offset&amp;quot; commands and/or modified jq commands... &lt;br /&gt;
&lt;br /&gt;
for example, if you have NO headers in your policy and are running show access-rulebase, it will output the rules with &lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[]'&lt;br /&gt;
&lt;br /&gt;
if you DO HAVE headers, to output the rules you need&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[]'&lt;br /&gt;
&lt;br /&gt;
====rule numbers====&lt;br /&gt;
&lt;br /&gt;
===show access layers?===&lt;br /&gt;
 [Expert@chmkmgr1:0]# '''mgmt_cli show access-layers -s id.txt --format json | jq '.&amp;quot;access-layers&amp;quot;[].name'&lt;br /&gt;
 &amp;quot;dropall Network&amp;quot;'''&lt;br /&gt;
 &amp;quot;Network&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;quot;Network&amp;quot; represents the default policy package Standard&lt;br /&gt;
&lt;br /&gt;
===examples===&lt;br /&gt;
show number of rules in policy&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;&amp;lt;layer&amp;gt;&amp;quot; -s id.txt --format json limit 1 | jq '.total'&lt;br /&gt;
&lt;br /&gt;
display rule with uid = xxx&lt;br /&gt;
&lt;br /&gt;
 # '''mgmt_cli -s id.txt show access-rule layer &amp;quot;My_policy Network&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
display src/dst/service from rule with uid&lt;br /&gt;
 for i in source destination service; do echo $i; mgmt_cli -s id.txt show access-rule layer &amp;quot;&amp;lt;policy_name&amp;gt; &amp;lt;layer_name&amp;gt;&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot; --format json | jq .$i[].name; done&lt;br /&gt;
&lt;br /&gt;
alternate(inferior) way with jq&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.uid == &amp;quot;1de8fab0-4858-4067-977d-1cbb5cd2e55d&amp;quot;) | .&amp;quot;rule-number&amp;quot;'&lt;br /&gt;
 1&lt;br /&gt;
&lt;br /&gt;
display rule number with comment containing a string haha&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.comments | contains(&amp;quot;haha&amp;quot;)) | {rulenum: .&amp;quot;rule-number&amp;quot;, comment: .comments}'&lt;br /&gt;
&lt;br /&gt;
===adding rules===&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xxad70c9-b4c6-4e64-9bfd-d57ac91289f3 name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xx70adc9-b4c6-4e64-9bfd-d57ac91289f3 position top name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; action &amp;quot;Accept&amp;quot; service add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; service.add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===mds / domain===&lt;br /&gt;
&lt;br /&gt;
get list of domains,objects(management and firewalls),object type&lt;br /&gt;
 mgmt_cli.exe -s id.txt show gateways-and-servers --format json limit 500 | jq '.objects.nat,.name,.type' | xargs -n3&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===jq===&lt;br /&gt;
compound jq select using and/or (note: contains returns true/false)&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select (.comments | (contains(&amp;quot;hahaha&amp;quot;) or contains(&amp;quot;lol&amp;quot;)) | not ) | {ruleUID: .uid, comments: .comments} '&lt;br /&gt;
&lt;br /&gt;
and another one...&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select ((.comments | (contains(&amp;quot;hahah&amp;quot;) or contains(&amp;quot;lol&amp;quot;) | not )) and (.enabled == true)) | {enabled: .enabled, rulenum: .&amp;quot;rule-number&amp;quot;, ruleUID: .uid, comments: .comments} '&lt;br /&gt;
 &lt;br /&gt;
filter objects dictary for uid for accept action&lt;br /&gt;
 jq '.&amp;quot;objects-dictionary&amp;quot;[] | select (.name == &amp;quot;Accept&amp;quot;) | .uid'&lt;br /&gt;
&lt;br /&gt;
get cluster member policy installation targets&lt;br /&gt;
&lt;br /&gt;
 | jq -c '.&amp;quot;installation-targets-revision&amp;quot;[] | .&amp;quot;cluster-members-revision&amp;quot;[] | .&amp;quot;target-name&amp;quot;' | tr -d '&amp;quot;' | tr '\n' ' '&lt;br /&gt;
&lt;br /&gt;
get values without keys&lt;br /&gt;
&lt;br /&gt;
example&lt;br /&gt;
&lt;br /&gt;
with keys...&lt;br /&gt;
 '''| jq '.objects[] | {name: .name,type: .type}''''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;name&amp;quot;: chkp-fw&amp;quot;,&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;simple-gateway&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;chkp-mgmt&amp;quot;,&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;checkpoint-host&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
without keys, change from curly {} to square [] brackets and drop key references&lt;br /&gt;
 | jq '.objects[] | [.name, .type]'&lt;br /&gt;
 [&lt;br /&gt;
  &amp;quot;chkp-fw&amp;quot;,&lt;br /&gt;
  &amp;quot;simple-gateway&amp;quot;&lt;br /&gt;
 ]&lt;br /&gt;
 [&lt;br /&gt;
  &amp;quot;chkp-mgmt&amp;quot;,&lt;br /&gt;
  &amp;quot;checkpoint-host&amp;quot;&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
print all values on the same line, comma separated&lt;br /&gt;
 | jq '.objects[] | [.name, .type] | join (&amp;quot;,&amp;quot;)&lt;br /&gt;
 &amp;quot;chkp-fw simple-gateway&amp;quot;&lt;br /&gt;
 &amp;quot;chkp-mgmt,checkpoint-host&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;rulenum&amp;quot;: 1,&lt;br /&gt;
&amp;lt;br&amp;gt;  &amp;quot;comment&amp;quot;: &amp;quot;hahahlol&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===curl===&lt;br /&gt;
&lt;br /&gt;
 curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;userId&amp;quot;: 5, &amp;quot;title&amp;quot;: &amp;quot;Post Title&amp;quot;, &amp;quot;body&amp;quot;: &amp;quot;Post content.&amp;quot;}' &lt;br /&gt;
		&lt;br /&gt;
 curl -X -H POST -H &amp;quot;Content-Type: application/json&amp;quot; -d	'{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' 192.168.1.10:443/login&lt;br /&gt;
	&lt;br /&gt;
 $ '''curl --insecure -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' https://192.168.1.10:443/web_api/login'''&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;uid&amp;quot; : &amp;quot;46a11170-e554-4e58-a5fc-65ff9e38d8cb&amp;quot;,&lt;br /&gt;
 &amp;quot;sid&amp;quot; : &amp;quot;dfq6sI1MxMT1qUhXQ7tafQduKAfJxYkqXCEjaQKjres&amp;quot;,&lt;br /&gt;
 &amp;quot;url&amp;quot; : &amp;quot;https://192.168.1.10:443/web_api&amp;quot;,&lt;br /&gt;
 &amp;quot;session-timeout&amp;quot; : 600,&lt;br /&gt;
 &amp;quot;last-login-was-at&amp;quot; : {&lt;br /&gt;
   &amp;quot;posix&amp;quot; : 1707413218074,&lt;br /&gt;
   &amp;quot;iso-8601&amp;quot; : &amp;quot;2024-02-08T10:26-0700&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;api-server-version&amp;quot; : &amp;quot;1.8.1&amp;quot;,&lt;br /&gt;
 &amp;quot;user-name&amp;quot; : &amp;quot;jsmith&amp;quot;,&lt;br /&gt;
 &amp;quot;user-uid&amp;quot; : &amp;quot;c1109c35-d741-7jg8-98e3-36669b7047a2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 $ '''curl --insecure -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -H &amp;quot;X-chkp-sid: dfq6sI1MxMT1qUhXQ7tafQduKAfJxYkqXCEjaQKjres&amp;quot; -d '{ }' https://192.168.1.10:443/web_api/keepalive'''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;message&amp;quot; : &amp;quot;OK&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==links==&lt;br /&gt;
[https://community.checkpoint.com/t5/General-Management-Topics/What-s-new-with-R80-20M1-Management-API/td-p/39522 What's new with R80.20M1 Management API]&lt;br /&gt;
&lt;br /&gt;
[https://sc1.checkpoint.com/documents/latest/APIs/index.html#introduction~v1.4%20 r80 api reference]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/CheckPointSW/cp_mgmt_api_python_sdk official python open source api]&lt;br /&gt;
&lt;br /&gt;
parsing json return output&lt;br /&gt;
[https://stedolan.github.io/jq/ jq]&lt;br /&gt;
&lt;br /&gt;
[https://community.checkpoint.com/thread/1083 Parsing the output of mgmt_cli]&lt;br /&gt;
&lt;br /&gt;
[https://devqa.io/curl-sending-api-requests/ How to Use CURL to Send API Requests]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/r80_api_notes</id>
		<title>r80 api notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/r80_api_notes"/>
				<updated>2024-05-02T04:17:11Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: /* jq */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Management server API setup==&lt;br /&gt;
===enabling for remote IPs===&lt;br /&gt;
done the smartconsole&lt;br /&gt;
&lt;br /&gt;
[[file:cp_mgmt_api_enable_all_IPs.png]]&lt;br /&gt;
&lt;br /&gt;
it can also be enabled via mgmt_cli under &amp;quot;set api-settings&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===status check===&lt;br /&gt;
&lt;br /&gt;
[Expert@chmkmgr1:0]# '''api status'''&lt;br /&gt;
&amp;lt;br&amp;gt;API Settings:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Accessibility:                      Require all granted      &lt;br /&gt;
&amp;lt;br&amp;gt;Automatic Start:                    Enabled       &lt;br /&gt;
&amp;lt;br&amp;gt;Processes:      &lt;br /&gt;
&amp;lt;br&amp;gt;Name      State     PID       More Information&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API       Started   10763               &lt;br /&gt;
&amp;lt;br&amp;gt;CPM       Started   10460     Check Point Security Management Server is running and ready&lt;br /&gt;
&amp;lt;br&amp;gt;FWM       Started   10007               &lt;br /&gt;
&amp;lt;br&amp;gt;Port Details:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;JETTY Internal Port:      50276          &lt;br /&gt;
&amp;lt;br&amp;gt;APACHE Gaia Port:         443            &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Overall API Status: Started&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API readiness test SUCCESSFUL. The server is up and ready to receive connections&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===logging in===&lt;br /&gt;
login and redirect session info to a file for reuse&lt;br /&gt;
 # mgmt_cli login user admin &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
same but read only&lt;br /&gt;
 # mgmt_cli login user admin read-only true &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
===search existing object===&lt;br /&gt;
search objects by IP, return all objects that contain the ip explicitly or within a nework address space/range.&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true  --format json | jq '.objects[] | {name: .name, subnet: .subnet4, mask: .&amp;quot;mask-length4&amp;quot;}'&lt;br /&gt;
&lt;br /&gt;
return only objects with the EXACT ip&lt;br /&gt;
&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true details-level full --format json |  jq '.objects[] | select(.&amp;quot;ipv4-address&amp;quot; == &amp;quot;192.168.1.1&amp;quot;) | .name'&lt;br /&gt;
&lt;br /&gt;
*** details-level full will include more objects, including other stuff like type CpmiHostCkp (built in smartcenter object)&lt;br /&gt;
&lt;br /&gt;
==access rules==&lt;br /&gt;
===notes before you begin===&lt;br /&gt;
when using the parameter &amp;quot;name&amp;quot; to refer to a particular package, it appears to require the following...&lt;br /&gt;
&amp;lt;package name&amp;gt; &amp;lt;layer name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
as shown by the show access-layers command below. Also, the output of show access-rulebase doesn't is limited to 50 rules. If you want more, I think you have to iterate though a set of offets until all the rules are dumped. That dump in json format is a bit confusing. If you have no &amp;quot;headers&amp;quot; or &amp;quot;titles&amp;quot; in the ruleset, you will get 1 rulebase[] array.  If you have headers, each section is its own rulebase[] array with yet another rulebase[] array containing the actual rules.&lt;br /&gt;
&lt;br /&gt;
What this means is the commands below may or may not work as you expect them to. The will likely need to be altered with mgmt_cli &amp;quot;offset&amp;quot; commands and/or modified jq commands... &lt;br /&gt;
&lt;br /&gt;
for example, if you have NO headers in your policy and are running show access-rulebase, it will output the rules with &lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[]'&lt;br /&gt;
&lt;br /&gt;
if you DO HAVE headers, to output the rules you need&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[]'&lt;br /&gt;
&lt;br /&gt;
====rule numbers====&lt;br /&gt;
&lt;br /&gt;
===show access layers?===&lt;br /&gt;
 [Expert@chmkmgr1:0]# '''mgmt_cli show access-layers -s id.txt --format json | jq '.&amp;quot;access-layers&amp;quot;[].name'&lt;br /&gt;
 &amp;quot;dropall Network&amp;quot;'''&lt;br /&gt;
 &amp;quot;Network&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;quot;Network&amp;quot; represents the default policy package Standard&lt;br /&gt;
&lt;br /&gt;
===examples===&lt;br /&gt;
show number of rules in policy&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;&amp;lt;layer&amp;gt;&amp;quot; -s id.txt --format json limit 1 | jq '.total'&lt;br /&gt;
&lt;br /&gt;
display rule with uid = xxx&lt;br /&gt;
&lt;br /&gt;
 # '''mgmt_cli -s id.txt show access-rule layer &amp;quot;My_policy Network&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
display src/dst/service from rule with uid&lt;br /&gt;
 for i in source destination service; do echo $i; mgmt_cli -s id.txt show access-rule layer &amp;quot;&amp;lt;policy_name&amp;gt; &amp;lt;layer_name&amp;gt;&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot; --format json | jq .$i[].name; done&lt;br /&gt;
&lt;br /&gt;
alternate(inferior) way with jq&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.uid == &amp;quot;1de8fab0-4858-4067-977d-1cbb5cd2e55d&amp;quot;) | .&amp;quot;rule-number&amp;quot;'&lt;br /&gt;
 1&lt;br /&gt;
&lt;br /&gt;
display rule number with comment containing a string haha&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.comments | contains(&amp;quot;haha&amp;quot;)) | {rulenum: .&amp;quot;rule-number&amp;quot;, comment: .comments}'&lt;br /&gt;
&lt;br /&gt;
===adding rules===&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xxad70c9-b4c6-4e64-9bfd-d57ac91289f3 name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xx70adc9-b4c6-4e64-9bfd-d57ac91289f3 position top name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; action &amp;quot;Accept&amp;quot; service add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; service.add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===mds / domain===&lt;br /&gt;
&lt;br /&gt;
get list of domains,objects(management and firewalls),object type&lt;br /&gt;
 mgmt_cli.exe -s id.txt show gateways-and-servers --format json limit 500 | jq '.objects.nat,.name,.type' | xargs -n3&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===jq===&lt;br /&gt;
compound jq select using and/or (note: contains returns true/false)&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select (.comments | (contains(&amp;quot;hahaha&amp;quot;) or contains(&amp;quot;lol&amp;quot;)) | not ) | {ruleUID: .uid, comments: .comments} '&lt;br /&gt;
&lt;br /&gt;
and another one...&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select ((.comments | (contains(&amp;quot;hahah&amp;quot;) or contains(&amp;quot;lol&amp;quot;) | not )) and (.enabled == true)) | {enabled: .enabled, rulenum: .&amp;quot;rule-number&amp;quot;, ruleUID: .uid, comments: .comments} '&lt;br /&gt;
 &lt;br /&gt;
filter objects dictary for uid for accept action&lt;br /&gt;
 jq '.&amp;quot;objects-dictionary&amp;quot;[] | select (.name == &amp;quot;Accept&amp;quot;) | .uid'&lt;br /&gt;
&lt;br /&gt;
get cluster member policy installation targets&lt;br /&gt;
&lt;br /&gt;
 | jq -c '.&amp;quot;installation-targets-revision&amp;quot;[] | .&amp;quot;cluster-members-revision&amp;quot;[] | .&amp;quot;target-name&amp;quot;' | tr -d '&amp;quot;' | tr '\n' ' '&lt;br /&gt;
&lt;br /&gt;
get values without keys&lt;br /&gt;
&lt;br /&gt;
example&lt;br /&gt;
&lt;br /&gt;
with keys...&lt;br /&gt;
 | jq '.objects[] | {name: .name,type: .type}'&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;name&amp;quot;: chkp-fw&amp;quot;,&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;simple-gateway&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;chkp-mgmt&amp;quot;,&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;checkpoint-host&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
without keys, change from curly {} to square [] brackets and drop key references&lt;br /&gt;
 | jq '.objects[] | [.name, .type]'&lt;br /&gt;
 [&lt;br /&gt;
  &amp;quot;chkp-fw&amp;quot;,&lt;br /&gt;
  &amp;quot;simple-gateway&amp;quot;&lt;br /&gt;
 ]&lt;br /&gt;
 [&lt;br /&gt;
  &amp;quot;chkp-mgmt&amp;quot;,&lt;br /&gt;
  &amp;quot;checkpoint-host&amp;quot;&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
print all values on the same line, comma separated&lt;br /&gt;
 | jq '.objects[] | [.name, .type] | join (&amp;quot;,&amp;quot;)&lt;br /&gt;
 &amp;quot;chkp-fw simple-gateway&amp;quot;&lt;br /&gt;
 &amp;quot;chkp-mgmt,checkpoint-host&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;rulenum&amp;quot;: 1,&lt;br /&gt;
&amp;lt;br&amp;gt;  &amp;quot;comment&amp;quot;: &amp;quot;hahahlol&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===curl===&lt;br /&gt;
&lt;br /&gt;
 curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;userId&amp;quot;: 5, &amp;quot;title&amp;quot;: &amp;quot;Post Title&amp;quot;, &amp;quot;body&amp;quot;: &amp;quot;Post content.&amp;quot;}' &lt;br /&gt;
		&lt;br /&gt;
 curl -X -H POST -H &amp;quot;Content-Type: application/json&amp;quot; -d	'{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' 192.168.1.10:443/login&lt;br /&gt;
	&lt;br /&gt;
 $ '''curl --insecure -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' https://192.168.1.10:443/web_api/login'''&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;uid&amp;quot; : &amp;quot;46a11170-e554-4e58-a5fc-65ff9e38d8cb&amp;quot;,&lt;br /&gt;
 &amp;quot;sid&amp;quot; : &amp;quot;dfq6sI1MxMT1qUhXQ7tafQduKAfJxYkqXCEjaQKjres&amp;quot;,&lt;br /&gt;
 &amp;quot;url&amp;quot; : &amp;quot;https://192.168.1.10:443/web_api&amp;quot;,&lt;br /&gt;
 &amp;quot;session-timeout&amp;quot; : 600,&lt;br /&gt;
 &amp;quot;last-login-was-at&amp;quot; : {&lt;br /&gt;
   &amp;quot;posix&amp;quot; : 1707413218074,&lt;br /&gt;
   &amp;quot;iso-8601&amp;quot; : &amp;quot;2024-02-08T10:26-0700&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;api-server-version&amp;quot; : &amp;quot;1.8.1&amp;quot;,&lt;br /&gt;
 &amp;quot;user-name&amp;quot; : &amp;quot;jsmith&amp;quot;,&lt;br /&gt;
 &amp;quot;user-uid&amp;quot; : &amp;quot;c1109c35-d741-7jg8-98e3-36669b7047a2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 $ '''curl --insecure -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -H &amp;quot;X-chkp-sid: dfq6sI1MxMT1qUhXQ7tafQduKAfJxYkqXCEjaQKjres&amp;quot; -d '{ }' https://192.168.1.10:443/web_api/keepalive'''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;message&amp;quot; : &amp;quot;OK&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==links==&lt;br /&gt;
[https://community.checkpoint.com/t5/General-Management-Topics/What-s-new-with-R80-20M1-Management-API/td-p/39522 What's new with R80.20M1 Management API]&lt;br /&gt;
&lt;br /&gt;
[https://sc1.checkpoint.com/documents/latest/APIs/index.html#introduction~v1.4%20 r80 api reference]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/CheckPointSW/cp_mgmt_api_python_sdk official python open source api]&lt;br /&gt;
&lt;br /&gt;
parsing json return output&lt;br /&gt;
[https://stedolan.github.io/jq/ jq]&lt;br /&gt;
&lt;br /&gt;
[https://community.checkpoint.com/thread/1083 Parsing the output of mgmt_cli]&lt;br /&gt;
&lt;br /&gt;
[https://devqa.io/curl-sending-api-requests/ How to Use CURL to Send API Requests]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/r80_api_notes</id>
		<title>r80 api notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/r80_api_notes"/>
				<updated>2024-05-02T04:07:15Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: /* jq */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Management server API setup==&lt;br /&gt;
===enabling for remote IPs===&lt;br /&gt;
done the smartconsole&lt;br /&gt;
&lt;br /&gt;
[[file:cp_mgmt_api_enable_all_IPs.png]]&lt;br /&gt;
&lt;br /&gt;
it can also be enabled via mgmt_cli under &amp;quot;set api-settings&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===status check===&lt;br /&gt;
&lt;br /&gt;
[Expert@chmkmgr1:0]# '''api status'''&lt;br /&gt;
&amp;lt;br&amp;gt;API Settings:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Accessibility:                      Require all granted      &lt;br /&gt;
&amp;lt;br&amp;gt;Automatic Start:                    Enabled       &lt;br /&gt;
&amp;lt;br&amp;gt;Processes:      &lt;br /&gt;
&amp;lt;br&amp;gt;Name      State     PID       More Information&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API       Started   10763               &lt;br /&gt;
&amp;lt;br&amp;gt;CPM       Started   10460     Check Point Security Management Server is running and ready&lt;br /&gt;
&amp;lt;br&amp;gt;FWM       Started   10007               &lt;br /&gt;
&amp;lt;br&amp;gt;Port Details:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;JETTY Internal Port:      50276          &lt;br /&gt;
&amp;lt;br&amp;gt;APACHE Gaia Port:         443            &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Overall API Status: Started&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API readiness test SUCCESSFUL. The server is up and ready to receive connections&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===logging in===&lt;br /&gt;
login and redirect session info to a file for reuse&lt;br /&gt;
 # mgmt_cli login user admin &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
same but read only&lt;br /&gt;
 # mgmt_cli login user admin read-only true &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
===search existing object===&lt;br /&gt;
search objects by IP, return all objects that contain the ip explicitly or within a nework address space/range.&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true  --format json | jq '.objects[] | {name: .name, subnet: .subnet4, mask: .&amp;quot;mask-length4&amp;quot;}'&lt;br /&gt;
&lt;br /&gt;
return only objects with the EXACT ip&lt;br /&gt;
&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true details-level full --format json |  jq '.objects[] | select(.&amp;quot;ipv4-address&amp;quot; == &amp;quot;192.168.1.1&amp;quot;) | .name'&lt;br /&gt;
&lt;br /&gt;
*** details-level full will include more objects, including other stuff like type CpmiHostCkp (built in smartcenter object)&lt;br /&gt;
&lt;br /&gt;
==access rules==&lt;br /&gt;
===notes before you begin===&lt;br /&gt;
when using the parameter &amp;quot;name&amp;quot; to refer to a particular package, it appears to require the following...&lt;br /&gt;
&amp;lt;package name&amp;gt; &amp;lt;layer name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
as shown by the show access-layers command below. Also, the output of show access-rulebase doesn't is limited to 50 rules. If you want more, I think you have to iterate though a set of offets until all the rules are dumped. That dump in json format is a bit confusing. If you have no &amp;quot;headers&amp;quot; or &amp;quot;titles&amp;quot; in the ruleset, you will get 1 rulebase[] array.  If you have headers, each section is its own rulebase[] array with yet another rulebase[] array containing the actual rules.&lt;br /&gt;
&lt;br /&gt;
What this means is the commands below may or may not work as you expect them to. The will likely need to be altered with mgmt_cli &amp;quot;offset&amp;quot; commands and/or modified jq commands... &lt;br /&gt;
&lt;br /&gt;
for example, if you have NO headers in your policy and are running show access-rulebase, it will output the rules with &lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[]'&lt;br /&gt;
&lt;br /&gt;
if you DO HAVE headers, to output the rules you need&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[]'&lt;br /&gt;
&lt;br /&gt;
====rule numbers====&lt;br /&gt;
&lt;br /&gt;
===show access layers?===&lt;br /&gt;
 [Expert@chmkmgr1:0]# '''mgmt_cli show access-layers -s id.txt --format json | jq '.&amp;quot;access-layers&amp;quot;[].name'&lt;br /&gt;
 &amp;quot;dropall Network&amp;quot;'''&lt;br /&gt;
 &amp;quot;Network&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;quot;Network&amp;quot; represents the default policy package Standard&lt;br /&gt;
&lt;br /&gt;
===examples===&lt;br /&gt;
show number of rules in policy&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;&amp;lt;layer&amp;gt;&amp;quot; -s id.txt --format json limit 1 | jq '.total'&lt;br /&gt;
&lt;br /&gt;
display rule with uid = xxx&lt;br /&gt;
&lt;br /&gt;
 # '''mgmt_cli -s id.txt show access-rule layer &amp;quot;My_policy Network&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
display src/dst/service from rule with uid&lt;br /&gt;
 for i in source destination service; do echo $i; mgmt_cli -s id.txt show access-rule layer &amp;quot;&amp;lt;policy_name&amp;gt; &amp;lt;layer_name&amp;gt;&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot; --format json | jq .$i[].name; done&lt;br /&gt;
&lt;br /&gt;
alternate(inferior) way with jq&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.uid == &amp;quot;1de8fab0-4858-4067-977d-1cbb5cd2e55d&amp;quot;) | .&amp;quot;rule-number&amp;quot;'&lt;br /&gt;
 1&lt;br /&gt;
&lt;br /&gt;
display rule number with comment containing a string haha&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.comments | contains(&amp;quot;haha&amp;quot;)) | {rulenum: .&amp;quot;rule-number&amp;quot;, comment: .comments}'&lt;br /&gt;
&lt;br /&gt;
===adding rules===&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xxad70c9-b4c6-4e64-9bfd-d57ac91289f3 name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xx70adc9-b4c6-4e64-9bfd-d57ac91289f3 position top name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; action &amp;quot;Accept&amp;quot; service add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; service.add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===mds / domain===&lt;br /&gt;
&lt;br /&gt;
get list of domains,objects(management and firewalls),object type&lt;br /&gt;
 mgmt_cli.exe -s id.txt show gateways-and-servers --format json limit 500 | jq '.objects.nat,.name,.type' | xargs -n3&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===jq===&lt;br /&gt;
compound jq select using and/or (note: contains returns true/false)&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select (.comments | (contains(&amp;quot;hahaha&amp;quot;) or contains(&amp;quot;lol&amp;quot;)) | not ) | {ruleUID: .uid, comments: .comments} '&lt;br /&gt;
&lt;br /&gt;
and another one...&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select ((.comments | (contains(&amp;quot;hahah&amp;quot;) or contains(&amp;quot;lol&amp;quot;) | not )) and (.enabled == true)) | {enabled: .enabled, rulenum: .&amp;quot;rule-number&amp;quot;, ruleUID: .uid, comments: .comments} '&lt;br /&gt;
 &lt;br /&gt;
filter objects dictary for uid for accept action&lt;br /&gt;
 jq '.&amp;quot;objects-dictionary&amp;quot;[] | select (.name == &amp;quot;Accept&amp;quot;) | .uid'&lt;br /&gt;
&lt;br /&gt;
get cluster member policy installation targets&lt;br /&gt;
&lt;br /&gt;
 | jq -c '.&amp;quot;installation-targets-revision&amp;quot;[] | .&amp;quot;cluster-members-revision&amp;quot;[] | .&amp;quot;target-name&amp;quot;' | tr -d '&amp;quot;' | tr '\n' ' '&lt;br /&gt;
&lt;br /&gt;
get values without keys&lt;br /&gt;
&lt;br /&gt;
example&lt;br /&gt;
&lt;br /&gt;
with keys...&lt;br /&gt;
 | jq '.objects[] | {name: .name,type: .type}'&lt;br /&gt;
without keys, change from curly {} to square [] brackets and drop key references&lt;br /&gt;
 | jq '.objects[] | [.name, .type]'&lt;br /&gt;
&lt;br /&gt;
print all values on the same line, comma separated&lt;br /&gt;
 | jq '.objects[] | [.name, .type] | join (&amp;quot;,&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;rulenum&amp;quot;: 1,&lt;br /&gt;
&amp;lt;br&amp;gt;  &amp;quot;comment&amp;quot;: &amp;quot;hahahlol&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===curl===&lt;br /&gt;
&lt;br /&gt;
 curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;userId&amp;quot;: 5, &amp;quot;title&amp;quot;: &amp;quot;Post Title&amp;quot;, &amp;quot;body&amp;quot;: &amp;quot;Post content.&amp;quot;}' &lt;br /&gt;
		&lt;br /&gt;
 curl -X -H POST -H &amp;quot;Content-Type: application/json&amp;quot; -d	'{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' 192.168.1.10:443/login&lt;br /&gt;
	&lt;br /&gt;
 $ '''curl --insecure -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' https://192.168.1.10:443/web_api/login'''&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;uid&amp;quot; : &amp;quot;46a11170-e554-4e58-a5fc-65ff9e38d8cb&amp;quot;,&lt;br /&gt;
 &amp;quot;sid&amp;quot; : &amp;quot;dfq6sI1MxMT1qUhXQ7tafQduKAfJxYkqXCEjaQKjres&amp;quot;,&lt;br /&gt;
 &amp;quot;url&amp;quot; : &amp;quot;https://192.168.1.10:443/web_api&amp;quot;,&lt;br /&gt;
 &amp;quot;session-timeout&amp;quot; : 600,&lt;br /&gt;
 &amp;quot;last-login-was-at&amp;quot; : {&lt;br /&gt;
   &amp;quot;posix&amp;quot; : 1707413218074,&lt;br /&gt;
   &amp;quot;iso-8601&amp;quot; : &amp;quot;2024-02-08T10:26-0700&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;api-server-version&amp;quot; : &amp;quot;1.8.1&amp;quot;,&lt;br /&gt;
 &amp;quot;user-name&amp;quot; : &amp;quot;jsmith&amp;quot;,&lt;br /&gt;
 &amp;quot;user-uid&amp;quot; : &amp;quot;c1109c35-d741-7jg8-98e3-36669b7047a2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 $ '''curl --insecure -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -H &amp;quot;X-chkp-sid: dfq6sI1MxMT1qUhXQ7tafQduKAfJxYkqXCEjaQKjres&amp;quot; -d '{ }' https://192.168.1.10:443/web_api/keepalive'''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;message&amp;quot; : &amp;quot;OK&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==links==&lt;br /&gt;
[https://community.checkpoint.com/t5/General-Management-Topics/What-s-new-with-R80-20M1-Management-API/td-p/39522 What's new with R80.20M1 Management API]&lt;br /&gt;
&lt;br /&gt;
[https://sc1.checkpoint.com/documents/latest/APIs/index.html#introduction~v1.4%20 r80 api reference]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/CheckPointSW/cp_mgmt_api_python_sdk official python open source api]&lt;br /&gt;
&lt;br /&gt;
parsing json return output&lt;br /&gt;
[https://stedolan.github.io/jq/ jq]&lt;br /&gt;
&lt;br /&gt;
[https://community.checkpoint.com/thread/1083 Parsing the output of mgmt_cli]&lt;br /&gt;
&lt;br /&gt;
[https://devqa.io/curl-sending-api-requests/ How to Use CURL to Send API Requests]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/r80_api_notes</id>
		<title>r80 api notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/r80_api_notes"/>
				<updated>2024-04-01T19:25:28Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: /* curl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Management server API setup==&lt;br /&gt;
===enabling for remote IPs===&lt;br /&gt;
done the smartconsole&lt;br /&gt;
&lt;br /&gt;
[[file:cp_mgmt_api_enable_all_IPs.png]]&lt;br /&gt;
&lt;br /&gt;
it can also be enabled via mgmt_cli under &amp;quot;set api-settings&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===status check===&lt;br /&gt;
&lt;br /&gt;
[Expert@chmkmgr1:0]# '''api status'''&lt;br /&gt;
&amp;lt;br&amp;gt;API Settings:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Accessibility:                      Require all granted      &lt;br /&gt;
&amp;lt;br&amp;gt;Automatic Start:                    Enabled       &lt;br /&gt;
&amp;lt;br&amp;gt;Processes:      &lt;br /&gt;
&amp;lt;br&amp;gt;Name      State     PID       More Information&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API       Started   10763               &lt;br /&gt;
&amp;lt;br&amp;gt;CPM       Started   10460     Check Point Security Management Server is running and ready&lt;br /&gt;
&amp;lt;br&amp;gt;FWM       Started   10007               &lt;br /&gt;
&amp;lt;br&amp;gt;Port Details:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;JETTY Internal Port:      50276          &lt;br /&gt;
&amp;lt;br&amp;gt;APACHE Gaia Port:         443            &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Overall API Status: Started&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API readiness test SUCCESSFUL. The server is up and ready to receive connections&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===logging in===&lt;br /&gt;
login and redirect session info to a file for reuse&lt;br /&gt;
 # mgmt_cli login user admin &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
same but read only&lt;br /&gt;
 # mgmt_cli login user admin read-only true &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
===search existing object===&lt;br /&gt;
search objects by IP, return all objects that contain the ip explicitly or within a nework address space/range.&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true  --format json | jq '.objects[] | {name: .name, subnet: .subnet4, mask: .&amp;quot;mask-length4&amp;quot;}'&lt;br /&gt;
&lt;br /&gt;
return only objects with the EXACT ip&lt;br /&gt;
&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true details-level full --format json |  jq '.objects[] | select(.&amp;quot;ipv4-address&amp;quot; == &amp;quot;192.168.1.1&amp;quot;) | .name'&lt;br /&gt;
&lt;br /&gt;
*** details-level full will include more objects, including other stuff like type CpmiHostCkp (built in smartcenter object)&lt;br /&gt;
&lt;br /&gt;
==access rules==&lt;br /&gt;
===notes before you begin===&lt;br /&gt;
when using the parameter &amp;quot;name&amp;quot; to refer to a particular package, it appears to require the following...&lt;br /&gt;
&amp;lt;package name&amp;gt; &amp;lt;layer name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
as shown by the show access-layers command below. Also, the output of show access-rulebase doesn't is limited to 50 rules. If you want more, I think you have to iterate though a set of offets until all the rules are dumped. That dump in json format is a bit confusing. If you have no &amp;quot;headers&amp;quot; or &amp;quot;titles&amp;quot; in the ruleset, you will get 1 rulebase[] array.  If you have headers, each section is its own rulebase[] array with yet another rulebase[] array containing the actual rules.&lt;br /&gt;
&lt;br /&gt;
What this means is the commands below may or may not work as you expect them to. The will likely need to be altered with mgmt_cli &amp;quot;offset&amp;quot; commands and/or modified jq commands... &lt;br /&gt;
&lt;br /&gt;
for example, if you have NO headers in your policy and are running show access-rulebase, it will output the rules with &lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[]'&lt;br /&gt;
&lt;br /&gt;
if you DO HAVE headers, to output the rules you need&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[]'&lt;br /&gt;
&lt;br /&gt;
====rule numbers====&lt;br /&gt;
&lt;br /&gt;
===show access layers?===&lt;br /&gt;
 [Expert@chmkmgr1:0]# '''mgmt_cli show access-layers -s id.txt --format json | jq '.&amp;quot;access-layers&amp;quot;[].name'&lt;br /&gt;
 &amp;quot;dropall Network&amp;quot;'''&lt;br /&gt;
 &amp;quot;Network&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;quot;Network&amp;quot; represents the default policy package Standard&lt;br /&gt;
&lt;br /&gt;
===examples===&lt;br /&gt;
show number of rules in policy&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;&amp;lt;layer&amp;gt;&amp;quot; -s id.txt --format json limit 1 | jq '.total'&lt;br /&gt;
&lt;br /&gt;
display rule with uid = xxx&lt;br /&gt;
&lt;br /&gt;
 # '''mgmt_cli -s id.txt show access-rule layer &amp;quot;My_policy Network&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
display src/dst/service from rule with uid&lt;br /&gt;
 for i in source destination service; do echo $i; mgmt_cli -s id.txt show access-rule layer &amp;quot;&amp;lt;policy_name&amp;gt; &amp;lt;layer_name&amp;gt;&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot; --format json | jq .$i[].name; done&lt;br /&gt;
&lt;br /&gt;
alternate(inferior) way with jq&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.uid == &amp;quot;1de8fab0-4858-4067-977d-1cbb5cd2e55d&amp;quot;) | .&amp;quot;rule-number&amp;quot;'&lt;br /&gt;
 1&lt;br /&gt;
&lt;br /&gt;
display rule number with comment containing a string haha&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.comments | contains(&amp;quot;haha&amp;quot;)) | {rulenum: .&amp;quot;rule-number&amp;quot;, comment: .comments}'&lt;br /&gt;
&lt;br /&gt;
===adding rules===&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xxad70c9-b4c6-4e64-9bfd-d57ac91289f3 name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xx70adc9-b4c6-4e64-9bfd-d57ac91289f3 position top name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; action &amp;quot;Accept&amp;quot; service add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; service.add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===mds / domain===&lt;br /&gt;
&lt;br /&gt;
get list of domains,objects(management and firewalls),object type&lt;br /&gt;
 mgmt_cli.exe -s id.txt show gateways-and-servers --format json limit 500 | jq '.objects.nat,.name,.type' | xargs -n3&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===jq===&lt;br /&gt;
compound jq select using and/or (note: contains returns true/false)&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select (.comments | (contains(&amp;quot;hahaha&amp;quot;) or contains(&amp;quot;lol&amp;quot;)) | not ) | {ruleUID: .uid, comments: .comments} '&lt;br /&gt;
&lt;br /&gt;
and another one...&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select ((.comments | (contains(&amp;quot;hahah&amp;quot;) or contains(&amp;quot;lol&amp;quot;) | not )) and (.enabled == true)) | {enabled: .enabled, rulenum: .&amp;quot;rule-number&amp;quot;, ruleUID: .uid, comments: .comments} '&lt;br /&gt;
 &lt;br /&gt;
filter objects dictary for uid for accept action&lt;br /&gt;
 jq '.&amp;quot;objects-dictionary&amp;quot;[] | select (.name == &amp;quot;Accept&amp;quot;) | .uid'&lt;br /&gt;
&lt;br /&gt;
get cluster member policy installation targets&lt;br /&gt;
&lt;br /&gt;
 | jq -c '.&amp;quot;installation-targets-revision&amp;quot;[] | .&amp;quot;cluster-members-revision&amp;quot;[] | .&amp;quot;target-name&amp;quot;' | tr -d '&amp;quot;' | tr '\n' ' '&lt;br /&gt;
&lt;br /&gt;
&amp;quot;rulenum&amp;quot;: 1,&lt;br /&gt;
&amp;lt;br&amp;gt;  &amp;quot;comment&amp;quot;: &amp;quot;hahahlol&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===curl===&lt;br /&gt;
&lt;br /&gt;
 curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;userId&amp;quot;: 5, &amp;quot;title&amp;quot;: &amp;quot;Post Title&amp;quot;, &amp;quot;body&amp;quot;: &amp;quot;Post content.&amp;quot;}' &lt;br /&gt;
		&lt;br /&gt;
 curl -X -H POST -H &amp;quot;Content-Type: application/json&amp;quot; -d	'{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' 192.168.1.10:443/login&lt;br /&gt;
	&lt;br /&gt;
 $ '''curl --insecure -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' https://192.168.1.10:443/web_api/login'''&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;uid&amp;quot; : &amp;quot;46a11170-e554-4e58-a5fc-65ff9e38d8cb&amp;quot;,&lt;br /&gt;
 &amp;quot;sid&amp;quot; : &amp;quot;dfq6sI1MxMT1qUhXQ7tafQduKAfJxYkqXCEjaQKjres&amp;quot;,&lt;br /&gt;
 &amp;quot;url&amp;quot; : &amp;quot;https://192.168.1.10:443/web_api&amp;quot;,&lt;br /&gt;
 &amp;quot;session-timeout&amp;quot; : 600,&lt;br /&gt;
 &amp;quot;last-login-was-at&amp;quot; : {&lt;br /&gt;
   &amp;quot;posix&amp;quot; : 1707413218074,&lt;br /&gt;
   &amp;quot;iso-8601&amp;quot; : &amp;quot;2024-02-08T10:26-0700&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;api-server-version&amp;quot; : &amp;quot;1.8.1&amp;quot;,&lt;br /&gt;
 &amp;quot;user-name&amp;quot; : &amp;quot;jsmith&amp;quot;,&lt;br /&gt;
 &amp;quot;user-uid&amp;quot; : &amp;quot;c1109c35-d741-7jg8-98e3-36669b7047a2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 $ '''curl --insecure -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -H &amp;quot;X-chkp-sid: dfq6sI1MxMT1qUhXQ7tafQduKAfJxYkqXCEjaQKjres&amp;quot; -d '{ }' https://192.168.1.10:443/web_api/keepalive'''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;message&amp;quot; : &amp;quot;OK&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==links==&lt;br /&gt;
[https://community.checkpoint.com/t5/General-Management-Topics/What-s-new-with-R80-20M1-Management-API/td-p/39522 What's new with R80.20M1 Management API]&lt;br /&gt;
&lt;br /&gt;
[https://sc1.checkpoint.com/documents/latest/APIs/index.html#introduction~v1.4%20 r80 api reference]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/CheckPointSW/cp_mgmt_api_python_sdk official python open source api]&lt;br /&gt;
&lt;br /&gt;
parsing json return output&lt;br /&gt;
[https://stedolan.github.io/jq/ jq]&lt;br /&gt;
&lt;br /&gt;
[https://community.checkpoint.com/thread/1083 Parsing the output of mgmt_cli]&lt;br /&gt;
&lt;br /&gt;
[https://devqa.io/curl-sending-api-requests/ How to Use CURL to Send API Requests]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/r80_api_notes</id>
		<title>r80 api notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/r80_api_notes"/>
				<updated>2024-03-19T16:24:06Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: /* curl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Management server API setup==&lt;br /&gt;
===enabling for remote IPs===&lt;br /&gt;
done the smartconsole&lt;br /&gt;
&lt;br /&gt;
[[file:cp_mgmt_api_enable_all_IPs.png]]&lt;br /&gt;
&lt;br /&gt;
it can also be enabled via mgmt_cli under &amp;quot;set api-settings&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===status check===&lt;br /&gt;
&lt;br /&gt;
[Expert@chmkmgr1:0]# '''api status'''&lt;br /&gt;
&amp;lt;br&amp;gt;API Settings:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Accessibility:                      Require all granted      &lt;br /&gt;
&amp;lt;br&amp;gt;Automatic Start:                    Enabled       &lt;br /&gt;
&amp;lt;br&amp;gt;Processes:      &lt;br /&gt;
&amp;lt;br&amp;gt;Name      State     PID       More Information&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API       Started   10763               &lt;br /&gt;
&amp;lt;br&amp;gt;CPM       Started   10460     Check Point Security Management Server is running and ready&lt;br /&gt;
&amp;lt;br&amp;gt;FWM       Started   10007               &lt;br /&gt;
&amp;lt;br&amp;gt;Port Details:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;JETTY Internal Port:      50276          &lt;br /&gt;
&amp;lt;br&amp;gt;APACHE Gaia Port:         443            &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Overall API Status: Started&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API readiness test SUCCESSFUL. The server is up and ready to receive connections&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===logging in===&lt;br /&gt;
login and redirect session info to a file for reuse&lt;br /&gt;
 # mgmt_cli login user admin &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
same but read only&lt;br /&gt;
 # mgmt_cli login user admin read-only true &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
===search existing object===&lt;br /&gt;
search objects by IP, return all objects that contain the ip explicitly or within a nework address space/range.&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true  --format json | jq '.objects[] | {name: .name, subnet: .subnet4, mask: .&amp;quot;mask-length4&amp;quot;}'&lt;br /&gt;
&lt;br /&gt;
return only objects with the EXACT ip&lt;br /&gt;
&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true details-level full --format json |  jq '.objects[] | select(.&amp;quot;ipv4-address&amp;quot; == &amp;quot;192.168.1.1&amp;quot;) | .name'&lt;br /&gt;
&lt;br /&gt;
*** details-level full will include more objects, including other stuff like type CpmiHostCkp (built in smartcenter object)&lt;br /&gt;
&lt;br /&gt;
==access rules==&lt;br /&gt;
===notes before you begin===&lt;br /&gt;
when using the parameter &amp;quot;name&amp;quot; to refer to a particular package, it appears to require the following...&lt;br /&gt;
&amp;lt;package name&amp;gt; &amp;lt;layer name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
as shown by the show access-layers command below. Also, the output of show access-rulebase doesn't is limited to 50 rules. If you want more, I think you have to iterate though a set of offets until all the rules are dumped. That dump in json format is a bit confusing. If you have no &amp;quot;headers&amp;quot; or &amp;quot;titles&amp;quot; in the ruleset, you will get 1 rulebase[] array.  If you have headers, each section is its own rulebase[] array with yet another rulebase[] array containing the actual rules.&lt;br /&gt;
&lt;br /&gt;
What this means is the commands below may or may not work as you expect them to. The will likely need to be altered with mgmt_cli &amp;quot;offset&amp;quot; commands and/or modified jq commands... &lt;br /&gt;
&lt;br /&gt;
for example, if you have NO headers in your policy and are running show access-rulebase, it will output the rules with &lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[]'&lt;br /&gt;
&lt;br /&gt;
if you DO HAVE headers, to output the rules you need&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[]'&lt;br /&gt;
&lt;br /&gt;
====rule numbers====&lt;br /&gt;
&lt;br /&gt;
===show access layers?===&lt;br /&gt;
 [Expert@chmkmgr1:0]# '''mgmt_cli show access-layers -s id.txt --format json | jq '.&amp;quot;access-layers&amp;quot;[].name'&lt;br /&gt;
 &amp;quot;dropall Network&amp;quot;'''&lt;br /&gt;
 &amp;quot;Network&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;quot;Network&amp;quot; represents the default policy package Standard&lt;br /&gt;
&lt;br /&gt;
===examples===&lt;br /&gt;
show number of rules in policy&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;&amp;lt;layer&amp;gt;&amp;quot; -s id.txt --format json limit 1 | jq '.total'&lt;br /&gt;
&lt;br /&gt;
display rule with uid = xxx&lt;br /&gt;
&lt;br /&gt;
 # '''mgmt_cli -s id.txt show access-rule layer &amp;quot;My_policy Network&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
display src/dst/service from rule with uid&lt;br /&gt;
 for i in source destination service; do echo $i; mgmt_cli -s id.txt show access-rule layer &amp;quot;&amp;lt;policy_name&amp;gt; &amp;lt;layer_name&amp;gt;&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot; --format json | jq .$i[].name; done&lt;br /&gt;
&lt;br /&gt;
alternate(inferior) way with jq&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.uid == &amp;quot;1de8fab0-4858-4067-977d-1cbb5cd2e55d&amp;quot;) | .&amp;quot;rule-number&amp;quot;'&lt;br /&gt;
 1&lt;br /&gt;
&lt;br /&gt;
display rule number with comment containing a string haha&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.comments | contains(&amp;quot;haha&amp;quot;)) | {rulenum: .&amp;quot;rule-number&amp;quot;, comment: .comments}'&lt;br /&gt;
&lt;br /&gt;
===adding rules===&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xxad70c9-b4c6-4e64-9bfd-d57ac91289f3 name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xx70adc9-b4c6-4e64-9bfd-d57ac91289f3 position top name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; action &amp;quot;Accept&amp;quot; service add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; service.add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===mds / domain===&lt;br /&gt;
&lt;br /&gt;
get list of domains,objects(management and firewalls),object type&lt;br /&gt;
 mgmt_cli.exe -s id.txt show gateways-and-servers --format json limit 500 | jq '.objects.nat,.name,.type' | xargs -n3&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===jq===&lt;br /&gt;
compound jq select using and/or (note: contains returns true/false)&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select (.comments | (contains(&amp;quot;hahaha&amp;quot;) or contains(&amp;quot;lol&amp;quot;)) | not ) | {ruleUID: .uid, comments: .comments} '&lt;br /&gt;
&lt;br /&gt;
and another one...&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select ((.comments | (contains(&amp;quot;hahah&amp;quot;) or contains(&amp;quot;lol&amp;quot;) | not )) and (.enabled == true)) | {enabled: .enabled, rulenum: .&amp;quot;rule-number&amp;quot;, ruleUID: .uid, comments: .comments} '&lt;br /&gt;
 &lt;br /&gt;
filter objects dictary for uid for accept action&lt;br /&gt;
 jq '.&amp;quot;objects-dictionary&amp;quot;[] | select (.name == &amp;quot;Accept&amp;quot;) | .uid'&lt;br /&gt;
&lt;br /&gt;
get cluster member policy installation targets&lt;br /&gt;
&lt;br /&gt;
 | jq -c '.&amp;quot;installation-targets-revision&amp;quot;[] | .&amp;quot;cluster-members-revision&amp;quot;[] | .&amp;quot;target-name&amp;quot;' | tr -d '&amp;quot;' | tr '\n' ' '&lt;br /&gt;
&lt;br /&gt;
&amp;quot;rulenum&amp;quot;: 1,&lt;br /&gt;
&amp;lt;br&amp;gt;  &amp;quot;comment&amp;quot;: &amp;quot;hahahlol&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===curl===&lt;br /&gt;
&lt;br /&gt;
 curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;userId&amp;quot;: 5, &amp;quot;title&amp;quot;: &amp;quot;Post Title&amp;quot;, &amp;quot;body&amp;quot;: &amp;quot;Post content.&amp;quot;}' &lt;br /&gt;
		&lt;br /&gt;
 curl -X -H POST -H &amp;quot;Content-Type: application/json&amp;quot; -d	'{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' 192.168.1.10:443/login&lt;br /&gt;
	&lt;br /&gt;
 $ '''curl --insecure -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' https://192.168.1.10:443/web_api/login'''&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;uid&amp;quot; : &amp;quot;46a11170-e554-4e58-a5fc-65ff9e38d8cb&amp;quot;,&lt;br /&gt;
 &amp;quot;sid&amp;quot; : &amp;quot;dfq6sI1MxMT1qUhXQ7tafQduKAfJxYkqXCEjaQKjres&amp;quot;,&lt;br /&gt;
 &amp;quot;url&amp;quot; : &amp;quot;https://10.128.1.81:443/web_api&amp;quot;,&lt;br /&gt;
 &amp;quot;session-timeout&amp;quot; : 600,&lt;br /&gt;
 &amp;quot;last-login-was-at&amp;quot; : {&lt;br /&gt;
   &amp;quot;posix&amp;quot; : 1707413218074,&lt;br /&gt;
   &amp;quot;iso-8601&amp;quot; : &amp;quot;2024-02-08T10:26-0700&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;api-server-version&amp;quot; : &amp;quot;1.8.1&amp;quot;,&lt;br /&gt;
 &amp;quot;user-name&amp;quot; : &amp;quot;jsmith&amp;quot;,&lt;br /&gt;
 &amp;quot;user-uid&amp;quot; : &amp;quot;c1109c35-d741-7jg8-98e3-36669b7047a2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 $ '''curl --insecure -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -H &amp;quot;X-chkp-sid: dfq6sI1MxMT1qUhXQ7tafQduKAfJxYkqXCEjaQKjres&amp;quot; -d '{ }' https://192.168.1.10:443/web_api/keepalive'''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;message&amp;quot; : &amp;quot;OK&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==links==&lt;br /&gt;
[https://community.checkpoint.com/t5/General-Management-Topics/What-s-new-with-R80-20M1-Management-API/td-p/39522 What's new with R80.20M1 Management API]&lt;br /&gt;
&lt;br /&gt;
[https://sc1.checkpoint.com/documents/latest/APIs/index.html#introduction~v1.4%20 r80 api reference]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/CheckPointSW/cp_mgmt_api_python_sdk official python open source api]&lt;br /&gt;
&lt;br /&gt;
parsing json return output&lt;br /&gt;
[https://stedolan.github.io/jq/ jq]&lt;br /&gt;
&lt;br /&gt;
[https://community.checkpoint.com/thread/1083 Parsing the output of mgmt_cli]&lt;br /&gt;
&lt;br /&gt;
[https://devqa.io/curl-sending-api-requests/ How to Use CURL to Send API Requests]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/r80_api_notes</id>
		<title>r80 api notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/r80_api_notes"/>
				<updated>2024-03-19T16:23:09Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: /* curl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Management server API setup==&lt;br /&gt;
===enabling for remote IPs===&lt;br /&gt;
done the smartconsole&lt;br /&gt;
&lt;br /&gt;
[[file:cp_mgmt_api_enable_all_IPs.png]]&lt;br /&gt;
&lt;br /&gt;
it can also be enabled via mgmt_cli under &amp;quot;set api-settings&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===status check===&lt;br /&gt;
&lt;br /&gt;
[Expert@chmkmgr1:0]# '''api status'''&lt;br /&gt;
&amp;lt;br&amp;gt;API Settings:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Accessibility:                      Require all granted      &lt;br /&gt;
&amp;lt;br&amp;gt;Automatic Start:                    Enabled       &lt;br /&gt;
&amp;lt;br&amp;gt;Processes:      &lt;br /&gt;
&amp;lt;br&amp;gt;Name      State     PID       More Information&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API       Started   10763               &lt;br /&gt;
&amp;lt;br&amp;gt;CPM       Started   10460     Check Point Security Management Server is running and ready&lt;br /&gt;
&amp;lt;br&amp;gt;FWM       Started   10007               &lt;br /&gt;
&amp;lt;br&amp;gt;Port Details:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;JETTY Internal Port:      50276          &lt;br /&gt;
&amp;lt;br&amp;gt;APACHE Gaia Port:         443            &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Overall API Status: Started&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API readiness test SUCCESSFUL. The server is up and ready to receive connections&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===logging in===&lt;br /&gt;
login and redirect session info to a file for reuse&lt;br /&gt;
 # mgmt_cli login user admin &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
same but read only&lt;br /&gt;
 # mgmt_cli login user admin read-only true &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
===search existing object===&lt;br /&gt;
search objects by IP, return all objects that contain the ip explicitly or within a nework address space/range.&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true  --format json | jq '.objects[] | {name: .name, subnet: .subnet4, mask: .&amp;quot;mask-length4&amp;quot;}'&lt;br /&gt;
&lt;br /&gt;
return only objects with the EXACT ip&lt;br /&gt;
&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true details-level full --format json |  jq '.objects[] | select(.&amp;quot;ipv4-address&amp;quot; == &amp;quot;192.168.1.1&amp;quot;) | .name'&lt;br /&gt;
&lt;br /&gt;
*** details-level full will include more objects, including other stuff like type CpmiHostCkp (built in smartcenter object)&lt;br /&gt;
&lt;br /&gt;
==access rules==&lt;br /&gt;
===notes before you begin===&lt;br /&gt;
when using the parameter &amp;quot;name&amp;quot; to refer to a particular package, it appears to require the following...&lt;br /&gt;
&amp;lt;package name&amp;gt; &amp;lt;layer name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
as shown by the show access-layers command below. Also, the output of show access-rulebase doesn't is limited to 50 rules. If you want more, I think you have to iterate though a set of offets until all the rules are dumped. That dump in json format is a bit confusing. If you have no &amp;quot;headers&amp;quot; or &amp;quot;titles&amp;quot; in the ruleset, you will get 1 rulebase[] array.  If you have headers, each section is its own rulebase[] array with yet another rulebase[] array containing the actual rules.&lt;br /&gt;
&lt;br /&gt;
What this means is the commands below may or may not work as you expect them to. The will likely need to be altered with mgmt_cli &amp;quot;offset&amp;quot; commands and/or modified jq commands... &lt;br /&gt;
&lt;br /&gt;
for example, if you have NO headers in your policy and are running show access-rulebase, it will output the rules with &lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[]'&lt;br /&gt;
&lt;br /&gt;
if you DO HAVE headers, to output the rules you need&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[]'&lt;br /&gt;
&lt;br /&gt;
====rule numbers====&lt;br /&gt;
&lt;br /&gt;
===show access layers?===&lt;br /&gt;
 [Expert@chmkmgr1:0]# '''mgmt_cli show access-layers -s id.txt --format json | jq '.&amp;quot;access-layers&amp;quot;[].name'&lt;br /&gt;
 &amp;quot;dropall Network&amp;quot;'''&lt;br /&gt;
 &amp;quot;Network&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;quot;Network&amp;quot; represents the default policy package Standard&lt;br /&gt;
&lt;br /&gt;
===examples===&lt;br /&gt;
show number of rules in policy&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;&amp;lt;layer&amp;gt;&amp;quot; -s id.txt --format json limit 1 | jq '.total'&lt;br /&gt;
&lt;br /&gt;
display rule with uid = xxx&lt;br /&gt;
&lt;br /&gt;
 # '''mgmt_cli -s id.txt show access-rule layer &amp;quot;My_policy Network&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
display src/dst/service from rule with uid&lt;br /&gt;
 for i in source destination service; do echo $i; mgmt_cli -s id.txt show access-rule layer &amp;quot;&amp;lt;policy_name&amp;gt; &amp;lt;layer_name&amp;gt;&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot; --format json | jq .$i[].name; done&lt;br /&gt;
&lt;br /&gt;
alternate(inferior) way with jq&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.uid == &amp;quot;1de8fab0-4858-4067-977d-1cbb5cd2e55d&amp;quot;) | .&amp;quot;rule-number&amp;quot;'&lt;br /&gt;
 1&lt;br /&gt;
&lt;br /&gt;
display rule number with comment containing a string haha&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.comments | contains(&amp;quot;haha&amp;quot;)) | {rulenum: .&amp;quot;rule-number&amp;quot;, comment: .comments}'&lt;br /&gt;
&lt;br /&gt;
===adding rules===&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xxad70c9-b4c6-4e64-9bfd-d57ac91289f3 name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xx70adc9-b4c6-4e64-9bfd-d57ac91289f3 position top name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; action &amp;quot;Accept&amp;quot; service add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; service.add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===mds / domain===&lt;br /&gt;
&lt;br /&gt;
get list of domains,objects(management and firewalls),object type&lt;br /&gt;
 mgmt_cli.exe -s id.txt show gateways-and-servers --format json limit 500 | jq '.objects.nat,.name,.type' | xargs -n3&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===jq===&lt;br /&gt;
compound jq select using and/or (note: contains returns true/false)&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select (.comments | (contains(&amp;quot;hahaha&amp;quot;) or contains(&amp;quot;lol&amp;quot;)) | not ) | {ruleUID: .uid, comments: .comments} '&lt;br /&gt;
&lt;br /&gt;
and another one...&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select ((.comments | (contains(&amp;quot;hahah&amp;quot;) or contains(&amp;quot;lol&amp;quot;) | not )) and (.enabled == true)) | {enabled: .enabled, rulenum: .&amp;quot;rule-number&amp;quot;, ruleUID: .uid, comments: .comments} '&lt;br /&gt;
 &lt;br /&gt;
filter objects dictary for uid for accept action&lt;br /&gt;
 jq '.&amp;quot;objects-dictionary&amp;quot;[] | select (.name == &amp;quot;Accept&amp;quot;) | .uid'&lt;br /&gt;
&lt;br /&gt;
get cluster member policy installation targets&lt;br /&gt;
&lt;br /&gt;
 | jq -c '.&amp;quot;installation-targets-revision&amp;quot;[] | .&amp;quot;cluster-members-revision&amp;quot;[] | .&amp;quot;target-name&amp;quot;' | tr -d '&amp;quot;' | tr '\n' ' '&lt;br /&gt;
&lt;br /&gt;
&amp;quot;rulenum&amp;quot;: 1,&lt;br /&gt;
&amp;lt;br&amp;gt;  &amp;quot;comment&amp;quot;: &amp;quot;hahahlol&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===curl===&lt;br /&gt;
&lt;br /&gt;
 curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;userId&amp;quot;: 5, &amp;quot;title&amp;quot;: &amp;quot;Post Title&amp;quot;, &amp;quot;body&amp;quot;: &amp;quot;Post content.&amp;quot;}' &lt;br /&gt;
		&lt;br /&gt;
 curl -X -H POST -H &amp;quot;Content-Type: application/json&amp;quot; -d	'{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' 192.168.1.10:443/login&lt;br /&gt;
	&lt;br /&gt;
 $ '''curl --insecure -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' https://192.168.1.10:443/web_api/login'''&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;uid&amp;quot; : &amp;quot;46a11170-e554-4e58-a5fc-65ff9e38d8cb&amp;quot;,&lt;br /&gt;
 &amp;quot;sid&amp;quot; : &amp;quot;dfq6sI1MxMT1qUhXQ7tafQduKAfJxYkqXCEjaQKjres&amp;quot;,&lt;br /&gt;
 &amp;quot;url&amp;quot; : &amp;quot;https://10.128.1.81:443/web_api&amp;quot;,&lt;br /&gt;
 &amp;quot;session-timeout&amp;quot; : 600,&lt;br /&gt;
 &amp;quot;last-login-was-at&amp;quot; : {&lt;br /&gt;
   &amp;quot;posix&amp;quot; : 1707413218074,&lt;br /&gt;
   &amp;quot;iso-8601&amp;quot; : &amp;quot;2024-02-08T10:26-0700&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;api-server-version&amp;quot; : &amp;quot;1.8.1&amp;quot;,&lt;br /&gt;
 &amp;quot;user-name&amp;quot; : &amp;quot;jsmith&amp;quot;,&lt;br /&gt;
 &amp;quot;user-uid&amp;quot; : &amp;quot;c1109c35-d741-7jg8-98e3-36669b7047a2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 $ '''curl --insecure -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -H &amp;quot;X-chkp-sid: $SESSIONID&amp;quot; -d '{ }' https://192.168.1.10:443/web_api/keepalive'''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;message&amp;quot; : &amp;quot;OK&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==links==&lt;br /&gt;
[https://community.checkpoint.com/t5/General-Management-Topics/What-s-new-with-R80-20M1-Management-API/td-p/39522 What's new with R80.20M1 Management API]&lt;br /&gt;
&lt;br /&gt;
[https://sc1.checkpoint.com/documents/latest/APIs/index.html#introduction~v1.4%20 r80 api reference]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/CheckPointSW/cp_mgmt_api_python_sdk official python open source api]&lt;br /&gt;
&lt;br /&gt;
parsing json return output&lt;br /&gt;
[https://stedolan.github.io/jq/ jq]&lt;br /&gt;
&lt;br /&gt;
[https://community.checkpoint.com/thread/1083 Parsing the output of mgmt_cli]&lt;br /&gt;
&lt;br /&gt;
[https://devqa.io/curl-sending-api-requests/ How to Use CURL to Send API Requests]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/r80_api_notes</id>
		<title>r80 api notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/r80_api_notes"/>
				<updated>2024-03-19T16:15:28Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: /* curl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Management server API setup==&lt;br /&gt;
===enabling for remote IPs===&lt;br /&gt;
done the smartconsole&lt;br /&gt;
&lt;br /&gt;
[[file:cp_mgmt_api_enable_all_IPs.png]]&lt;br /&gt;
&lt;br /&gt;
it can also be enabled via mgmt_cli under &amp;quot;set api-settings&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===status check===&lt;br /&gt;
&lt;br /&gt;
[Expert@chmkmgr1:0]# '''api status'''&lt;br /&gt;
&amp;lt;br&amp;gt;API Settings:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Accessibility:                      Require all granted      &lt;br /&gt;
&amp;lt;br&amp;gt;Automatic Start:                    Enabled       &lt;br /&gt;
&amp;lt;br&amp;gt;Processes:      &lt;br /&gt;
&amp;lt;br&amp;gt;Name      State     PID       More Information&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API       Started   10763               &lt;br /&gt;
&amp;lt;br&amp;gt;CPM       Started   10460     Check Point Security Management Server is running and ready&lt;br /&gt;
&amp;lt;br&amp;gt;FWM       Started   10007               &lt;br /&gt;
&amp;lt;br&amp;gt;Port Details:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;JETTY Internal Port:      50276          &lt;br /&gt;
&amp;lt;br&amp;gt;APACHE Gaia Port:         443            &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Overall API Status: Started&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API readiness test SUCCESSFUL. The server is up and ready to receive connections&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===logging in===&lt;br /&gt;
login and redirect session info to a file for reuse&lt;br /&gt;
 # mgmt_cli login user admin &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
same but read only&lt;br /&gt;
 # mgmt_cli login user admin read-only true &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
===search existing object===&lt;br /&gt;
search objects by IP, return all objects that contain the ip explicitly or within a nework address space/range.&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true  --format json | jq '.objects[] | {name: .name, subnet: .subnet4, mask: .&amp;quot;mask-length4&amp;quot;}'&lt;br /&gt;
&lt;br /&gt;
return only objects with the EXACT ip&lt;br /&gt;
&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true details-level full --format json |  jq '.objects[] | select(.&amp;quot;ipv4-address&amp;quot; == &amp;quot;192.168.1.1&amp;quot;) | .name'&lt;br /&gt;
&lt;br /&gt;
*** details-level full will include more objects, including other stuff like type CpmiHostCkp (built in smartcenter object)&lt;br /&gt;
&lt;br /&gt;
==access rules==&lt;br /&gt;
===notes before you begin===&lt;br /&gt;
when using the parameter &amp;quot;name&amp;quot; to refer to a particular package, it appears to require the following...&lt;br /&gt;
&amp;lt;package name&amp;gt; &amp;lt;layer name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
as shown by the show access-layers command below. Also, the output of show access-rulebase doesn't is limited to 50 rules. If you want more, I think you have to iterate though a set of offets until all the rules are dumped. That dump in json format is a bit confusing. If you have no &amp;quot;headers&amp;quot; or &amp;quot;titles&amp;quot; in the ruleset, you will get 1 rulebase[] array.  If you have headers, each section is its own rulebase[] array with yet another rulebase[] array containing the actual rules.&lt;br /&gt;
&lt;br /&gt;
What this means is the commands below may or may not work as you expect them to. The will likely need to be altered with mgmt_cli &amp;quot;offset&amp;quot; commands and/or modified jq commands... &lt;br /&gt;
&lt;br /&gt;
for example, if you have NO headers in your policy and are running show access-rulebase, it will output the rules with &lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[]'&lt;br /&gt;
&lt;br /&gt;
if you DO HAVE headers, to output the rules you need&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[]'&lt;br /&gt;
&lt;br /&gt;
====rule numbers====&lt;br /&gt;
&lt;br /&gt;
===show access layers?===&lt;br /&gt;
 [Expert@chmkmgr1:0]# '''mgmt_cli show access-layers -s id.txt --format json | jq '.&amp;quot;access-layers&amp;quot;[].name'&lt;br /&gt;
 &amp;quot;dropall Network&amp;quot;'''&lt;br /&gt;
 &amp;quot;Network&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;quot;Network&amp;quot; represents the default policy package Standard&lt;br /&gt;
&lt;br /&gt;
===examples===&lt;br /&gt;
show number of rules in policy&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;&amp;lt;layer&amp;gt;&amp;quot; -s id.txt --format json limit 1 | jq '.total'&lt;br /&gt;
&lt;br /&gt;
display rule with uid = xxx&lt;br /&gt;
&lt;br /&gt;
 # '''mgmt_cli -s id.txt show access-rule layer &amp;quot;My_policy Network&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
display src/dst/service from rule with uid&lt;br /&gt;
 for i in source destination service; do echo $i; mgmt_cli -s id.txt show access-rule layer &amp;quot;&amp;lt;policy_name&amp;gt; &amp;lt;layer_name&amp;gt;&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot; --format json | jq .$i[].name; done&lt;br /&gt;
&lt;br /&gt;
alternate(inferior) way with jq&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.uid == &amp;quot;1de8fab0-4858-4067-977d-1cbb5cd2e55d&amp;quot;) | .&amp;quot;rule-number&amp;quot;'&lt;br /&gt;
 1&lt;br /&gt;
&lt;br /&gt;
display rule number with comment containing a string haha&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.comments | contains(&amp;quot;haha&amp;quot;)) | {rulenum: .&amp;quot;rule-number&amp;quot;, comment: .comments}'&lt;br /&gt;
&lt;br /&gt;
===adding rules===&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xxad70c9-b4c6-4e64-9bfd-d57ac91289f3 name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xx70adc9-b4c6-4e64-9bfd-d57ac91289f3 position top name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; action &amp;quot;Accept&amp;quot; service add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; service.add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===mds / domain===&lt;br /&gt;
&lt;br /&gt;
get list of domains,objects(management and firewalls),object type&lt;br /&gt;
 mgmt_cli.exe -s id.txt show gateways-and-servers --format json limit 500 | jq '.objects.nat,.name,.type' | xargs -n3&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===jq===&lt;br /&gt;
compound jq select using and/or (note: contains returns true/false)&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select (.comments | (contains(&amp;quot;hahaha&amp;quot;) or contains(&amp;quot;lol&amp;quot;)) | not ) | {ruleUID: .uid, comments: .comments} '&lt;br /&gt;
&lt;br /&gt;
and another one...&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select ((.comments | (contains(&amp;quot;hahah&amp;quot;) or contains(&amp;quot;lol&amp;quot;) | not )) and (.enabled == true)) | {enabled: .enabled, rulenum: .&amp;quot;rule-number&amp;quot;, ruleUID: .uid, comments: .comments} '&lt;br /&gt;
 &lt;br /&gt;
filter objects dictary for uid for accept action&lt;br /&gt;
 jq '.&amp;quot;objects-dictionary&amp;quot;[] | select (.name == &amp;quot;Accept&amp;quot;) | .uid'&lt;br /&gt;
&lt;br /&gt;
get cluster member policy installation targets&lt;br /&gt;
&lt;br /&gt;
 | jq -c '.&amp;quot;installation-targets-revision&amp;quot;[] | .&amp;quot;cluster-members-revision&amp;quot;[] | .&amp;quot;target-name&amp;quot;' | tr -d '&amp;quot;' | tr '\n' ' '&lt;br /&gt;
&lt;br /&gt;
&amp;quot;rulenum&amp;quot;: 1,&lt;br /&gt;
&amp;lt;br&amp;gt;  &amp;quot;comment&amp;quot;: &amp;quot;hahahlol&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===curl===&lt;br /&gt;
&lt;br /&gt;
 curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;userId&amp;quot;: 5, &amp;quot;title&amp;quot;: &amp;quot;Post Title&amp;quot;, &amp;quot;body&amp;quot;: &amp;quot;Post content.&amp;quot;}' &lt;br /&gt;
		&lt;br /&gt;
 curl -X -H POST -H &amp;quot;Content-Type: application/json&amp;quot; -d	'{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' 192.168.1.10:443/login&lt;br /&gt;
	&lt;br /&gt;
 $ '''curl --insecure -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' https://192.168.1.10:443/web_api/login'''&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;uid&amp;quot; : &amp;quot;46a11170-e554-4e58-a5fc-65ff9e38d8cb&amp;quot;,&lt;br /&gt;
 &amp;quot;sid&amp;quot; : &amp;quot;dfq6sI1MxMT1qUhXQ7tafQduKAfJxYkqXCEjaQKjres&amp;quot;,&lt;br /&gt;
 &amp;quot;url&amp;quot; : &amp;quot;https://10.128.1.81:443/web_api&amp;quot;,&lt;br /&gt;
 &amp;quot;session-timeout&amp;quot; : 600,&lt;br /&gt;
 &amp;quot;last-login-was-at&amp;quot; : {&lt;br /&gt;
   &amp;quot;posix&amp;quot; : 1707413218074,&lt;br /&gt;
   &amp;quot;iso-8601&amp;quot; : &amp;quot;2024-02-08T10:26-0700&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;api-server-version&amp;quot; : &amp;quot;1.8.1&amp;quot;,&lt;br /&gt;
 &amp;quot;user-name&amp;quot; : &amp;quot;jsmith&amp;quot;,&lt;br /&gt;
 &amp;quot;user-uid&amp;quot; : &amp;quot;c1109c35-d741-7jg8-98e3-36669b7047a2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lol&lt;br /&gt;
&lt;br /&gt;
==links==&lt;br /&gt;
[https://community.checkpoint.com/t5/General-Management-Topics/What-s-new-with-R80-20M1-Management-API/td-p/39522 What's new with R80.20M1 Management API]&lt;br /&gt;
&lt;br /&gt;
[https://sc1.checkpoint.com/documents/latest/APIs/index.html#introduction~v1.4%20 r80 api reference]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/CheckPointSW/cp_mgmt_api_python_sdk official python open source api]&lt;br /&gt;
&lt;br /&gt;
parsing json return output&lt;br /&gt;
[https://stedolan.github.io/jq/ jq]&lt;br /&gt;
&lt;br /&gt;
[https://community.checkpoint.com/thread/1083 Parsing the output of mgmt_cli]&lt;br /&gt;
&lt;br /&gt;
[https://devqa.io/curl-sending-api-requests/ How to Use CURL to Send API Requests]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/r80_api_notes</id>
		<title>r80 api notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/r80_api_notes"/>
				<updated>2024-03-19T16:14:52Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: /* curl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Management server API setup==&lt;br /&gt;
===enabling for remote IPs===&lt;br /&gt;
done the smartconsole&lt;br /&gt;
&lt;br /&gt;
[[file:cp_mgmt_api_enable_all_IPs.png]]&lt;br /&gt;
&lt;br /&gt;
it can also be enabled via mgmt_cli under &amp;quot;set api-settings&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===status check===&lt;br /&gt;
&lt;br /&gt;
[Expert@chmkmgr1:0]# '''api status'''&lt;br /&gt;
&amp;lt;br&amp;gt;API Settings:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Accessibility:                      Require all granted      &lt;br /&gt;
&amp;lt;br&amp;gt;Automatic Start:                    Enabled       &lt;br /&gt;
&amp;lt;br&amp;gt;Processes:      &lt;br /&gt;
&amp;lt;br&amp;gt;Name      State     PID       More Information&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API       Started   10763               &lt;br /&gt;
&amp;lt;br&amp;gt;CPM       Started   10460     Check Point Security Management Server is running and ready&lt;br /&gt;
&amp;lt;br&amp;gt;FWM       Started   10007               &lt;br /&gt;
&amp;lt;br&amp;gt;Port Details:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;JETTY Internal Port:      50276          &lt;br /&gt;
&amp;lt;br&amp;gt;APACHE Gaia Port:         443            &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Overall API Status: Started&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API readiness test SUCCESSFUL. The server is up and ready to receive connections&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===logging in===&lt;br /&gt;
login and redirect session info to a file for reuse&lt;br /&gt;
 # mgmt_cli login user admin &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
same but read only&lt;br /&gt;
 # mgmt_cli login user admin read-only true &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
===search existing object===&lt;br /&gt;
search objects by IP, return all objects that contain the ip explicitly or within a nework address space/range.&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true  --format json | jq '.objects[] | {name: .name, subnet: .subnet4, mask: .&amp;quot;mask-length4&amp;quot;}'&lt;br /&gt;
&lt;br /&gt;
return only objects with the EXACT ip&lt;br /&gt;
&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true details-level full --format json |  jq '.objects[] | select(.&amp;quot;ipv4-address&amp;quot; == &amp;quot;192.168.1.1&amp;quot;) | .name'&lt;br /&gt;
&lt;br /&gt;
*** details-level full will include more objects, including other stuff like type CpmiHostCkp (built in smartcenter object)&lt;br /&gt;
&lt;br /&gt;
==access rules==&lt;br /&gt;
===notes before you begin===&lt;br /&gt;
when using the parameter &amp;quot;name&amp;quot; to refer to a particular package, it appears to require the following...&lt;br /&gt;
&amp;lt;package name&amp;gt; &amp;lt;layer name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
as shown by the show access-layers command below. Also, the output of show access-rulebase doesn't is limited to 50 rules. If you want more, I think you have to iterate though a set of offets until all the rules are dumped. That dump in json format is a bit confusing. If you have no &amp;quot;headers&amp;quot; or &amp;quot;titles&amp;quot; in the ruleset, you will get 1 rulebase[] array.  If you have headers, each section is its own rulebase[] array with yet another rulebase[] array containing the actual rules.&lt;br /&gt;
&lt;br /&gt;
What this means is the commands below may or may not work as you expect them to. The will likely need to be altered with mgmt_cli &amp;quot;offset&amp;quot; commands and/or modified jq commands... &lt;br /&gt;
&lt;br /&gt;
for example, if you have NO headers in your policy and are running show access-rulebase, it will output the rules with &lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[]'&lt;br /&gt;
&lt;br /&gt;
if you DO HAVE headers, to output the rules you need&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[]'&lt;br /&gt;
&lt;br /&gt;
====rule numbers====&lt;br /&gt;
&lt;br /&gt;
===show access layers?===&lt;br /&gt;
 [Expert@chmkmgr1:0]# '''mgmt_cli show access-layers -s id.txt --format json | jq '.&amp;quot;access-layers&amp;quot;[].name'&lt;br /&gt;
 &amp;quot;dropall Network&amp;quot;'''&lt;br /&gt;
 &amp;quot;Network&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;quot;Network&amp;quot; represents the default policy package Standard&lt;br /&gt;
&lt;br /&gt;
===examples===&lt;br /&gt;
show number of rules in policy&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;&amp;lt;layer&amp;gt;&amp;quot; -s id.txt --format json limit 1 | jq '.total'&lt;br /&gt;
&lt;br /&gt;
display rule with uid = xxx&lt;br /&gt;
&lt;br /&gt;
 # '''mgmt_cli -s id.txt show access-rule layer &amp;quot;My_policy Network&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
display src/dst/service from rule with uid&lt;br /&gt;
 for i in source destination service; do echo $i; mgmt_cli -s id.txt show access-rule layer &amp;quot;&amp;lt;policy_name&amp;gt; &amp;lt;layer_name&amp;gt;&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot; --format json | jq .$i[].name; done&lt;br /&gt;
&lt;br /&gt;
alternate(inferior) way with jq&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.uid == &amp;quot;1de8fab0-4858-4067-977d-1cbb5cd2e55d&amp;quot;) | .&amp;quot;rule-number&amp;quot;'&lt;br /&gt;
 1&lt;br /&gt;
&lt;br /&gt;
display rule number with comment containing a string haha&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.comments | contains(&amp;quot;haha&amp;quot;)) | {rulenum: .&amp;quot;rule-number&amp;quot;, comment: .comments}'&lt;br /&gt;
&lt;br /&gt;
===adding rules===&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xxad70c9-b4c6-4e64-9bfd-d57ac91289f3 name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xx70adc9-b4c6-4e64-9bfd-d57ac91289f3 position top name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; action &amp;quot;Accept&amp;quot; service add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; service.add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===mds / domain===&lt;br /&gt;
&lt;br /&gt;
get list of domains,objects(management and firewalls),object type&lt;br /&gt;
 mgmt_cli.exe -s id.txt show gateways-and-servers --format json limit 500 | jq '.objects.nat,.name,.type' | xargs -n3&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===jq===&lt;br /&gt;
compound jq select using and/or (note: contains returns true/false)&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select (.comments | (contains(&amp;quot;hahaha&amp;quot;) or contains(&amp;quot;lol&amp;quot;)) | not ) | {ruleUID: .uid, comments: .comments} '&lt;br /&gt;
&lt;br /&gt;
and another one...&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select ((.comments | (contains(&amp;quot;hahah&amp;quot;) or contains(&amp;quot;lol&amp;quot;) | not )) and (.enabled == true)) | {enabled: .enabled, rulenum: .&amp;quot;rule-number&amp;quot;, ruleUID: .uid, comments: .comments} '&lt;br /&gt;
 &lt;br /&gt;
filter objects dictary for uid for accept action&lt;br /&gt;
 jq '.&amp;quot;objects-dictionary&amp;quot;[] | select (.name == &amp;quot;Accept&amp;quot;) | .uid'&lt;br /&gt;
&lt;br /&gt;
get cluster member policy installation targets&lt;br /&gt;
&lt;br /&gt;
 | jq -c '.&amp;quot;installation-targets-revision&amp;quot;[] | .&amp;quot;cluster-members-revision&amp;quot;[] | .&amp;quot;target-name&amp;quot;' | tr -d '&amp;quot;' | tr '\n' ' '&lt;br /&gt;
&lt;br /&gt;
&amp;quot;rulenum&amp;quot;: 1,&lt;br /&gt;
&amp;lt;br&amp;gt;  &amp;quot;comment&amp;quot;: &amp;quot;hahahlol&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===curl===&lt;br /&gt;
&lt;br /&gt;
 curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;userId&amp;quot;: 5, &amp;quot;title&amp;quot;: &amp;quot;Post Title&amp;quot;, &amp;quot;body&amp;quot;: &amp;quot;Post content.&amp;quot;}' &lt;br /&gt;
		&lt;br /&gt;
 curl -X -H POST -H &amp;quot;Content-Type: application/json&amp;quot; -d	'{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' 192.168.1.10:443/login&lt;br /&gt;
	&lt;br /&gt;
 $ '''curl --insecure -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' https://192.168.1.10:443/web_api/login'''&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;uid&amp;quot; : &amp;quot;46a11170-e554-4e58-a5fc-65ff9e38d8cb&amp;quot;,&lt;br /&gt;
 &amp;quot;sid&amp;quot; : &amp;quot;dfq6sI1MxMT1qUhXQ7tafQduKAfJxYkqXCEjaQKjres&amp;quot;,&lt;br /&gt;
 &amp;quot;url&amp;quot; : &amp;quot;https://10.128.1.81:443/web_api&amp;quot;,&lt;br /&gt;
 &amp;quot;session-timeout&amp;quot; : 600,&lt;br /&gt;
 &amp;quot;last-login-was-at&amp;quot; : {&lt;br /&gt;
   &amp;quot;posix&amp;quot; : 1707413218074,&lt;br /&gt;
   &amp;quot;iso-8601&amp;quot; : &amp;quot;2024-02-08T10:26-0700&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;api-server-version&amp;quot; : &amp;quot;1.8.1&amp;quot;,&lt;br /&gt;
 &amp;quot;user-name&amp;quot; : &amp;quot;jsmith&amp;quot;,&lt;br /&gt;
 &amp;quot;user-uid&amp;quot; : &amp;quot;c1109c35-d741-7jg8-98e3-36669b7047a2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==links==&lt;br /&gt;
[https://community.checkpoint.com/t5/General-Management-Topics/What-s-new-with-R80-20M1-Management-API/td-p/39522 What's new with R80.20M1 Management API]&lt;br /&gt;
&lt;br /&gt;
[https://sc1.checkpoint.com/documents/latest/APIs/index.html#introduction~v1.4%20 r80 api reference]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/CheckPointSW/cp_mgmt_api_python_sdk official python open source api]&lt;br /&gt;
&lt;br /&gt;
parsing json return output&lt;br /&gt;
[https://stedolan.github.io/jq/ jq]&lt;br /&gt;
&lt;br /&gt;
[https://community.checkpoint.com/thread/1083 Parsing the output of mgmt_cli]&lt;br /&gt;
&lt;br /&gt;
[https://devqa.io/curl-sending-api-requests/ How to Use CURL to Send API Requests]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/r80_api_notes</id>
		<title>r80 api notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/r80_api_notes"/>
				<updated>2024-03-19T16:14:44Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: /* curl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Management server API setup==&lt;br /&gt;
===enabling for remote IPs===&lt;br /&gt;
done the smartconsole&lt;br /&gt;
&lt;br /&gt;
[[file:cp_mgmt_api_enable_all_IPs.png]]&lt;br /&gt;
&lt;br /&gt;
it can also be enabled via mgmt_cli under &amp;quot;set api-settings&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===status check===&lt;br /&gt;
&lt;br /&gt;
[Expert@chmkmgr1:0]# '''api status'''&lt;br /&gt;
&amp;lt;br&amp;gt;API Settings:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Accessibility:                      Require all granted      &lt;br /&gt;
&amp;lt;br&amp;gt;Automatic Start:                    Enabled       &lt;br /&gt;
&amp;lt;br&amp;gt;Processes:      &lt;br /&gt;
&amp;lt;br&amp;gt;Name      State     PID       More Information&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API       Started   10763               &lt;br /&gt;
&amp;lt;br&amp;gt;CPM       Started   10460     Check Point Security Management Server is running and ready&lt;br /&gt;
&amp;lt;br&amp;gt;FWM       Started   10007               &lt;br /&gt;
&amp;lt;br&amp;gt;Port Details:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;JETTY Internal Port:      50276          &lt;br /&gt;
&amp;lt;br&amp;gt;APACHE Gaia Port:         443            &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Overall API Status: Started&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API readiness test SUCCESSFUL. The server is up and ready to receive connections&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===logging in===&lt;br /&gt;
login and redirect session info to a file for reuse&lt;br /&gt;
 # mgmt_cli login user admin &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
same but read only&lt;br /&gt;
 # mgmt_cli login user admin read-only true &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
===search existing object===&lt;br /&gt;
search objects by IP, return all objects that contain the ip explicitly or within a nework address space/range.&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true  --format json | jq '.objects[] | {name: .name, subnet: .subnet4, mask: .&amp;quot;mask-length4&amp;quot;}'&lt;br /&gt;
&lt;br /&gt;
return only objects with the EXACT ip&lt;br /&gt;
&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true details-level full --format json |  jq '.objects[] | select(.&amp;quot;ipv4-address&amp;quot; == &amp;quot;192.168.1.1&amp;quot;) | .name'&lt;br /&gt;
&lt;br /&gt;
*** details-level full will include more objects, including other stuff like type CpmiHostCkp (built in smartcenter object)&lt;br /&gt;
&lt;br /&gt;
==access rules==&lt;br /&gt;
===notes before you begin===&lt;br /&gt;
when using the parameter &amp;quot;name&amp;quot; to refer to a particular package, it appears to require the following...&lt;br /&gt;
&amp;lt;package name&amp;gt; &amp;lt;layer name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
as shown by the show access-layers command below. Also, the output of show access-rulebase doesn't is limited to 50 rules. If you want more, I think you have to iterate though a set of offets until all the rules are dumped. That dump in json format is a bit confusing. If you have no &amp;quot;headers&amp;quot; or &amp;quot;titles&amp;quot; in the ruleset, you will get 1 rulebase[] array.  If you have headers, each section is its own rulebase[] array with yet another rulebase[] array containing the actual rules.&lt;br /&gt;
&lt;br /&gt;
What this means is the commands below may or may not work as you expect them to. The will likely need to be altered with mgmt_cli &amp;quot;offset&amp;quot; commands and/or modified jq commands... &lt;br /&gt;
&lt;br /&gt;
for example, if you have NO headers in your policy and are running show access-rulebase, it will output the rules with &lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[]'&lt;br /&gt;
&lt;br /&gt;
if you DO HAVE headers, to output the rules you need&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[]'&lt;br /&gt;
&lt;br /&gt;
====rule numbers====&lt;br /&gt;
&lt;br /&gt;
===show access layers?===&lt;br /&gt;
 [Expert@chmkmgr1:0]# '''mgmt_cli show access-layers -s id.txt --format json | jq '.&amp;quot;access-layers&amp;quot;[].name'&lt;br /&gt;
 &amp;quot;dropall Network&amp;quot;'''&lt;br /&gt;
 &amp;quot;Network&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;quot;Network&amp;quot; represents the default policy package Standard&lt;br /&gt;
&lt;br /&gt;
===examples===&lt;br /&gt;
show number of rules in policy&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;&amp;lt;layer&amp;gt;&amp;quot; -s id.txt --format json limit 1 | jq '.total'&lt;br /&gt;
&lt;br /&gt;
display rule with uid = xxx&lt;br /&gt;
&lt;br /&gt;
 # '''mgmt_cli -s id.txt show access-rule layer &amp;quot;My_policy Network&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
display src/dst/service from rule with uid&lt;br /&gt;
 for i in source destination service; do echo $i; mgmt_cli -s id.txt show access-rule layer &amp;quot;&amp;lt;policy_name&amp;gt; &amp;lt;layer_name&amp;gt;&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot; --format json | jq .$i[].name; done&lt;br /&gt;
&lt;br /&gt;
alternate(inferior) way with jq&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.uid == &amp;quot;1de8fab0-4858-4067-977d-1cbb5cd2e55d&amp;quot;) | .&amp;quot;rule-number&amp;quot;'&lt;br /&gt;
 1&lt;br /&gt;
&lt;br /&gt;
display rule number with comment containing a string haha&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.comments | contains(&amp;quot;haha&amp;quot;)) | {rulenum: .&amp;quot;rule-number&amp;quot;, comment: .comments}'&lt;br /&gt;
&lt;br /&gt;
===adding rules===&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xxad70c9-b4c6-4e64-9bfd-d57ac91289f3 name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xx70adc9-b4c6-4e64-9bfd-d57ac91289f3 position top name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; action &amp;quot;Accept&amp;quot; service add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; service.add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===mds / domain===&lt;br /&gt;
&lt;br /&gt;
get list of domains,objects(management and firewalls),object type&lt;br /&gt;
 mgmt_cli.exe -s id.txt show gateways-and-servers --format json limit 500 | jq '.objects.nat,.name,.type' | xargs -n3&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===jq===&lt;br /&gt;
compound jq select using and/or (note: contains returns true/false)&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select (.comments | (contains(&amp;quot;hahaha&amp;quot;) or contains(&amp;quot;lol&amp;quot;)) | not ) | {ruleUID: .uid, comments: .comments} '&lt;br /&gt;
&lt;br /&gt;
and another one...&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select ((.comments | (contains(&amp;quot;hahah&amp;quot;) or contains(&amp;quot;lol&amp;quot;) | not )) and (.enabled == true)) | {enabled: .enabled, rulenum: .&amp;quot;rule-number&amp;quot;, ruleUID: .uid, comments: .comments} '&lt;br /&gt;
 &lt;br /&gt;
filter objects dictary for uid for accept action&lt;br /&gt;
 jq '.&amp;quot;objects-dictionary&amp;quot;[] | select (.name == &amp;quot;Accept&amp;quot;) | .uid'&lt;br /&gt;
&lt;br /&gt;
get cluster member policy installation targets&lt;br /&gt;
&lt;br /&gt;
 | jq -c '.&amp;quot;installation-targets-revision&amp;quot;[] | .&amp;quot;cluster-members-revision&amp;quot;[] | .&amp;quot;target-name&amp;quot;' | tr -d '&amp;quot;' | tr '\n' ' '&lt;br /&gt;
&lt;br /&gt;
&amp;quot;rulenum&amp;quot;: 1,&lt;br /&gt;
&amp;lt;br&amp;gt;  &amp;quot;comment&amp;quot;: &amp;quot;hahahlol&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===curl===&lt;br /&gt;
&lt;br /&gt;
 curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;userId&amp;quot;: 5, &amp;quot;title&amp;quot;: &amp;quot;Post Title&amp;quot;, &amp;quot;body&amp;quot;: &amp;quot;Post content.&amp;quot;}' &lt;br /&gt;
		&lt;br /&gt;
 curl -X -H POST -H &amp;quot;Content-Type: application/json&amp;quot; -d	'{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' 192.168.1.10:443/login&lt;br /&gt;
	&lt;br /&gt;
 $'''curl --insecure -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' https://192.168.1.10:443/web_api/login'''&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;uid&amp;quot; : &amp;quot;46a11170-e554-4e58-a5fc-65ff9e38d8cb&amp;quot;,&lt;br /&gt;
 &amp;quot;sid&amp;quot; : &amp;quot;dfq6sI1MxMT1qUhXQ7tafQduKAfJxYkqXCEjaQKjres&amp;quot;,&lt;br /&gt;
 &amp;quot;url&amp;quot; : &amp;quot;https://10.128.1.81:443/web_api&amp;quot;,&lt;br /&gt;
 &amp;quot;session-timeout&amp;quot; : 600,&lt;br /&gt;
 &amp;quot;last-login-was-at&amp;quot; : {&lt;br /&gt;
   &amp;quot;posix&amp;quot; : 1707413218074,&lt;br /&gt;
   &amp;quot;iso-8601&amp;quot; : &amp;quot;2024-02-08T10:26-0700&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;api-server-version&amp;quot; : &amp;quot;1.8.1&amp;quot;,&lt;br /&gt;
 &amp;quot;user-name&amp;quot; : &amp;quot;jsmith&amp;quot;,&lt;br /&gt;
 &amp;quot;user-uid&amp;quot; : &amp;quot;c1109c35-d741-7jg8-98e3-36669b7047a2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==links==&lt;br /&gt;
[https://community.checkpoint.com/t5/General-Management-Topics/What-s-new-with-R80-20M1-Management-API/td-p/39522 What's new with R80.20M1 Management API]&lt;br /&gt;
&lt;br /&gt;
[https://sc1.checkpoint.com/documents/latest/APIs/index.html#introduction~v1.4%20 r80 api reference]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/CheckPointSW/cp_mgmt_api_python_sdk official python open source api]&lt;br /&gt;
&lt;br /&gt;
parsing json return output&lt;br /&gt;
[https://stedolan.github.io/jq/ jq]&lt;br /&gt;
&lt;br /&gt;
[https://community.checkpoint.com/thread/1083 Parsing the output of mgmt_cli]&lt;br /&gt;
&lt;br /&gt;
[https://devqa.io/curl-sending-api-requests/ How to Use CURL to Send API Requests]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/r80_api_notes</id>
		<title>r80 api notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/r80_api_notes"/>
				<updated>2024-03-19T16:14:22Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: /* curl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Management server API setup==&lt;br /&gt;
===enabling for remote IPs===&lt;br /&gt;
done the smartconsole&lt;br /&gt;
&lt;br /&gt;
[[file:cp_mgmt_api_enable_all_IPs.png]]&lt;br /&gt;
&lt;br /&gt;
it can also be enabled via mgmt_cli under &amp;quot;set api-settings&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===status check===&lt;br /&gt;
&lt;br /&gt;
[Expert@chmkmgr1:0]# '''api status'''&lt;br /&gt;
&amp;lt;br&amp;gt;API Settings:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Accessibility:                      Require all granted      &lt;br /&gt;
&amp;lt;br&amp;gt;Automatic Start:                    Enabled       &lt;br /&gt;
&amp;lt;br&amp;gt;Processes:      &lt;br /&gt;
&amp;lt;br&amp;gt;Name      State     PID       More Information&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API       Started   10763               &lt;br /&gt;
&amp;lt;br&amp;gt;CPM       Started   10460     Check Point Security Management Server is running and ready&lt;br /&gt;
&amp;lt;br&amp;gt;FWM       Started   10007               &lt;br /&gt;
&amp;lt;br&amp;gt;Port Details:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;JETTY Internal Port:      50276          &lt;br /&gt;
&amp;lt;br&amp;gt;APACHE Gaia Port:         443            &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Overall API Status: Started&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API readiness test SUCCESSFUL. The server is up and ready to receive connections&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===logging in===&lt;br /&gt;
login and redirect session info to a file for reuse&lt;br /&gt;
 # mgmt_cli login user admin &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
same but read only&lt;br /&gt;
 # mgmt_cli login user admin read-only true &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
===search existing object===&lt;br /&gt;
search objects by IP, return all objects that contain the ip explicitly or within a nework address space/range.&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true  --format json | jq '.objects[] | {name: .name, subnet: .subnet4, mask: .&amp;quot;mask-length4&amp;quot;}'&lt;br /&gt;
&lt;br /&gt;
return only objects with the EXACT ip&lt;br /&gt;
&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true details-level full --format json |  jq '.objects[] | select(.&amp;quot;ipv4-address&amp;quot; == &amp;quot;192.168.1.1&amp;quot;) | .name'&lt;br /&gt;
&lt;br /&gt;
*** details-level full will include more objects, including other stuff like type CpmiHostCkp (built in smartcenter object)&lt;br /&gt;
&lt;br /&gt;
==access rules==&lt;br /&gt;
===notes before you begin===&lt;br /&gt;
when using the parameter &amp;quot;name&amp;quot; to refer to a particular package, it appears to require the following...&lt;br /&gt;
&amp;lt;package name&amp;gt; &amp;lt;layer name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
as shown by the show access-layers command below. Also, the output of show access-rulebase doesn't is limited to 50 rules. If you want more, I think you have to iterate though a set of offets until all the rules are dumped. That dump in json format is a bit confusing. If you have no &amp;quot;headers&amp;quot; or &amp;quot;titles&amp;quot; in the ruleset, you will get 1 rulebase[] array.  If you have headers, each section is its own rulebase[] array with yet another rulebase[] array containing the actual rules.&lt;br /&gt;
&lt;br /&gt;
What this means is the commands below may or may not work as you expect them to. The will likely need to be altered with mgmt_cli &amp;quot;offset&amp;quot; commands and/or modified jq commands... &lt;br /&gt;
&lt;br /&gt;
for example, if you have NO headers in your policy and are running show access-rulebase, it will output the rules with &lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[]'&lt;br /&gt;
&lt;br /&gt;
if you DO HAVE headers, to output the rules you need&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[]'&lt;br /&gt;
&lt;br /&gt;
====rule numbers====&lt;br /&gt;
&lt;br /&gt;
===show access layers?===&lt;br /&gt;
 [Expert@chmkmgr1:0]# '''mgmt_cli show access-layers -s id.txt --format json | jq '.&amp;quot;access-layers&amp;quot;[].name'&lt;br /&gt;
 &amp;quot;dropall Network&amp;quot;'''&lt;br /&gt;
 &amp;quot;Network&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;quot;Network&amp;quot; represents the default policy package Standard&lt;br /&gt;
&lt;br /&gt;
===examples===&lt;br /&gt;
show number of rules in policy&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;&amp;lt;layer&amp;gt;&amp;quot; -s id.txt --format json limit 1 | jq '.total'&lt;br /&gt;
&lt;br /&gt;
display rule with uid = xxx&lt;br /&gt;
&lt;br /&gt;
 # '''mgmt_cli -s id.txt show access-rule layer &amp;quot;My_policy Network&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
display src/dst/service from rule with uid&lt;br /&gt;
 for i in source destination service; do echo $i; mgmt_cli -s id.txt show access-rule layer &amp;quot;&amp;lt;policy_name&amp;gt; &amp;lt;layer_name&amp;gt;&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot; --format json | jq .$i[].name; done&lt;br /&gt;
&lt;br /&gt;
alternate(inferior) way with jq&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.uid == &amp;quot;1de8fab0-4858-4067-977d-1cbb5cd2e55d&amp;quot;) | .&amp;quot;rule-number&amp;quot;'&lt;br /&gt;
 1&lt;br /&gt;
&lt;br /&gt;
display rule number with comment containing a string haha&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.comments | contains(&amp;quot;haha&amp;quot;)) | {rulenum: .&amp;quot;rule-number&amp;quot;, comment: .comments}'&lt;br /&gt;
&lt;br /&gt;
===adding rules===&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xxad70c9-b4c6-4e64-9bfd-d57ac91289f3 name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xx70adc9-b4c6-4e64-9bfd-d57ac91289f3 position top name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; action &amp;quot;Accept&amp;quot; service add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; service.add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===mds / domain===&lt;br /&gt;
&lt;br /&gt;
get list of domains,objects(management and firewalls),object type&lt;br /&gt;
 mgmt_cli.exe -s id.txt show gateways-and-servers --format json limit 500 | jq '.objects.nat,.name,.type' | xargs -n3&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===jq===&lt;br /&gt;
compound jq select using and/or (note: contains returns true/false)&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select (.comments | (contains(&amp;quot;hahaha&amp;quot;) or contains(&amp;quot;lol&amp;quot;)) | not ) | {ruleUID: .uid, comments: .comments} '&lt;br /&gt;
&lt;br /&gt;
and another one...&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select ((.comments | (contains(&amp;quot;hahah&amp;quot;) or contains(&amp;quot;lol&amp;quot;) | not )) and (.enabled == true)) | {enabled: .enabled, rulenum: .&amp;quot;rule-number&amp;quot;, ruleUID: .uid, comments: .comments} '&lt;br /&gt;
 &lt;br /&gt;
filter objects dictary for uid for accept action&lt;br /&gt;
 jq '.&amp;quot;objects-dictionary&amp;quot;[] | select (.name == &amp;quot;Accept&amp;quot;) | .uid'&lt;br /&gt;
&lt;br /&gt;
get cluster member policy installation targets&lt;br /&gt;
&lt;br /&gt;
 | jq -c '.&amp;quot;installation-targets-revision&amp;quot;[] | .&amp;quot;cluster-members-revision&amp;quot;[] | .&amp;quot;target-name&amp;quot;' | tr -d '&amp;quot;' | tr '\n' ' '&lt;br /&gt;
&lt;br /&gt;
&amp;quot;rulenum&amp;quot;: 1,&lt;br /&gt;
&amp;lt;br&amp;gt;  &amp;quot;comment&amp;quot;: &amp;quot;hahahlol&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===curl===&lt;br /&gt;
&lt;br /&gt;
 curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;userId&amp;quot;: 5, &amp;quot;title&amp;quot;: &amp;quot;Post Title&amp;quot;, &amp;quot;body&amp;quot;: &amp;quot;Post content.&amp;quot;}' &lt;br /&gt;
		&lt;br /&gt;
 curl -X -H POST -H &amp;quot;Content-Type: application/json&amp;quot; -d	'{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' 192.168.1.10:443/login&lt;br /&gt;
	&lt;br /&gt;
 $== curl --insecure -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' https://192.168.1.10:443/web_api/login ==&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;uid&amp;quot; : &amp;quot;46a11170-e554-4e58-a5fc-65ff9e38d8cb&amp;quot;,&lt;br /&gt;
 &amp;quot;sid&amp;quot; : &amp;quot;dfq6sI1MxMT1qUhXQ7tafQduKAfJxYkqXCEjaQKjres&amp;quot;,&lt;br /&gt;
 &amp;quot;url&amp;quot; : &amp;quot;https://10.128.1.81:443/web_api&amp;quot;,&lt;br /&gt;
 &amp;quot;session-timeout&amp;quot; : 600,&lt;br /&gt;
 &amp;quot;last-login-was-at&amp;quot; : {&lt;br /&gt;
   &amp;quot;posix&amp;quot; : 1707413218074,&lt;br /&gt;
   &amp;quot;iso-8601&amp;quot; : &amp;quot;2024-02-08T10:26-0700&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;api-server-version&amp;quot; : &amp;quot;1.8.1&amp;quot;,&lt;br /&gt;
 &amp;quot;user-name&amp;quot; : &amp;quot;jsmith&amp;quot;,&lt;br /&gt;
 &amp;quot;user-uid&amp;quot; : &amp;quot;c1109c35-d741-7jg8-98e3-36669b7047a2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==links==&lt;br /&gt;
[https://community.checkpoint.com/t5/General-Management-Topics/What-s-new-with-R80-20M1-Management-API/td-p/39522 What's new with R80.20M1 Management API]&lt;br /&gt;
&lt;br /&gt;
[https://sc1.checkpoint.com/documents/latest/APIs/index.html#introduction~v1.4%20 r80 api reference]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/CheckPointSW/cp_mgmt_api_python_sdk official python open source api]&lt;br /&gt;
&lt;br /&gt;
parsing json return output&lt;br /&gt;
[https://stedolan.github.io/jq/ jq]&lt;br /&gt;
&lt;br /&gt;
[https://community.checkpoint.com/thread/1083 Parsing the output of mgmt_cli]&lt;br /&gt;
&lt;br /&gt;
[https://devqa.io/curl-sending-api-requests/ How to Use CURL to Send API Requests]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/r80_api_notes</id>
		<title>r80 api notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/r80_api_notes"/>
				<updated>2024-03-19T16:13:45Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: /* curl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Management server API setup==&lt;br /&gt;
===enabling for remote IPs===&lt;br /&gt;
done the smartconsole&lt;br /&gt;
&lt;br /&gt;
[[file:cp_mgmt_api_enable_all_IPs.png]]&lt;br /&gt;
&lt;br /&gt;
it can also be enabled via mgmt_cli under &amp;quot;set api-settings&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===status check===&lt;br /&gt;
&lt;br /&gt;
[Expert@chmkmgr1:0]# '''api status'''&lt;br /&gt;
&amp;lt;br&amp;gt;API Settings:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Accessibility:                      Require all granted      &lt;br /&gt;
&amp;lt;br&amp;gt;Automatic Start:                    Enabled       &lt;br /&gt;
&amp;lt;br&amp;gt;Processes:      &lt;br /&gt;
&amp;lt;br&amp;gt;Name      State     PID       More Information&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API       Started   10763               &lt;br /&gt;
&amp;lt;br&amp;gt;CPM       Started   10460     Check Point Security Management Server is running and ready&lt;br /&gt;
&amp;lt;br&amp;gt;FWM       Started   10007               &lt;br /&gt;
&amp;lt;br&amp;gt;Port Details:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;JETTY Internal Port:      50276          &lt;br /&gt;
&amp;lt;br&amp;gt;APACHE Gaia Port:         443            &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Overall API Status: Started&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API readiness test SUCCESSFUL. The server is up and ready to receive connections&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===logging in===&lt;br /&gt;
login and redirect session info to a file for reuse&lt;br /&gt;
 # mgmt_cli login user admin &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
same but read only&lt;br /&gt;
 # mgmt_cli login user admin read-only true &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
===search existing object===&lt;br /&gt;
search objects by IP, return all objects that contain the ip explicitly or within a nework address space/range.&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true  --format json | jq '.objects[] | {name: .name, subnet: .subnet4, mask: .&amp;quot;mask-length4&amp;quot;}'&lt;br /&gt;
&lt;br /&gt;
return only objects with the EXACT ip&lt;br /&gt;
&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true details-level full --format json |  jq '.objects[] | select(.&amp;quot;ipv4-address&amp;quot; == &amp;quot;192.168.1.1&amp;quot;) | .name'&lt;br /&gt;
&lt;br /&gt;
*** details-level full will include more objects, including other stuff like type CpmiHostCkp (built in smartcenter object)&lt;br /&gt;
&lt;br /&gt;
==access rules==&lt;br /&gt;
===notes before you begin===&lt;br /&gt;
when using the parameter &amp;quot;name&amp;quot; to refer to a particular package, it appears to require the following...&lt;br /&gt;
&amp;lt;package name&amp;gt; &amp;lt;layer name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
as shown by the show access-layers command below. Also, the output of show access-rulebase doesn't is limited to 50 rules. If you want more, I think you have to iterate though a set of offets until all the rules are dumped. That dump in json format is a bit confusing. If you have no &amp;quot;headers&amp;quot; or &amp;quot;titles&amp;quot; in the ruleset, you will get 1 rulebase[] array.  If you have headers, each section is its own rulebase[] array with yet another rulebase[] array containing the actual rules.&lt;br /&gt;
&lt;br /&gt;
What this means is the commands below may or may not work as you expect them to. The will likely need to be altered with mgmt_cli &amp;quot;offset&amp;quot; commands and/or modified jq commands... &lt;br /&gt;
&lt;br /&gt;
for example, if you have NO headers in your policy and are running show access-rulebase, it will output the rules with &lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[]'&lt;br /&gt;
&lt;br /&gt;
if you DO HAVE headers, to output the rules you need&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[]'&lt;br /&gt;
&lt;br /&gt;
====rule numbers====&lt;br /&gt;
&lt;br /&gt;
===show access layers?===&lt;br /&gt;
 [Expert@chmkmgr1:0]# '''mgmt_cli show access-layers -s id.txt --format json | jq '.&amp;quot;access-layers&amp;quot;[].name'&lt;br /&gt;
 &amp;quot;dropall Network&amp;quot;'''&lt;br /&gt;
 &amp;quot;Network&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;quot;Network&amp;quot; represents the default policy package Standard&lt;br /&gt;
&lt;br /&gt;
===examples===&lt;br /&gt;
show number of rules in policy&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;&amp;lt;layer&amp;gt;&amp;quot; -s id.txt --format json limit 1 | jq '.total'&lt;br /&gt;
&lt;br /&gt;
display rule with uid = xxx&lt;br /&gt;
&lt;br /&gt;
 # '''mgmt_cli -s id.txt show access-rule layer &amp;quot;My_policy Network&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
display src/dst/service from rule with uid&lt;br /&gt;
 for i in source destination service; do echo $i; mgmt_cli -s id.txt show access-rule layer &amp;quot;&amp;lt;policy_name&amp;gt; &amp;lt;layer_name&amp;gt;&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot; --format json | jq .$i[].name; done&lt;br /&gt;
&lt;br /&gt;
alternate(inferior) way with jq&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.uid == &amp;quot;1de8fab0-4858-4067-977d-1cbb5cd2e55d&amp;quot;) | .&amp;quot;rule-number&amp;quot;'&lt;br /&gt;
 1&lt;br /&gt;
&lt;br /&gt;
display rule number with comment containing a string haha&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.comments | contains(&amp;quot;haha&amp;quot;)) | {rulenum: .&amp;quot;rule-number&amp;quot;, comment: .comments}'&lt;br /&gt;
&lt;br /&gt;
===adding rules===&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xxad70c9-b4c6-4e64-9bfd-d57ac91289f3 name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xx70adc9-b4c6-4e64-9bfd-d57ac91289f3 position top name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; action &amp;quot;Accept&amp;quot; service add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; service.add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===mds / domain===&lt;br /&gt;
&lt;br /&gt;
get list of domains,objects(management and firewalls),object type&lt;br /&gt;
 mgmt_cli.exe -s id.txt show gateways-and-servers --format json limit 500 | jq '.objects.nat,.name,.type' | xargs -n3&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===jq===&lt;br /&gt;
compound jq select using and/or (note: contains returns true/false)&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select (.comments | (contains(&amp;quot;hahaha&amp;quot;) or contains(&amp;quot;lol&amp;quot;)) | not ) | {ruleUID: .uid, comments: .comments} '&lt;br /&gt;
&lt;br /&gt;
and another one...&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select ((.comments | (contains(&amp;quot;hahah&amp;quot;) or contains(&amp;quot;lol&amp;quot;) | not )) and (.enabled == true)) | {enabled: .enabled, rulenum: .&amp;quot;rule-number&amp;quot;, ruleUID: .uid, comments: .comments} '&lt;br /&gt;
 &lt;br /&gt;
filter objects dictary for uid for accept action&lt;br /&gt;
 jq '.&amp;quot;objects-dictionary&amp;quot;[] | select (.name == &amp;quot;Accept&amp;quot;) | .uid'&lt;br /&gt;
&lt;br /&gt;
get cluster member policy installation targets&lt;br /&gt;
&lt;br /&gt;
 | jq -c '.&amp;quot;installation-targets-revision&amp;quot;[] | .&amp;quot;cluster-members-revision&amp;quot;[] | .&amp;quot;target-name&amp;quot;' | tr -d '&amp;quot;' | tr '\n' ' '&lt;br /&gt;
&lt;br /&gt;
&amp;quot;rulenum&amp;quot;: 1,&lt;br /&gt;
&amp;lt;br&amp;gt;  &amp;quot;comment&amp;quot;: &amp;quot;hahahlol&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===curl===&lt;br /&gt;
&lt;br /&gt;
 curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;userId&amp;quot;: 5, &amp;quot;title&amp;quot;: &amp;quot;Post Title&amp;quot;, &amp;quot;body&amp;quot;: &amp;quot;Post content.&amp;quot;}' &lt;br /&gt;
		&lt;br /&gt;
 curl -X -H POST -H &amp;quot;Content-Type: application/json&amp;quot; -d	'{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' 192.168.1.10:443/login&lt;br /&gt;
	&lt;br /&gt;
 curl --insecure -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' https://192.168.1.10:443/web_api/login&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;uid&amp;quot; : &amp;quot;46a11170-e554-4e58-a5fc-65ff9e38d8cb&amp;quot;,&lt;br /&gt;
 &amp;quot;sid&amp;quot; : &amp;quot;dfq6sI1MxMT1qUhXQ7tafQduKAfJxYkqXCEjaQKjres&amp;quot;,&lt;br /&gt;
 &amp;quot;url&amp;quot; : &amp;quot;https://10.128.1.81:443/web_api&amp;quot;,&lt;br /&gt;
 &amp;quot;session-timeout&amp;quot; : 600,&lt;br /&gt;
 &amp;quot;last-login-was-at&amp;quot; : {&lt;br /&gt;
   &amp;quot;posix&amp;quot; : 1707413218074,&lt;br /&gt;
   &amp;quot;iso-8601&amp;quot; : &amp;quot;2024-02-08T10:26-0700&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;quot;api-server-version&amp;quot; : &amp;quot;1.8.1&amp;quot;,&lt;br /&gt;
 &amp;quot;user-name&amp;quot; : &amp;quot;jsmith&amp;quot;,&lt;br /&gt;
 &amp;quot;user-uid&amp;quot; : &amp;quot;c1109c35-d741-7jg8-98e3-36669b7047a2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==links==&lt;br /&gt;
[https://community.checkpoint.com/t5/General-Management-Topics/What-s-new-with-R80-20M1-Management-API/td-p/39522 What's new with R80.20M1 Management API]&lt;br /&gt;
&lt;br /&gt;
[https://sc1.checkpoint.com/documents/latest/APIs/index.html#introduction~v1.4%20 r80 api reference]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/CheckPointSW/cp_mgmt_api_python_sdk official python open source api]&lt;br /&gt;
&lt;br /&gt;
parsing json return output&lt;br /&gt;
[https://stedolan.github.io/jq/ jq]&lt;br /&gt;
&lt;br /&gt;
[https://community.checkpoint.com/thread/1083 Parsing the output of mgmt_cli]&lt;br /&gt;
&lt;br /&gt;
[https://devqa.io/curl-sending-api-requests/ How to Use CURL to Send API Requests]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/r80_api_notes</id>
		<title>r80 api notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/r80_api_notes"/>
				<updated>2024-02-16T16:38:52Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: /* jq examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Management server API setup==&lt;br /&gt;
===enabling for remote IPs===&lt;br /&gt;
done the smartconsole&lt;br /&gt;
&lt;br /&gt;
[[file:cp_mgmt_api_enable_all_IPs.png]]&lt;br /&gt;
&lt;br /&gt;
it can also be enabled via mgmt_cli under &amp;quot;set api-settings&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===status check===&lt;br /&gt;
&lt;br /&gt;
[Expert@chmkmgr1:0]# '''api status'''&lt;br /&gt;
&amp;lt;br&amp;gt;API Settings:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Accessibility:                      Require all granted      &lt;br /&gt;
&amp;lt;br&amp;gt;Automatic Start:                    Enabled       &lt;br /&gt;
&amp;lt;br&amp;gt;Processes:      &lt;br /&gt;
&amp;lt;br&amp;gt;Name      State     PID       More Information&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API       Started   10763               &lt;br /&gt;
&amp;lt;br&amp;gt;CPM       Started   10460     Check Point Security Management Server is running and ready&lt;br /&gt;
&amp;lt;br&amp;gt;FWM       Started   10007               &lt;br /&gt;
&amp;lt;br&amp;gt;Port Details:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;JETTY Internal Port:      50276          &lt;br /&gt;
&amp;lt;br&amp;gt;APACHE Gaia Port:         443            &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Overall API Status: Started&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API readiness test SUCCESSFUL. The server is up and ready to receive connections&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===logging in===&lt;br /&gt;
login and redirect session info to a file for reuse&lt;br /&gt;
 # mgmt_cli login user admin &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
same but read only&lt;br /&gt;
 # mgmt_cli login user admin read-only true &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
===search existing object===&lt;br /&gt;
search objects by IP, return all objects that contain the ip explicitly or within a nework address space/range.&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true  --format json | jq '.objects[] | {name: .name, subnet: .subnet4, mask: .&amp;quot;mask-length4&amp;quot;}'&lt;br /&gt;
&lt;br /&gt;
return only objects with the EXACT ip&lt;br /&gt;
&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true details-level full --format json |  jq '.objects[] | select(.&amp;quot;ipv4-address&amp;quot; == &amp;quot;192.168.1.1&amp;quot;) | .name'&lt;br /&gt;
&lt;br /&gt;
*** details-level full will include more objects, including other stuff like type CpmiHostCkp (built in smartcenter object)&lt;br /&gt;
&lt;br /&gt;
==access rules==&lt;br /&gt;
===notes before you begin===&lt;br /&gt;
when using the parameter &amp;quot;name&amp;quot; to refer to a particular package, it appears to require the following...&lt;br /&gt;
&amp;lt;package name&amp;gt; &amp;lt;layer name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
as shown by the show access-layers command below. Also, the output of show access-rulebase doesn't is limited to 50 rules. If you want more, I think you have to iterate though a set of offets until all the rules are dumped. That dump in json format is a bit confusing. If you have no &amp;quot;headers&amp;quot; or &amp;quot;titles&amp;quot; in the ruleset, you will get 1 rulebase[] array.  If you have headers, each section is its own rulebase[] array with yet another rulebase[] array containing the actual rules.&lt;br /&gt;
&lt;br /&gt;
What this means is the commands below may or may not work as you expect them to. The will likely need to be altered with mgmt_cli &amp;quot;offset&amp;quot; commands and/or modified jq commands... &lt;br /&gt;
&lt;br /&gt;
for example, if you have NO headers in your policy and are running show access-rulebase, it will output the rules with &lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[]'&lt;br /&gt;
&lt;br /&gt;
if you DO HAVE headers, to output the rules you need&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[]'&lt;br /&gt;
&lt;br /&gt;
====rule numbers====&lt;br /&gt;
&lt;br /&gt;
===show access layers?===&lt;br /&gt;
 [Expert@chmkmgr1:0]# '''mgmt_cli show access-layers -s id.txt --format json | jq '.&amp;quot;access-layers&amp;quot;[].name'&lt;br /&gt;
 &amp;quot;dropall Network&amp;quot;'''&lt;br /&gt;
 &amp;quot;Network&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;quot;Network&amp;quot; represents the default policy package Standard&lt;br /&gt;
&lt;br /&gt;
===examples===&lt;br /&gt;
show number of rules in policy&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;&amp;lt;layer&amp;gt;&amp;quot; -s id.txt --format json limit 1 | jq '.total'&lt;br /&gt;
&lt;br /&gt;
display rule with uid = xxx&lt;br /&gt;
&lt;br /&gt;
 # '''mgmt_cli -s id.txt show access-rule layer &amp;quot;My_policy Network&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
display src/dst/service from rule with uid&lt;br /&gt;
 for i in source destination service; do echo $i; mgmt_cli -s id.txt show access-rule layer &amp;quot;&amp;lt;policy_name&amp;gt; &amp;lt;layer_name&amp;gt;&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot; --format json | jq .$i[].name; done&lt;br /&gt;
&lt;br /&gt;
alternate(inferior) way with jq&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.uid == &amp;quot;1de8fab0-4858-4067-977d-1cbb5cd2e55d&amp;quot;) | .&amp;quot;rule-number&amp;quot;'&lt;br /&gt;
 1&lt;br /&gt;
&lt;br /&gt;
display rule number with comment containing a string haha&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.comments | contains(&amp;quot;haha&amp;quot;)) | {rulenum: .&amp;quot;rule-number&amp;quot;, comment: .comments}'&lt;br /&gt;
&lt;br /&gt;
===adding rules===&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xxad70c9-b4c6-4e64-9bfd-d57ac91289f3 name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xx70adc9-b4c6-4e64-9bfd-d57ac91289f3 position top name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; action &amp;quot;Accept&amp;quot; service add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; service.add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===mds / domain===&lt;br /&gt;
&lt;br /&gt;
get list of domains,objects(management and firewalls),object type&lt;br /&gt;
 mgmt_cli.exe -s id.txt show gateways-and-servers --format json limit 500 | jq '.objects.nat,.name,.type' | xargs -n3&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===jq===&lt;br /&gt;
compound jq select using and/or (note: contains returns true/false)&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select (.comments | (contains(&amp;quot;hahaha&amp;quot;) or contains(&amp;quot;lol&amp;quot;)) | not ) | {ruleUID: .uid, comments: .comments} '&lt;br /&gt;
&lt;br /&gt;
and another one...&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select ((.comments | (contains(&amp;quot;hahah&amp;quot;) or contains(&amp;quot;lol&amp;quot;) | not )) and (.enabled == true)) | {enabled: .enabled, rulenum: .&amp;quot;rule-number&amp;quot;, ruleUID: .uid, comments: .comments} '&lt;br /&gt;
 &lt;br /&gt;
filter objects dictary for uid for accept action&lt;br /&gt;
 jq '.&amp;quot;objects-dictionary&amp;quot;[] | select (.name == &amp;quot;Accept&amp;quot;) | .uid'&lt;br /&gt;
&lt;br /&gt;
get cluster member policy installation targets&lt;br /&gt;
&lt;br /&gt;
 | jq -c '.&amp;quot;installation-targets-revision&amp;quot;[] | .&amp;quot;cluster-members-revision&amp;quot;[] | .&amp;quot;target-name&amp;quot;' | tr -d '&amp;quot;' | tr '\n' ' '&lt;br /&gt;
&lt;br /&gt;
&amp;quot;rulenum&amp;quot;: 1,&lt;br /&gt;
&amp;lt;br&amp;gt;  &amp;quot;comment&amp;quot;: &amp;quot;hahahlol&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===curl===&lt;br /&gt;
&lt;br /&gt;
curl -X POST -H &amp;quot;Content-Type: application/json&amp;quot; \&lt;br /&gt;
    -d '{&amp;quot;userId&amp;quot;: 5, &amp;quot;title&amp;quot;: &amp;quot;Post Title&amp;quot;, &amp;quot;body&amp;quot;: &amp;quot;Post content.&amp;quot;}' \&lt;br /&gt;
	    https://jsonplaceholder.typicode.com/posts&lt;br /&gt;
		&lt;br /&gt;
		&lt;br /&gt;
 curl -X -H POST -H &amp;quot;Content-Type: application/json&amp;quot; \&lt;br /&gt;
	-d 	'{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' \&lt;br /&gt;
	192.168.1.10:443/login&lt;br /&gt;
	&lt;br /&gt;
 curl --insecure -X POST -H &amp;quot;Content-Type: application/json&amp;quot; -d '{&amp;quot;user&amp;quot; : &amp;quot;jsmith&amp;quot;, &amp;quot;password&amp;quot; : &amp;quot;abc123&amp;quot;}' https://192.168.1.10:443/web_api/login&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;uid&amp;quot; : &amp;quot;46a11170-e554-4e58-a5fc-65ff9e38d8cb&amp;quot;,&lt;br /&gt;
  &amp;quot;sid&amp;quot; : &amp;quot;dfq6sI1MxMT1qUhXQ7tafQduKAfJxYkqXCEjaQKjres&amp;quot;,&lt;br /&gt;
  &amp;quot;url&amp;quot; : &amp;quot;https://10.128.1.81:443/web_api&amp;quot;,&lt;br /&gt;
  &amp;quot;session-timeout&amp;quot; : 600,&lt;br /&gt;
  &amp;quot;last-login-was-at&amp;quot; : {&lt;br /&gt;
    &amp;quot;posix&amp;quot; : 1707413218074,&lt;br /&gt;
    &amp;quot;iso-8601&amp;quot; : &amp;quot;2024-02-08T10:26-0700&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;api-server-version&amp;quot; : &amp;quot;1.8.1&amp;quot;,&lt;br /&gt;
  &amp;quot;user-name&amp;quot; : &amp;quot;jsmith&amp;quot;,&lt;br /&gt;
  &amp;quot;user-uid&amp;quot; : &amp;quot;c1109c35-d741-7jg8-98e3-36669b7047a2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==links==&lt;br /&gt;
[https://community.checkpoint.com/t5/General-Management-Topics/What-s-new-with-R80-20M1-Management-API/td-p/39522 What's new with R80.20M1 Management API]&lt;br /&gt;
&lt;br /&gt;
[https://sc1.checkpoint.com/documents/latest/APIs/index.html#introduction~v1.4%20 r80 api reference]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/CheckPointSW/cp_mgmt_api_python_sdk official python open source api]&lt;br /&gt;
&lt;br /&gt;
parsing json return output&lt;br /&gt;
[https://stedolan.github.io/jq/ jq]&lt;br /&gt;
&lt;br /&gt;
[https://community.checkpoint.com/thread/1083 Parsing the output of mgmt_cli]&lt;br /&gt;
&lt;br /&gt;
[https://devqa.io/curl-sending-api-requests/ How to Use CURL to Send API Requests]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	<entry>
		<id>http://www.cpwiki.net/index.php/r80_api_notes</id>
		<title>r80 api notes</title>
		<link rel="alternate" type="text/html" href="http://www.cpwiki.net/index.php/r80_api_notes"/>
				<updated>2024-02-16T16:22:45Z</updated>
		
		<summary type="html">&lt;p&gt;Nighthawk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Management server API setup==&lt;br /&gt;
===enabling for remote IPs===&lt;br /&gt;
done the smartconsole&lt;br /&gt;
&lt;br /&gt;
[[file:cp_mgmt_api_enable_all_IPs.png]]&lt;br /&gt;
&lt;br /&gt;
it can also be enabled via mgmt_cli under &amp;quot;set api-settings&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===status check===&lt;br /&gt;
&lt;br /&gt;
[Expert@chmkmgr1:0]# '''api status'''&lt;br /&gt;
&amp;lt;br&amp;gt;API Settings:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Accessibility:                      Require all granted      &lt;br /&gt;
&amp;lt;br&amp;gt;Automatic Start:                    Enabled       &lt;br /&gt;
&amp;lt;br&amp;gt;Processes:      &lt;br /&gt;
&amp;lt;br&amp;gt;Name      State     PID       More Information&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API       Started   10763               &lt;br /&gt;
&amp;lt;br&amp;gt;CPM       Started   10460     Check Point Security Management Server is running and ready&lt;br /&gt;
&amp;lt;br&amp;gt;FWM       Started   10007               &lt;br /&gt;
&amp;lt;br&amp;gt;Port Details:      &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;----------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;JETTY Internal Port:      50276          &lt;br /&gt;
&amp;lt;br&amp;gt;APACHE Gaia Port:         443            &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Overall API Status: Started&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;-------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;API readiness test SUCCESSFUL. The server is up and ready to receive connections&lt;br /&gt;
&lt;br /&gt;
==examples==&lt;br /&gt;
===logging in===&lt;br /&gt;
login and redirect session info to a file for reuse&lt;br /&gt;
 # mgmt_cli login user admin &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
same but read only&lt;br /&gt;
 # mgmt_cli login user admin read-only true &amp;gt; id.txt&lt;br /&gt;
&lt;br /&gt;
===search existing object===&lt;br /&gt;
search objects by IP, return all objects that contain the ip explicitly or within a nework address space/range.&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true  --format json | jq '.objects[] | {name: .name, subnet: .subnet4, mask: .&amp;quot;mask-length4&amp;quot;}'&lt;br /&gt;
&lt;br /&gt;
return only objects with the EXACT ip&lt;br /&gt;
&lt;br /&gt;
 # mgmt_cli -s id.txt show objects filter &amp;quot;192.168.1.1&amp;quot; ip-only true details-level full --format json |  jq '.objects[] | select(.&amp;quot;ipv4-address&amp;quot; == &amp;quot;192.168.1.1&amp;quot;) | .name'&lt;br /&gt;
&lt;br /&gt;
*** details-level full will include more objects, including other stuff like type CpmiHostCkp (built in smartcenter object)&lt;br /&gt;
&lt;br /&gt;
==access rules==&lt;br /&gt;
===notes before you begin===&lt;br /&gt;
when using the parameter &amp;quot;name&amp;quot; to refer to a particular package, it appears to require the following...&lt;br /&gt;
&amp;lt;package name&amp;gt; &amp;lt;layer name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
as shown by the show access-layers command below. Also, the output of show access-rulebase doesn't is limited to 50 rules. If you want more, I think you have to iterate though a set of offets until all the rules are dumped. That dump in json format is a bit confusing. If you have no &amp;quot;headers&amp;quot; or &amp;quot;titles&amp;quot; in the ruleset, you will get 1 rulebase[] array.  If you have headers, each section is its own rulebase[] array with yet another rulebase[] array containing the actual rules.&lt;br /&gt;
&lt;br /&gt;
What this means is the commands below may or may not work as you expect them to. The will likely need to be altered with mgmt_cli &amp;quot;offset&amp;quot; commands and/or modified jq commands... &lt;br /&gt;
&lt;br /&gt;
for example, if you have NO headers in your policy and are running show access-rulebase, it will output the rules with &lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[]'&lt;br /&gt;
&lt;br /&gt;
if you DO HAVE headers, to output the rules you need&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[]'&lt;br /&gt;
&lt;br /&gt;
====rule numbers====&lt;br /&gt;
&lt;br /&gt;
===show access layers?===&lt;br /&gt;
 [Expert@chmkmgr1:0]# '''mgmt_cli show access-layers -s id.txt --format json | jq '.&amp;quot;access-layers&amp;quot;[].name'&lt;br /&gt;
 &amp;quot;dropall Network&amp;quot;'''&lt;br /&gt;
 &amp;quot;Network&amp;quot;&lt;br /&gt;
&lt;br /&gt;
where &amp;quot;Network&amp;quot; represents the default policy package Standard&lt;br /&gt;
&lt;br /&gt;
===examples===&lt;br /&gt;
show number of rules in policy&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;&amp;lt;layer&amp;gt;&amp;quot; -s id.txt --format json limit 1 | jq '.total'&lt;br /&gt;
&lt;br /&gt;
display rule with uid = xxx&lt;br /&gt;
&lt;br /&gt;
 # '''mgmt_cli -s id.txt show access-rule layer &amp;quot;My_policy Network&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
display src/dst/service from rule with uid&lt;br /&gt;
 for i in source destination service; do echo $i; mgmt_cli -s id.txt show access-rule layer &amp;quot;&amp;lt;policy_name&amp;gt; &amp;lt;layer_name&amp;gt;&amp;quot; uid &amp;quot;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx&amp;quot; --format json | jq .$i[].name; done&lt;br /&gt;
&lt;br /&gt;
alternate(inferior) way with jq&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.uid == &amp;quot;1de8fab0-4858-4067-977d-1cbb5cd2e55d&amp;quot;) | .&amp;quot;rule-number&amp;quot;'&lt;br /&gt;
 1&lt;br /&gt;
&lt;br /&gt;
display rule number with comment containing a string haha&lt;br /&gt;
 mgmt_cli show access-rulebase name &amp;quot;Network&amp;quot; -s id.txt package &amp;quot;Standard&amp;quot; show-hits true --format json | jq '.rulebase[] | select (.comments | contains(&amp;quot;haha&amp;quot;)) | {rulenum: .&amp;quot;rule-number&amp;quot;, comment: .comments}'&lt;br /&gt;
&lt;br /&gt;
===adding rules===&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xxad70c9-b4c6-4e64-9bfd-d57ac91289f3 name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt add access-rule layer xx70adc9-b4c6-4e64-9bfd-d57ac91289f3 position top name new_rule&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; action &amp;quot;Accept&amp;quot; service add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
mgmt_cli -s id.txt set access-rule name &amp;quot;new_rule&amp;quot; layer &amp;quot;xx70adc9-b4c6-4e64-9bfd-d57ac91289f3&amp;quot; service.add &amp;quot;https&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===mds / domain===&lt;br /&gt;
&lt;br /&gt;
get list of domains,objects(management and firewalls),object type&lt;br /&gt;
 mgmt_cli.exe -s id.txt show gateways-and-servers --format json limit 500 | jq '.objects.nat,.name,.type' | xargs -n3&lt;br /&gt;
&lt;br /&gt;
==jq examples==&lt;br /&gt;
&lt;br /&gt;
compound jq select using and/or (note: contains returns true/false)&lt;br /&gt;
&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select (.comments | (contains(&amp;quot;hahaha&amp;quot;) or contains(&amp;quot;lol&amp;quot;)) | not ) | {ruleUID: .uid, comments: .comments} '&lt;br /&gt;
&lt;br /&gt;
and another one...&lt;br /&gt;
 | jq '.rulebase[] | .rulebase[] | select ((.comments | (contains(&amp;quot;hahah&amp;quot;) or contains(&amp;quot;lol&amp;quot;) | not )) and (.enabled == true)) | {enabled: .enabled, rulenum: .&amp;quot;rule-number&amp;quot;, ruleUID: .uid, comments: .comments} '&lt;br /&gt;
 &lt;br /&gt;
filter objects dictary for uid for accept action&lt;br /&gt;
 jq '.&amp;quot;objects-dictionary&amp;quot;[] | select (.name == &amp;quot;Accept&amp;quot;) | .uid'&lt;br /&gt;
&lt;br /&gt;
get cluster member policy installation targets&lt;br /&gt;
&lt;br /&gt;
 | jq -c '.&amp;quot;installation-targets-revision&amp;quot;[] | .&amp;quot;cluster-members-revision&amp;quot;[] | .&amp;quot;target-name&amp;quot;' | tr -d '&amp;quot;' | tr '\n' ' '&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;rulenum&amp;quot;: 1,&lt;br /&gt;
&amp;lt;br&amp;gt;  &amp;quot;comment&amp;quot;: &amp;quot;hahahlol&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==links==&lt;br /&gt;
[https://community.checkpoint.com/t5/General-Management-Topics/What-s-new-with-R80-20M1-Management-API/td-p/39522 What's new with R80.20M1 Management API]&lt;br /&gt;
&lt;br /&gt;
[https://sc1.checkpoint.com/documents/latest/APIs/index.html#introduction~v1.4%20 r80 api reference]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/CheckPointSW/cp_mgmt_api_python_sdk official python open source api]&lt;br /&gt;
&lt;br /&gt;
parsing json return output&lt;br /&gt;
[https://stedolan.github.io/jq/ jq]&lt;br /&gt;
&lt;br /&gt;
[https://community.checkpoint.com/thread/1083 Parsing the output of mgmt_cli]&lt;br /&gt;
&lt;br /&gt;
[https://devqa.io/curl-sending-api-requests/ How to Use CURL to Send API Requests]&lt;/div&gt;</summary>
		<author><name>Nighthawk</name></author>	</entry>

	</feed>