<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://illudium.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://illudium.github.io/" rel="alternate" type="text/html" /><updated>2024-10-20T18:01:31+00:00</updated><id>https://illudium.github.io/feed.xml</id><title type="html">Topically Ephemeral IT insights</title><subtitle>I&apos;m starting with migrating over some things I had originally posted elsewhere.</subtitle><author><name>David Haines</name></author><entry><title type="html">Managing Adobe updates remotely via Jamf or other MDM</title><link href="https://illudium.github.io/2024/10/20/managing-Adobe-updates.html" rel="alternate" type="text/html" title="Managing Adobe updates remotely via Jamf or other MDM" /><published>2024-10-20T00:00:00+00:00</published><updated>2024-10-20T00:00:00+00:00</updated><id>https://illudium.github.io/2024/10/20/managing-Adobe-updates</id><content type="html" xml:base="https://illudium.github.io/2024/10/20/managing-Adobe-updates.html"><![CDATA[<p>Adobe provides their Remote Update Manager tool, which <a href="https://helpx.adobe.com/enterprise/using/using-remote-update-manager.html">you can read more about from Adobe</a></p>

<p>There is an excellent script for using Adobe RUM via Jamf, from John Mahlman, here:
https://github.com/jmahlman/Mac-Admin-Scripts/blob/master/Adobe-RUMWithProgress-jamfhelper.sh</p>

<p>One problem you will encounter with RUM, is that it will download available updates but fail to apply them, when an Adobe app is still running.</p>

<p>To handle that gracefully, I suggest the following script snippet <a href="https://github.com/illudium/shell-scripts-for-Mac-mgmt/blob/main/quit_all_adobe_apps.sh">(also listed here)</a>, which will invoke AppleScript and ask the user quit all running Adobe apps, and prompt them to save any unsaved changes.</p>

<pre><code class="language-shell">#!/bin/sh

#other code here

quit_all_adobe_apps ()
{
osascript &lt;&lt;EOF
tell application "System Events"
	set adobeApps to displayed name of (every process whose background only is false and (name starts with "Adobe" or name is "Distiller")) as list
end tell

repeat with appName in adobeApps
	set end of adobeApps to appName
end repeat

try
	if adobeApps is not {} then
		repeat with currentApp in adobeApps
			if application currentApp is running then
				try
					tell application currentApp to activate
					tell application currentApp to quit
				end try
			end if
		end repeat
	end if
end try
EOF
}

# other code here

quit_all_adobe_apps
</code></pre>]]></content><author><name>David Haines</name></author><category term="Other" /><summary type="html"><![CDATA[Adobe provides their Remote Update Manager tool, which you can read more about from Adobe]]></summary></entry><entry><title type="html">Microsoft Entra (Azure) discovery</title><link href="https://illudium.github.io/2024/03/15/azure-entra-discovery.html" rel="alternate" type="text/html" title="Microsoft Entra (Azure) discovery" /><published>2024-03-15T00:00:00+00:00</published><updated>2024-03-15T00:00:00+00:00</updated><id>https://illudium.github.io/2024/03/15/azure-entra-discovery</id><content type="html" xml:base="https://illudium.github.io/2024/03/15/azure-entra-discovery.html"><![CDATA[<p>When you face (are tasked with) Azure/Entra discovery or cataloging, and want to work in an efficient manner, be sure to use the following:</p>

<pre><code class="language-powershell">Get-AzResource
</code></pre>

<p>along with:</p>

<pre><code class="language-powershell">Get-AzSubscription
</code></pre>
<h4 id="originally-published-by-me-march-15th-2024">Originally published by me, March 15th, 2024</h4>]]></content><author><name>David Haines</name></author><category term="Other" /><summary type="html"><![CDATA[When you face (are tasked with) Azure/Entra discovery or cataloging, and want to work in an efficient manner, be sure to use the following:]]></summary></entry><entry><title type="html">macOS and advanced network commands for managing DNS settings</title><link href="https://illudium.github.io/2024/02/09/advanced-macos-commandline-network-management.html" rel="alternate" type="text/html" title="macOS and advanced network commands for managing DNS settings" /><published>2024-02-09T00:00:00+00:00</published><updated>2024-02-09T00:00:00+00:00</updated><id>https://illudium.github.io/2024/02/09/advanced-macos-commandline-network-management</id><content type="html" xml:base="https://illudium.github.io/2024/02/09/advanced-macos-commandline-network-management.html"><![CDATA[<p>While MDM is unequivocally a must for managing macOS at (really any) scale, there are times when the core capabilities of MDM won’t meet our needs, and a custom scripted approach is required.</p>

<h3 id="commands-for-determining-the-active-network-interface-and-working-with-dns-server-settings">Commands for determining the active network interface and working with DNS server settings:</h3>

<p>When we want to programmatically determine the existing primary network interface ID, name and existing DNS servers, there are a few different ways we can go about this:</p>

<pre><code class="language-shell">serviceGUID="$(printf "open\nget State:/Network/Global/IPv4\nd.show" | /usr/sbin/scutil | /usr/bin/awk '/PrimaryService/{print $3}')"

serviceName="$(printf "open\nget Setup:/Network/Service/${serviceGUID}\nd.show" | /usr/sbin/scutil | /usr/bin/awk -F': ' '/UserDefinedName/{print $2}')"
</code></pre>

<p>!!! OR !!!</p>

<pre><code class="language-shell">activeIF=$(route -n get 0.0.0.0 2&gt;/dev/null | awk '/interface: / {print $2}')

serviceName=$(networksetup -listnetworkserviceorder | grep "$activeIF" | awk -v FS="(Hardware Port: |,)" '{print $2}')

</code></pre>
<h4 id="the-problem-with-cataloging-existing-dns-servers-when-they-are-supplied-via-dhcp">The problem with cataloging existing DNS servers, when they are supplied via DHCP</h4>

<p>When DNS servers are provisioned via DHCP, a common approach for determining the IP addresses for said servers will fail:</p>

<pre><code class="language-shell">/usr/sbin/networksetup -getdnsservers "$serviceName"
</code></pre>

<p>Returns with incorrect info: “There aren’t any DNS Servers set on &lt;serviceName&gt;”</p>

<p>Which is hardly useful ! So, we can proceed with the following:</p>

<p>For utility and extra <a href="https://www.google.com/search?q=shell+scripting+using+an+array">tech-type fun, let’s use an array !</a></p>
<pre><code class="language-shell">currDNS=($(/usr/sbin/networksetup -getdnsservers "$serviceName"))

if [[ ${currDNS[0]} == "There" ]]; then
  currDNS=($(ipconfig getsummary $activeIF | awk -v FS="({|, |})" '/domain_name_server/ {$1=""; print $0 }'))
fi

# check the array, via 
# declare -p currDNS
# For an example of working with the captured info:
# echo ${currDNS[0]}

# So now you can capture those existing DNS servers and append another

/usr/sbin/networksetup -setdnsservers "$serviceName" ${currDNS[0]} ${currDNS[1]} 8.8.8.8
</code></pre>

<h4 id="originally-published-by-me-feb-9th-2024">Originally published by me, Feb 9th, 2024</h4>]]></content><author><name>David Haines</name></author><category term="Other" /><summary type="html"><![CDATA[While MDM is unequivocally a must for managing macOS at (really any) scale, there are times when the core capabilities of MDM won’t meet our needs, and a custom scripted approach is required.]]></summary></entry><entry><title type="html">GCP (Google Cloud): Discovery - collecting, reviewing auditing Projects and IAM</title><link href="https://illudium.github.io/2023/12/15/GCP-googlecloud-IAM-project-discovery.html" rel="alternate" type="text/html" title="GCP (Google Cloud): Discovery - collecting, reviewing auditing Projects and IAM" /><published>2023-12-15T00:00:00+00:00</published><updated>2023-12-15T00:00:00+00:00</updated><id>https://illudium.github.io/2023/12/15/GCP-googlecloud-IAM-project-discovery</id><content type="html" xml:base="https://illudium.github.io/2023/12/15/GCP-googlecloud-IAM-project-discovery.html"><![CDATA[<p>Pulling GCP IAM information typically means dealing with how GCP effectively uses Projects as a boundary/encapsulation.</p>

<p>Start by listing all projects in the root folder of an organization in GCP:</p>

<pre><code class="language-gcloud">gcloud alpha projects search --query="parent.id=&lt;tenant_ID_Here"
</code></pre>

<p>AND</p>

<pre><code class="language-gcloud">gcloud projects list --filter 'parent.id=&lt;id_here&gt; AND parent.type=organization' | awk '{print $1 }' &gt; projects.txt
</code></pre>

<p>And from there, reference the following with something like</p>

<pre><code class="language-shell">for Project in projects.txt; do gcloud projects get-iam-policy Project; done
</code></pre>

<p>For more information and reference, see 
https://stackoverflow.com/questions/44746358/how-do-i-list-all-iam-users-for-my-google-cloud-project</p>

<p><strong>Dec 15, 2023</strong></p>]]></content><author><name>David Haines</name></author><category term="Other" /><summary type="html"><![CDATA[Pulling GCP IAM information typically means dealing with how GCP effectively uses Projects as a boundary/encapsulation.]]></summary></entry><entry><title type="html">IDRAC RED007: UNABLE TO VERIFY UPDATE PACKAGE SIGNATURE</title><link href="https://illudium.github.io/2023/10/05/IDRAC-RED007-UNABLE-TO-VERIFY-UPDATE-PACKAGE-SIGNATURE.html" rel="alternate" type="text/html" title="IDRAC RED007: UNABLE TO VERIFY UPDATE PACKAGE SIGNATURE" /><published>2023-10-05T00:00:00+00:00</published><updated>2023-10-05T00:00:00+00:00</updated><id>https://illudium.github.io/2023/10/05/IDRAC%20RED007:%20UNABLE%20TO%20VERIFY%20UPDATE%20PACKAGE%20SIGNATURE</id><content type="html" xml:base="https://illudium.github.io/2023/10/05/IDRAC-RED007-UNABLE-TO-VERIFY-UPDATE-PACKAGE-SIGNATURE.html"><![CDATA[<p>Dell servers provide an iDRAC (“Integrated Dell Remote Access Controller”) card for remote management of the unit. Note that this feature is a default (with some limited functionality in the “express” version) in Dell’s most entry-level tower server options.</p>

<p>There are a number of options for managing updates for Dell servers, including direct access to an iDRAC card, which is configured with a specifed network configuration during initial setup of a/the server in question. Of course, please observe standard best-practices and never provide public accessibility to any such device, keep it behind your perimeter firewall where it (the iDRAC interface) can only be accessed via VPN.
Once configured the iDRAC card is readily accessible at its assigned IP address, via a web-browser.</p>

<p>While there may be a tendency to “set it and forget it” with regards to something like this, there is an expectation to keep the iDRAC updated, and generally within a certain range (for reasons of compatibility if not official support) of associated system BIOS versions.
If you are tasked with maintaining a Dell server that’s fallen behind in terms of updates, you can encounter an error when attempting to update an iDRAC when jumping up too many versions:</p>

<p>idrac RED007: Unable to verify Update Package signature</p>

<h3 id="remediation">Remediation</h3>

<p>This is most probably due to the existing iDRAC setup lacking required information about newer security (certificate) information for the much newer update installer.</p>

<p><strong>A confirmed fix</strong> is to apply earlier updates to/for the iDRAC in a more step-wise manner:
For example, if the card is listed at version 2.3x.(etc), apply the update to 2.40.40.40 then 2.5x, etc. up the latest update. It is often possible to skip one version, but as always, proceed with due care &amp; caution.</p>

<h4 id="originally-published-by-me-january-29-2019">Originally published by me, January 29, 2019</h4>]]></content><author><name>David Haines</name></author><category term="Other" /><summary type="html"><![CDATA[Dell servers provide an iDRAC (“Integrated Dell Remote Access Controller”) card for remote management of the unit. Note that this feature is a default (with some limited functionality in the “express” version) in Dell’s most entry-level tower server options.]]></summary></entry><entry><title type="html">New items on a fileserver (network fileshare) from one user are missing (don’t show up) for other users:</title><link href="https://illudium.github.io/2023/05/06/new-items-on-a-fileserver.html" rel="alternate" type="text/html" title="New items on a fileserver (network fileshare) from one user are missing (don’t show up) for other users:" /><published>2023-05-06T00:00:00+00:00</published><updated>2023-05-06T00:00:00+00:00</updated><id>https://illudium.github.io/2023/05/06/new-items-on-a-fileserver</id><content type="html" xml:base="https://illudium.github.io/2023/05/06/new-items-on-a-fileserver.html"><![CDATA[<p>A common occurrence with clients/users on Macs working with a fileserver (network shares)
is that when someone else adds new items (files, folders) to network (server-based) sharepoint/folder/drive, 
other Mac users don’t see those new items, they appear to be missing or “hidden,” but they’re not.</p>

<p>(This is actually a longstanding issue with macOS and the Finder).</p>

<p>–</p>

<h2 id="an-available-workaround-as-remediation">An available workaround as remediation:</h2>

<p>This is a long-standing issue with (shortcoming of the macOS Finder, in that it’s not very good at picking up changes or auto-refreshing in response to underlying changes in a network-based volume. It can happen with OS X Server-based AFP, and various vendors’ AFP or SMB server-based shares/network folders.
One thing we can easily do is create an AppleScript to prompt/prod the Finder to refresh. 
Save it as an application, store it somewhere safe from accidential deletion (eg: /Library/CompanySupport) and then add it (drag and drop) to the top of a Finder window. Users can click on it to cause a Finder refresh.
Optionally, you can add a dialog stating that a refresh is happening.</p>

<p>The AppleScript content is below:</p>

<pre><code class="language-applescript">try
 tell application "Finder" to update items of front window
end try
</code></pre>

<p>And with a dialog:</p>

<pre><code class="language-applescript">try
 tell application "Finder" to update items of front window
 display dialog "Refreshing the Finder" default button "OK" giving up after 1
end try
</code></pre>]]></content><author><name>David Haines</name></author><category term="Other" /><summary type="html"><![CDATA[A common occurrence with clients/users on Macs working with a fileserver (network shares) is that when someone else adds new items (files, folders) to network (server-based) sharepoint/folder/drive, other Mac users don’t see those new items, they appear to be missing or “hidden,” but they’re not.]]></summary></entry><entry><title type="html">macOS and the continuing saga of softwareupdate (software update) being “frozen” or not working, no updates listed</title><link href="https://illudium.github.io/2023/01/25/macOS-and-the-continuing-saga-of-softwareupdate.html" rel="alternate" type="text/html" title="macOS and the continuing saga of softwareupdate (software update) being “frozen” or not working, no updates listed" /><published>2023-01-25T00:00:00+00:00</published><updated>2023-01-25T00:00:00+00:00</updated><id>https://illudium.github.io/2023/01/25/macOS%20and%20the%20continuing-saga-of-softwareupdate</id><content type="html" xml:base="https://illudium.github.io/2023/01/25/macOS-and-the-continuing-saga-of-softwareupdate.html"><![CDATA[<p>There is a well-known issue with macOS in which a Mac does not show available software updates. This has been occurring since the time of macOS Big Sur - aka <a href="https://www.youtube.com/watch?v=KOO5S4vxi0o">“macOS ‘(this one) goes to’ 11”</a></p>

<hr />

<h3 id="investigating-further">Investigating further</h3>
<p>If you look at the running processes, you may see an existing <code>softwareudpated</code> process listed, which might have been active for some time.</p>

<p>Manually launching Software Update (in the GUI) or using the <code>softwareudpate</code> command, will simply sit without returning anything about available updates.</p>

<h4 id="remediation">Remediation</h4>

<p>To get past this, I have found the following helpful and the steps do not require a reboot:</p>

<p>Run the following via the Terminal (or remotely via ssh):
<code>sudo /bin/launchctl disable system/com.apple.softwareupdated</code></p>

<p>Then wait several seconds, and run:
<code>sudo /bin/launchctl enable system/com.apple.softwareupdated</code></p>

<p>Wait several more seconds. Note, the following should be (technically speaking) redundant and unnecessary, but think of it as one more “kick” to help get things working again:</p>

<p><code>sudo /bin/launchctl kickstart -k system/com.apple.softwareupdated</code></p>

<p>And - hopefully - you’ll find the problem resolved, as I have so far.</p>

<h4 id="originally-published-by-me-march-17th-2022">Originally published by me, March 17th, 2022</h4>]]></content><author><name>David Haines</name></author><category term="Other" /><summary type="html"><![CDATA[There is a well-known issue with macOS in which a Mac does not show available software updates. This has been occurring since the time of macOS Big Sur - aka “macOS ‘(this one) goes to’ 11”]]></summary></entry></feed>