{"id":7816,"date":"2021-10-12T22:42:29","date_gmt":"2021-10-12T20:42:29","guid":{"rendered":"https:\/\/michlstechblog.info\/blog\/?p=7816"},"modified":"2023-10-17T15:20:48","modified_gmt":"2023-10-17T13:20:48","slug":"brocade-my-often-used-fabricos-commands","status":"publish","type":"post","link":"https:\/\/michlstechblog.info\/blog\/brocade-my-often-used-fabricos-commands\/","title":{"rendered":"Brocade: My often used FabricOS commands"},"content":{"rendered":"<div class=\"twoclick_social_bookmarks_post_7816 social_share_privacy clearfix 1.6.4 locale-en_US sprite-en_US\"><\/div><div class=\"twoclick-js\"><script type=\"text\/javascript\">\/* <![CDATA[ *\/\njQuery(document).ready(function($){if($('.twoclick_social_bookmarks_post_7816')){$('.twoclick_social_bookmarks_post_7816').socialSharePrivacy({\"services\":{\"flattr\":{\"uid\":\"Michl\",\"status\":\"on\",\"the_title\":\"Brocade%3A%20My%20often%20used%20FabricOS%20commands\",\"the_excerpt\":\"Hi%2C%0D%0A%0D%0Athis%20is%20the%20list%20of%20my%20the%20frequently%20fabric%20commands%3A%0D%0AGeneric%0D%0AUptime%20of%20the%20switch%0D%0A%0D%0A%5Bshell%5D%0D%0Auptime%0D%0A%5B%2Fshell%5D%0D%0A%0D%0ADate%20%2F%20Time%0D%0A%0D%0A%5Bshell%5D%0D%0Adate%20%20%20%20%20%0D%0A%5B%2Fshell%5D%0D%0A%0D%0AFabric%20OS%20version%0D%0A%0D%0A%5Bshell%5D%0D%0Aversion%0D%0A%5B%2Fshell%5D%0D%0A%0D%0ASwitchname%0D%0A%0D%0A%5Bshell%5D%0D%0AswitchName%0D%0A%5B%2Fshell%5D%0D%0A%0D%0ASwitch%20state%20with%20hardware%20overview%0D%0A%0D%0A%5Bshell%5D%0D%0Aswitchstatuspolicyshow%0D%0A%5B%2Fshell%5D%0D%0A%0D%0AGood%20overview%20of%20the%20switch%20with%20ports...%0D%20...\",\"txt_info\":\"2 clicks for more data protection:\\r\\n\\r\\nOnly when you click here, the button will be come active and you can send your recommendation to Flattr. When activating, data are transmitted to third parties. \",\"perma_option\":\"off\"}},\"txt_help\":\"When you activate these fields by clicking, information to Flattr may be transferred abroad, and probably may also stored there.\",\"settings_perma\":\"Enable permanently and accept data transmission. \",\"info_link\":\"http:\\\/\\\/www.heise.de\\\/ct\\\/artikel\\\/2-Klicks-fuer-mehr-Datenschutz-1333879.html\",\"uri\":\"https:\\\/\\\/michlstechblog.info\\\/blog\\\/brocade-my-often-used-fabricos-commands\\\/\",\"post_id\":7816,\"post_title_referrer_track\":\"Brocade%3A+My+often+used+FabricOS+commands\",\"display_infobox\":\"on\"});}});\n\/* ]]> *\/<\/script><\/div><p>Hi,<\/p>\n<p>this is the list of my the frequently fabric commands:<br \/>\n<strong>Generic<\/strong><br \/>\nUptime of the switch<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nuptime\r\n<\/pre>\n<p>Date \/ Time<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ndate     \r\n<\/pre>\n<p>Fabric OS version<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nversion\r\n<\/pre>\n<p>Switchname<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nswitchName\r\n<\/pre>\n<p>Switch state with hardware overview<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nswitchstatuspolicyshow\r\n<\/pre>\n<p>Good overview of the switch with ports&#8230;<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nswitchshow\r\n<\/pre>\n<p>Show domain ID<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nfabricshow\r\n<\/pre>\n<p>Set the fabricname<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nfabricname\r\n<\/pre>\n<p><!--more--><\/p>\n<p><strong>Port related<\/strong><\/p>\n<p>Enable<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nportDisable\r\n<\/pre>\n<p>Disable<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nportEnable\r\n<\/pre>\n<p>Performance of ports<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nportperfshow                \r\n<\/pre>\n<p>State of a port<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nportshow \r\n<\/pre>\n<p>Show routes on a port<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nportrouteshow\r\n<\/pre>\n<p>SFP\/GBIC Info<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsfpshow\r\n<\/pre>\n<p><strong>Hardware state<\/strong><\/p>\n<p>List faults<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nfaultshow\r\n<\/pre>\n<p>Fan state<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nfanshow  \r\n<\/pre>\n<p>Power supply state<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\npsshow\r\n<\/pre>\n<p>Temperatures<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ntempshow \r\n<\/pre>\n<p>Overall state of the switch<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nswitchstatusshow\r\n<\/pre>\n<p>Config commands<br \/>\nShow SNMP config<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nagtcfgshow\r\n<\/pre>\n<p>Set NTP Server<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ntsclockserver \r\n<\/pre>\n<p>Set Timezone<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ntsTimeZone -\u2013interactive\r\n<\/pre>\n<p>Switch config<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nconfigshow\r\n<\/pre>\n<p>Show the GBIC state and its serial numbers<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ngbicshow\r\n<\/pre>\n<p>Licence information<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nlicenseshow\r\n<\/pre>\n<p>Config summary<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsupportshow\r\n<\/pre>\n<p>Show switch ports and connections<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nswitchshow\r\n<\/pre>\n<p>Show zone and aliases<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nzoneshow \r\n<\/pre>\n<p><strong><br \/>\nSMTP Mail<\/strong><\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nrelayconfig --config -rla_ip 10.10.120.5 -rla_dname my.domain.org\r\n<\/pre>\n<p>Whole SMTP config<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nfwmailcfg\r\n<\/pre>\n<p>Receiver \/ Sender<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nmapsConfig --emailcfg -address myUser@my.domain.org -from myUser@my.domain.org\r\n<\/pre>\n<p><strong>Network configuration<\/strong><\/p>\n<p>Show broadcast routing<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nbcastshow           \r\n<\/pre>\n<p>Show network interface mode (Full\/Half duplex)<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nifmodeshow \r\n<\/pre>\n<p>netstat -s<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nifshow\r\n<\/pre>\n<p>IP Address<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nipaddrshow\r\n<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ninterfaceshow\r\n<\/pre>\n<p>SNMP<\/p>\n<p>Show config<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsnmpconfig --show snmpv1\r\nsnmpconfig --show snmpv3\r\n<\/pre>\n<p>Set config<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsnmpconfig --set snmpv1\r\nsnmpconfig --set snmpv3\r\n<\/pre>\n<p>Some stats<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nportstatsshow\r\n<\/pre>\n<p><strong>Misc<\/strong><\/p>\n<p>Show diagnostic data (paged)<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ndiagshow\r\n<\/pre>\n<p>Show diagnostic data (non paged)<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nerrdump\r\n<\/pre>\n<p>Show fabric<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nfabricshow\r\n<\/pre>\n<p>FSPF protocol infos<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nfspfshow\r\n<\/pre>\n<p>Show queues<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nmqshow\r\n<\/pre>\n<p><strong>Nameservice<\/strong><br \/>\nList all port with connected WWPNs<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nnsshow\r\n<\/pre>\n<p>Query the fabric ns cache manager<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nnscamshow\r\n<\/pre>\n<p><strong>Zoning<\/strong><br \/>\nCreate an alias. For the host (initiator)&#8230; use nscamshow\/nsshow to determine the hosts WWPNs<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nalicreate &quot;myHost_hba1&quot;,&quot;10:00:00:11:9b:f2:6c:c9&quot;\r\n<\/pre>\n<p>&#8230; and for the storage array (target)<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nalicreate &quot;myStorageArray_hba1&quot;,&quot;20:00:00:34:45:78:90:12&quot;\r\nalicreate &quot;myStorageArray_hba2&quot;,&quot;20:00:00:34:45:78:90:13&quot;\r\n<\/pre>\n<p>Create a zone with both<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nzonecreate &quot;Zone_myHost_hba1_myStorageArray&quot;,&quot;myHost_hba1;myStorageArray_hba1;myStorageArray_hba2&quot;\r\n<\/pre>\n<p>Add the zone to the\/your config<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ncfgadd &quot;myZoneconfig&quot;,&quot;Zone_myHost_hba1_myStorageArray&quot;\r\n<\/pre>\n<p>And save and enable the new config<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ncfgsave\r\ncfgenable myZoneconfig\r\n<\/pre>\n<p>Remove a zone from config. Then save and enable<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ncfgremove &quot;myZoneconfig&quot;,&quot;Zone_myHost_hba1_myStorageArray&quot;\r\n<\/pre>\n<p><strong>Fabric \/ ISL Trunking command<\/strong><\/p>\n<p>Before a switch can join a fabric you have to delete an exiting configuration (see below)<\/p>\n<p>Fabric state<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nislshow\r\n<\/pre>\n<p>Trunk state<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ntrunkShow\r\n<\/pre>\n<p>Debug when exist two trunk master for the same ISL connection<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ntrunkdebug 52 54\r\nport 52 and 54 can't trunk due to one of the following reasons:\r\nports are not same speed or valid speed\r\nports are not same long distance mode\r\nlocal or remote ports are not in same port group\r\ndifference between links length is greater than allowed\r\n\r\n<\/pre>\n<p>Enable trunking on all ports<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nSwitchcfgtrunk 1\r\n<\/pre>\n<p>Enable trunking on specific ports, for example 1 and 3<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nportcfgtrunkport 1\/3 1\r\n<\/pre>\n<p>Or disable<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nportcfgtrunkport 1\/3 0\r\n<\/pre>\n<p>Simple Fabric setup<br \/>\nDisable the ports which will be used for trunking, in this example port 1-3<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nportdisable 1-3\r\n<\/pre>\n<p>Enable QoS on those ports<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nportcfgqos --enable 1\r\nportcfgqos --enable 2\r\nportcfgqos --enable 3\r\n<\/pre>\n<p>Also set the max. port speed. In this case 16G<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nportcfgspeed 1 16\r\nportcfgspeed 2 16\r\nportcfgspeed 3 16\r\n<\/pre>\n<p>Disable switch<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nswitchdisable\r\n<\/pre>\n<p>Set Configure domain id (must be unique in a fabric), after setting the id press Ctrl-D<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nconfigure\r\n<\/pre>\n<p>and do a full (not fast) reboot<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nreboot\r\n<\/pre>\n<p>Connect the ISL (inter switch link) cables between the switches and enable the ports and the switch<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nportenable 1-3\r\nswitchenable\r\n<\/pre>\n<p>Fabric status<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nfabricshow\r\n<\/pre>\n<p>Show state of trunk port<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ntrunkshow -perf -swname\r\n<\/pre>\n<p>Set a switch to the fabric principal, login to the switch<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nfabricprincipal -f 1\r\n<\/pre>\n<p>Check Domain ID<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nconfigshow|grep domain\r\nfabric.domain:3\r\nswitch.domain_id_offset:96\r\n<\/pre>\n<p><strong>ssh<\/strong><br \/>\nThe ssh daemon brocade switch has some limitations against openssh<\/p>\n<ul>\n<li>No private key could imported. Means the key gen mechanism of fabric os must be used<\/li>\n<li>The public key could only exported by a file transfer. If you do not have a machine which allow user\/password login this could be tricky<\/li>\n<\/ul>\n<p>Generate a ssh key<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsshutil genkey -ecdsa\r\n<\/pre>\n<p>Allow a user to use ssh public key authentication<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsshutil allowuser admin\r\n<\/pre>\n<p>Get the public key without usage of <strong>sshutil exportpubkey<\/strong>. This requires that you cam login with root, either with the serial console or by ssh. See User management above on how to enable the root account.<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ncat \/root\/.ssh\/id_ecdsa.pub\r\n<\/pre>\n<p>Allow the public key to logon on a remote machine<br \/>\nThen you can simple import a public from there<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsshutil importpubkey\r\n<\/pre>\n<p><strong>User Management<\/strong><br \/>\nShow status of all user<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nuserconfig --show -a\r\n<\/pre>\n<p>Show status of the user root<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nrootaccess --show\r\n   RootAccess: consoleonly\r\n<\/pre>\n<p>On newer FabricOS releases the root account is disabled by default.<br \/>\nEnable the root account<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nuserconfig --change root -e yes\r\n<\/pre>\n<p>Enable ssh logon for root<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nrootaccess --set all\r\n<\/pre>\n<p>Then logon via ssh. The default password is &#8220;fibranne&#8221;. Change the password after logon.<\/p>\n<p>To disable the root account<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nuserconfig --change root -e no\r\nrootaccess --set consoleonly\r\n<\/pre>\n<p><strong>Firmware management<\/strong><br \/>\nShow version<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nfirmwareshow\r\n<\/pre>\n<p><strong>Note:<\/strong> Brocade does <strong>not <\/strong>support the upgrade over 2 minor version. Example 8.0.x -&gt; 8.2.x. You must update in this order 8.0.x -&gt; 8.1.x -&gt; 8.2.x.<br \/>\nFirmware update<br \/>\nCopy the firmware file to a remote system where you can logon remotely from the Brocade switch (ssh user\/password or publickey auth). In this example host 10.10.120.10, User: san, firmware located in the home directory ~\/v8.2.1a<br \/>\nDisable the switch<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nswitchdisable\r\n<\/pre>\n<p>Load the firmware to the switch and initiate a reboot<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nfirmwaredownload -s -n -p scp 10.10.120.10,san,v8.2.1a\r\nreboot\r\n<\/pre>\n<p>After the reboot do some checks. If you are sure that it works as expected commit the firmware to the second partition<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nfirmwarecommit\r\n<\/pre>\n<p>otherwise you can rollback to the previous version<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nfirmwarerestore\r\n<\/pre>\n<p><strong>Reset a switch<\/strong><br \/>\n<!--https:\/\/docs.netapp.com\/us-en\/ontap-metrocluster\/install-fc\/task_reset_the_brocade_fc_switch_to_factory_defaults.html--><br \/>\nVirtual switch enabled?<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nfosconfig --show\r\n<\/pre>\n<p>Disable virtual switch<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nfosconfig --disable vf\r\n<\/pre>\n<p>Now you can remove all ISL wires.<br \/>\nDisable the switch persistent<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nswitchcfgpersistentdisable\r\n<\/pre>\n<p>Disable active config<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ncfgDisable\r\n<\/pre>\n<p>Delete all zones, aliases&#8230;<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ncfgClear\r\n<\/pre>\n<p>Save it<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ncfgSave\r\n<\/pre>\n<p>Set default config<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nconfigDefault\r\n<\/pre>\n<p>Reset each port if necessary<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nportcfgdefault x\r\n<\/pre>\n<p>Michael<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hi, this is the list of my the frequently fabric commands: Generic Uptime of the switch uptime Date \/ Time date Fabric OS version version Switchname switchName Switch state with hardware overview switchstatuspolicyshow Good overview of the switch with ports&#8230; switchshow Show domain ID fabricshow Set the fabricname fabricname<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1615,1616],"tags":[1623,1617,188,1625,1618,1624,1621,1619,1620,1622],"class_list":["post-7816","post","type-post","status-publish","format-standard","hentry","category-brocade","category-fabric-os","tag-add-zone","tag-brocade","tag-command","tag-enable-root","tag-fabricos","tag-firmware-update","tag-new-alias","tag-often","tag-used","tag-zone-info"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/michlstechblog.info\/blog\/wp-json\/wp\/v2\/posts\/7816","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/michlstechblog.info\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/michlstechblog.info\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/michlstechblog.info\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/michlstechblog.info\/blog\/wp-json\/wp\/v2\/comments?post=7816"}],"version-history":[{"count":34,"href":"https:\/\/michlstechblog.info\/blog\/wp-json\/wp\/v2\/posts\/7816\/revisions"}],"predecessor-version":[{"id":9458,"href":"https:\/\/michlstechblog.info\/blog\/wp-json\/wp\/v2\/posts\/7816\/revisions\/9458"}],"wp:attachment":[{"href":"https:\/\/michlstechblog.info\/blog\/wp-json\/wp\/v2\/media?parent=7816"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/michlstechblog.info\/blog\/wp-json\/wp\/v2\/categories?post=7816"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/michlstechblog.info\/blog\/wp-json\/wp\/v2\/tags?post=7816"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}