<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4301941765729087526</id><updated>2024-11-08T07:33:21.901-08:00</updated><category term="sysadmin"/><category term="lopsa"/><category term="PICC"/><category term="email"/><category term="family"/><category term="njmsp"/><category term="racing"/><title type='text'>The Adventures of Netman</title><subtitle type='html'>The miscellaneous ramblings of an overworked IT worker.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://netman29.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://netman29.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Netman</name><uri>http://www.blogger.com/profile/03724027441220808204</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4301941765729087526.post-4669021423306767399</id><published>2015-01-13T06:09:00.002-08:00</published><updated>2015-01-13T06:09:31.366-08:00</updated><title type='text'>Introducing UpdateDay patching</title><content type='html'>&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
In the school district where I work, we have a large number of laptop carts. Day to day usage of these carts varies greatly. Most are used often at some locations while at the others they will sit in the carts for days or weeks at a time. We are also dealing with a legacy carryover - generic accounts. The transition away from these generic accounts has been slow, mainly due to support issues (i.e. we have a small support staff). Since the laptops are often used with the same account, users find it easy to just close the lid when they put them away at the end of their session. The result of this is that we have laptops that are often not logged-out or shutdown for months at a time. Also, they often leave browsers and other applications open. Patching these computers has become a nightmare. We’ve been using&amp;nbsp;&lt;a href=&quot;http://www.jamfsoftware.com/&quot; style=&quot;border: 0px; color: #047ac6; line-height: 1.428571em; margin: 0px; padding: 0px; word-break: break-all;&quot;&gt;Casper&lt;/a&gt;&amp;nbsp;for a few years to deploy software, but one of the drawbacks to using it as it comes out of box its that it will, if you’re not careful, install software while a user is logged in and using the software. This has caused us to receive numerous angry emails and phone calls telling us how evil we are for disrupting their work and ruining their computer. Casper does have the ability to install on startup/shutdown or on login/logout but as I’ve stated above, neither of these happen consistently in our environment. To combat this, we were looking for a method to deliver updates to our users.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
Additionally, we will be taking part in the upcoming &lt;a href=&quot;http://parcc.pearson.com/&quot; target=&quot;_blank&quot;&gt;PARCC&lt;/a&gt; online testing later in the school year. As a part of the preparation for these tests we have had to verify that each computer has the prerequisites for the test. &amp;nbsp;In order to prove this, at a glance, we create reports in the JSS. We have Extension Attributes that display the requirements along with other information. &amp;nbsp;We periodically distill this information into reports that we provide to upper management to calm their fears that we will not be ready in time.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
After watching&amp;nbsp;&lt;a href=&quot;http://managingosx.wordpress.com/&quot; style=&quot;border: 0px; color: #047ac6; line-height: 1.428571em; margin: 0px; padding: 0px; word-break: break-all;&quot;&gt;Greg Neagle&lt;/a&gt;&amp;nbsp;demonstrate&amp;nbsp;&lt;a href=&quot;https://www.evernote.com/OutboundRedirect.action?dest=https%3A%2F%2Fgithub.com%2Fautopkg%2Fautopkg&quot; style=&quot;border: 0px; color: #047ac6; line-height: 1.428571em; margin: 0px; padding: 0px; word-break: break-all;&quot;&gt;AutoPkg&lt;/a&gt;&amp;nbsp;last summer at the&amp;nbsp;&lt;a href=&quot;http://macadmins.psu.edu/&quot; style=&quot;border: 0px; color: #047ac6; line-height: 1.428571em; margin: 0px; padding: 0px; word-break: break-all;&quot;&gt;Penn State MacAdmins&lt;/a&gt;&amp;nbsp;conference, we began using AutoPkg with&amp;nbsp;&lt;a href=&quot;https://www.evernote.com/OutboundRedirect.action?dest=https%3A%2F%2Fgithub.com%2Farubdesu%2Fjss-autopkg-addon&quot; style=&quot;border: 0px; color: #047ac6; line-height: 1.428571em; margin: 0px; padding: 0px; word-break: break-all;&quot;&gt;Alister Banks’ JSS-autopkg-addon&lt;/a&gt;&amp;nbsp;last summer. For those that are unfamiliar with it AutoPkg is a software package that can be used to download commonly used software updates and package them into an easily deployable format. So now I have in our JSS the latest versions of the software that we use daily. I just needed to find a way to deploy it in a consistent manner.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
I discovered the final piece to the puzzle when Rich Trouton released his&amp;nbsp;&lt;a href=&quot;http://derflounder.wordpress.com/category/first-boot-package-install/&quot; style=&quot;border: 0px; color: #047ac6; line-height: 1.428571em; margin: 0px; padding: 0px; word-break: break-all;&quot;&gt;First-Boot-Package-Install&lt;/a&gt;&amp;nbsp;package. This packages, after a restart, will iterate through a series of folders and install the software packages that it finds.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px; text-align: center;&quot;&gt;
&lt;b style=&quot;line-height: 1.428571em;&quot;&gt;&lt;span style=&quot;font-size: 18px; line-height: 1.428571em;&quot;&gt;The Solution&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px; text-align: center;&quot;&gt;
&lt;b style=&quot;line-height: 1.428571em;&quot;&gt;Phase 1: Staging the Update Packages&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
The first part of the solution we needed to find a method to copy the software packages into a “secret location” on the computer and store them in folders to be used by the first boot packages. In order for this to work properly, the packages need to be stored in a numbered folder system. To accomplish this I developed the script below:&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;#!/bin/bash&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;pkgname=$4&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;echo &quot;Package is &quot;$4&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;basedir=‘/&lt;i style=&quot;line-height: 1.428571em;&quot;&gt;secretlocation&lt;/i&gt;/&#39;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;waitingroom=&#39;/Library/Application Support/JAMF/Waiting Room/&#39;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;source=$waitingroom$pkgname&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;echo &quot;Cached file is &quot;$source&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;for tens in {0..9}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;do&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for ones in {0..9}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foldernum=$tens$ones&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; update_dir=$basedir$foldernum&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #echo $foldernum,$update_dir&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ ! -d &quot;${update_dir}&quot; ]; then&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mkdir -p ${update_dir}&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break 2&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; done&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;done&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;destination=$update_dir/$pkgname&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;echo &quot;The destination is &quot;$destination&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;# Move the cached package into the appropriate folder&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;mv &quot;$source&quot; &quot;$destination&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;# Remove the Casper receipt (XML) file&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;echo &quot;Cleaning Casper receipt&quot; $source&quot;.cache.xml&quot;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;rm &quot;$source&quot;.cache.xml&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;exit 0&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
A Casper policy is used to cache the package to the computer. A numbered folder gets created and the packages get moved into the next folder. Then we remove the Casper &quot;receipt&quot; file so that it doesn&#39;t think that something is there to install. In the below picture you can see that I have it set to install via a custom trigger during testing. This trigger will be maintained during deployment as you will see later. Pre-deployment we will use the recurring trigger to stage the packages prior to the UpdateDay.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;div class=&quot;image-and-hover&quot; style=&quot;border: 0px; display: inline-block; line-height: 1.428571em; margin: 0px; max-width: 100%; padding: 0px; position: relative;&quot;&gt;
&lt;div class=&quot;image-hover-container&quot; style=&quot;-webkit-box-shadow: rgba(0, 0, 0, 0.498039) 0px 1px 3px; background-color: #f7f7f7; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 0px; box-shadow: rgba(0, 0, 0, 0.498039) 0px 1px 3px; display: inline; height: 25px; line-height: 1.428571em; margin: 0px; opacity: 0; padding: 0px; pointer-events: none; position: absolute; right: 10px; top: 10px; width: 60px; z-index: 100;&quot;&gt;
&lt;a class=&quot;hover-download&quot; href=&quot;https://www.evernote.com/shard/s34/sh/cda14aaa-779d-4b7c-b565-d185eeb1f010/003cf6e3ee1e42a4?content=#&quot; style=&quot;-webkit-background-size: 16px 17px; background: url(https://www.evernote.com/redesign/sharing/SharedNoteViewAction/download.png) 50% 50% / 16px 17px no-repeat; border-right-color: rgb(189, 189, 189); border-right-style: solid; border-width: 0px 1px 0px 0px; color: #047ac6; display: inline-block; height: 25px; line-height: 1.428571em; margin: 0px; padding: 0px 1px 0px 0px; width: 29px; word-break: break-all; z-index: 101;&quot; title=&quot;Download&quot;&gt;&lt;/a&gt;&lt;a class=&quot;hover-gallery&quot; href=&quot;https://www.evernote.com/shard/s34/sh/cda14aaa-779d-4b7c-b565-d185eeb1f010/003cf6e3ee1e42a4?content=#&quot; style=&quot;-webkit-background-size: 18px; background: url(https://www.evernote.com/redesign/sharing/SharedNoteViewAction/gallery.png) 50% 50% / 18px 18px no-repeat; border: 0px; color: #047ac6; display: inline-block; height: 25px; line-height: 1.428571em; margin: 0px; padding: 0px; width: 29px; word-break: break-all; z-index: 101;&quot; title=&quot;Image Gallery&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje-peB5itWprUy_cuZ4tGN6NLKdKfscfkeB9ElP41UIcRsWOvofBwXxI0PQmRY7kBq5a8ENdPHk6Tt1YdK9AL2qofhvExoQRGopcerqwtOxqfSaLLE68qdmDEiq4-bjY7tU3nQvdZrAFE/s1600/Cachepolicy1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje-peB5itWprUy_cuZ4tGN6NLKdKfscfkeB9ElP41UIcRsWOvofBwXxI0PQmRY7kBq5a8ENdPHk6Tt1YdK9AL2qofhvExoQRGopcerqwtOxqfSaLLE68qdmDEiq4-bjY7tU3nQvdZrAFE/s1600/Cachepolicy1.png&quot; height=&quot;185&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWMFoN34sXEyYDJG-q2fnmNAjHL0Q_RW-nHrN2pv3bNpQwNnjpFz5k3V_4MEbfZ3CYPB20xX6Bp3e8UydDclE_XvyD0gTJYNHpq3SBDfA8WbknyFiNLQ9iqLx555jgswnh7tsaUlHVfb8/s1600/Cachepolicy2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWMFoN34sXEyYDJG-q2fnmNAjHL0Q_RW-nHrN2pv3bNpQwNnjpFz5k3V_4MEbfZ3CYPB20xX6Bp3e8UydDclE_XvyD0gTJYNHpq3SBDfA8WbknyFiNLQ9iqLx555jgswnh7tsaUlHVfb8/s1600/Cachepolicy2.png&quot; height=&quot;218&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;div class=&quot;image-and-hover&quot; style=&quot;border: 0px; display: inline-block; line-height: 1.428571em; margin: 0px; max-width: 100%; padding: 0px; position: relative;&quot;&gt;
&lt;div class=&quot;image-hover-container&quot; style=&quot;-webkit-box-shadow: rgba(0, 0, 0, 0.498039) 0px 1px 3px; background-color: #f7f7f7; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 0px; box-shadow: rgba(0, 0, 0, 0.498039) 0px 1px 3px; display: inline; height: 25px; line-height: 1.428571em; margin: 0px; opacity: 0; padding: 0px; pointer-events: none; position: absolute; right: 10px; top: 10px; width: 60px; z-index: 100;&quot;&gt;
&lt;a class=&quot;hover-download&quot; href=&quot;https://www.evernote.com/shard/s34/sh/cda14aaa-779d-4b7c-b565-d185eeb1f010/003cf6e3ee1e42a4?content=#&quot; style=&quot;-webkit-background-size: 16px 17px; background: url(https://www.evernote.com/redesign/sharing/SharedNoteViewAction/download.png) 50% 50% / 16px 17px no-repeat; border-right-color: rgb(189, 189, 189); border-right-style: solid; border-width: 0px 1px 0px 0px; color: #047ac6; display: inline-block; height: 25px; line-height: 1.428571em; margin: 0px; padding: 0px 1px 0px 0px; width: 29px; word-break: break-all; z-index: 101;&quot; title=&quot;Download&quot;&gt;&lt;/a&gt;&lt;a class=&quot;hover-gallery&quot; href=&quot;https://www.evernote.com/shard/s34/sh/cda14aaa-779d-4b7c-b565-d185eeb1f010/003cf6e3ee1e42a4?content=#&quot; style=&quot;-webkit-background-size: 18px; background: url(https://www.evernote.com/redesign/sharing/SharedNoteViewAction/gallery.png) 50% 50% / 18px 18px no-repeat; border: 0px; color: #047ac6; display: inline-block; height: 25px; line-height: 1.428571em; margin: 0px; padding: 0px; width: 29px; word-break: break-all; z-index: 101;&quot; title=&quot;Image Gallery&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; list-style-position: outside; margin: 0.2857em 0px 0.714285em 2em; padding: 0px;&quot;&gt;
&lt;li style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;A numbering scheme is used to ensure that the packages get installed in the proper order.&lt;/li&gt;
&lt;li style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;The script checks for the existence of a numbered folder in the $secretlocation and increments its counters until if finds an available one to use (00-99)&lt;/li&gt;
&lt;li style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;The script then moves the package into the numbered folder&lt;/li&gt;
&lt;li style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;The name of the package is passed to the script as $4. This setting is set in Casper Admin.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgxRouHC1gSnVhpTJ5mmtVUEjZmBoQKH_9Wv4KvbACe7q94qC3ao5zL0x5aFwZ1NJpvbF6N-awsywCMbJZPDLPRT1DFDqgRAeeHhcIyoF-MfC4YgrtJywY978r-GIqTjioMH-1KnAwFD8/s1600/ScriptParameter.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgxRouHC1gSnVhpTJ5mmtVUEjZmBoQKH_9Wv4KvbACe7q94qC3ao5zL0x5aFwZ1NJpvbF6N-awsywCMbJZPDLPRT1DFDqgRAeeHhcIyoF-MfC4YgrtJywY978r-GIqTjioMH-1KnAwFD8/s1600/ScriptParameter.png&quot; height=&quot;291&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;div class=&quot;image-and-hover&quot; style=&quot;border: 0px; display: inline-block; line-height: 1.428571em; margin: 0px; max-width: 100%; padding: 0px; position: relative; width: 580px;&quot;&gt;
&lt;div class=&quot;image-hover-container&quot; style=&quot;-webkit-box-shadow: rgba(0, 0, 0, 0.498039) 0px 1px 3px; background-color: #f7f7f7; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 0px; box-shadow: rgba(0, 0, 0, 0.498039) 0px 1px 3px; display: inline; height: 25px; line-height: 1.428571em; margin: 0px; opacity: 0; padding: 0px; pointer-events: none; position: absolute; right: 10px; top: 10px; width: 60px; z-index: 100;&quot;&gt;
&lt;a class=&quot;hover-download&quot; href=&quot;https://www.evernote.com/shard/s34/sh/cda14aaa-779d-4b7c-b565-d185eeb1f010/003cf6e3ee1e42a4?content=#&quot; style=&quot;-webkit-background-size: 16px 17px; background: url(https://www.evernote.com/redesign/sharing/SharedNoteViewAction/download.png) 50% 50% / 16px 17px no-repeat; border-right-color: rgb(189, 189, 189); border-right-style: solid; border-width: 0px 1px 0px 0px; color: #047ac6; display: inline-block; height: 25px; line-height: 1.428571em; margin: 0px; padding: 0px 1px 0px 0px; width: 29px; word-break: break-all; z-index: 101;&quot; title=&quot;Download&quot;&gt;&lt;/a&gt;&lt;a class=&quot;hover-gallery&quot; href=&quot;https://www.evernote.com/shard/s34/sh/cda14aaa-779d-4b7c-b565-d185eeb1f010/003cf6e3ee1e42a4?content=#&quot; style=&quot;-webkit-background-size: 18px; background: url(https://www.evernote.com/redesign/sharing/SharedNoteViewAction/gallery.png) 50% 50% / 18px 18px no-repeat; border: 0px; color: #047ac6; display: inline-block; height: 25px; line-height: 1.428571em; margin: 0px; padding: 0px; width: 29px; word-break: break-all; z-index: 101;&quot; title=&quot;Image Gallery&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
By setting the parameter name here it is passed to the web interface when setting up the policy. This serves as a reminder to the creator of the policy that they are supposed to enter something here.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
The script then moves the package to the&amp;nbsp;&lt;i style=&quot;line-height: 1.428571em;&quot;&gt;secretlocation&lt;/i&gt;. The package name is used here : (1) so that we will only move only the intended package (packages cached by any other policies are not disturbed;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
The receipt file that Casper creates is deleted so that if a “install all cached packages” policy is run, it will not look for this package.&amp;nbsp;This is repeated for all of the packages that we will be installing.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
The last package that we install is a payload-free package that has script that runs a recon. This ensures that the inventory in the JSS has up to date information that we can use to verify the process has completed successfully.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px; text-align: center;&quot;&gt;
&lt;b style=&quot;line-height: 1.428571em;&quot;&gt;Phase 2: Installing the Update Packages&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
After the packages are downloaded, we can then move to installing them. Here we’ll be using another policy and script combo called via a custom event &quot;trigger&quot;. At deployment time we set the policy to be active at startup so that we can tell the user to simply restart the computer to get the updates.&amp;nbsp;The process can also be started when the trigger is called via a &quot;jamf policy -event updatekickoff&quot; statement via script, command-line, or remote command. To give you a better idea, here is how the policy looks:&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoxy10Gz71ebWmbdUDIilSdotEaGCE1WqxkzBCXxrsMZgHlCu8m2SuCbQe3wO1PhBHQWZ47aoJiJdAqVTOJnJpew380mJHG1yLpKPkE7YA0QPb9kikowP00W8P-G8j4ceapHMc5Mi9FNc/s1600/Screen+Shot+2015-01-12+at+7.47.29+PM.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoxy10Gz71ebWmbdUDIilSdotEaGCE1WqxkzBCXxrsMZgHlCu8m2SuCbQe3wO1PhBHQWZ47aoJiJdAqVTOJnJpew380mJHG1yLpKPkE7YA0QPb9kikowP00W8P-G8j4ceapHMc5Mi9FNc/s1600/Screen+Shot+2015-01-12+at+7.47.29+PM.png&quot; height=&quot;125&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
Here’s the update_kick.sh script that we’re using to install of the First-Boot-Package-Install packages:&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;#!/bin/bash&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;jamf=&#39;/usr/sbin/jamf&#39;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: x-small; line-height: 1.428571em;&quot;&gt;secretloc=&lt;span style=&quot;line-height: 17px;&quot;&gt;‘&lt;/span&gt;/&lt;i style=&quot;line-height: 1.428571em;&quot;&gt;secretlocation&lt;/i&gt;/&#39;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;# Check for FBI packages&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;if [ ! -f &quot;${secretloc}fbi.pkg&quot; ]; then&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $jamf policy -event fbi-install&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ ! -f &quot;${secretloc}fbiswu.pkg&quot; ]; then&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $jamf policy -event fbi-install&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;fi&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;/usr/sbin/installer -dumplog -verbose -pkg &quot;${secretloc}fbiswu.pkg&quot; -target /&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: 12px; line-height: 1.428571em;&quot;&gt;$jamf policy -event patching&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;div style=&quot;border: 0px; line-height: 1.428571em; margin: 0px; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-size: x-small; line-height: 1.428571em;&quot;&gt;&lt;span style=&quot;line-height: 17px;&quot;&gt;exit 0&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
This script checks the $secretlocation for the First-Boot-Package-Install packages. If they are missing it uses a custom trigger, “fbi-install”, to download them to the $secretlocation and then installs the desired version. (We’re installing both versions, with and without Apple Software Updates, onto the computer so that we have them in the future.)&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
Then, we re-check for any packages waiting to be cached via the trigger “patching&quot;. As I’ve stated above, sometimes the laptops sit in the carts for weeks, so they won’t have an opportunity to download the updates. This way they’ll have the ability to pull down the packages. The other computers will also then be able get any last minute packages. Then, once everything is in place, the policy reboots the computer.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
One of the reasons why we wanted to move away from Casper&#39;s install at startup process is that it doesn&#39;t provide any feedback to the user - the computer just sits there and appears to be frozen. Initially we wanted to provide some kind of feedback to the user during the process, but it seems that Apple has removed some of that ability in 10.9. Indeed, when we ran versions of this script using CocoaDialog, JamfHelper and system Notifications we had errors related to WindowServer not being able to start at every line of code. We&#39;re using Casper&#39;s built-in notifications to give a warning to the user if someone is logged in.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
The First Boot Packages use&amp;nbsp;&lt;a href=&quot;https://www.evernote.com/OutboundRedirect.action?dest=https%3A%2F%2Fgithub.com%2FMagerValp%2FLoginLog&quot; style=&quot;border: 0px; color: #047ac6; line-height: 1.428571em; margin: 0px; padding: 0px; word-break: break-all;&quot;&gt;Per Olofsson’s LoginLog&lt;/a&gt;&amp;nbsp;&amp;nbsp;application to prevent the user from logging in by displaying a log window overtop of the login window as seen below. &amp;nbsp;This fulfills our desire to provide feedback to the user. It also prevents them from logging in until the installations have finished. After the packages have been installed, the computer restarts and is ready for use.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkT_d4l1WLURDA0fHLQT5fbgdwlm-7KPOtBYFLdl4-klOR80Tx5VTkdOmUjZiXbYvTnjUe6bcfEn2eyJkOGe9Sa1Q8p5bTmi8smBqFR7fx3iH-3JVKy0bC_2EJDRKbUH5HSxd3kS6iW_M/s1600/loginlog.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkT_d4l1WLURDA0fHLQT5fbgdwlm-7KPOtBYFLdl4-klOR80Tx5VTkdOmUjZiXbYvTnjUe6bcfEn2eyJkOGe9Sa1Q8p5bTmi8smBqFR7fx3iH-3JVKy0bC_2EJDRKbUH5HSxd3kS6iW_M/s1600/loginlog.png&quot; height=&quot;180&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px; text-align: center;&quot;&gt;
&lt;b style=&quot;line-height: 1.428571em;&quot;&gt;Phase 3: &amp;nbsp;Adding Self Service to the Process&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px; text-align: center;&quot;&gt;
&lt;b style=&quot;line-height: 1.428571em;&quot;&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px; text-align: left;&quot;&gt;
&lt;span style=&quot;line-height: 1.428571em;&quot;&gt;At the outset, we knew that we would have to come up with a way of updating the staff computers as well. Given the number of and location of the computers we have, there is no way that we would be able to touch all of them. After allowing the above procedure to run for a couple of weeks successfully, we decided to see if we could extend the procedure to be run from Casper&#39;s Self Service application. We could then use this to allow our teachers and administrators to install updates at their convenience. It turned out to be easier than we initially thought, a two-step process in fact. All we had to do was add the additional computers to the update package scopes. We then duplicated the &quot;Update Kickoff&quot; policy, gave it an cool official sounding name (2015 Software Update 01), set it for Self Service and released it to our staff.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px; text-align: center;&quot;&gt;
&lt;b style=&quot;line-height: 1.428571em;&quot;&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px; text-align: center;&quot;&gt;
&lt;b style=&quot;line-height: 1.428571em;&quot;&gt;Lessons Learned and Future Additions&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
Initially we had a “/sbin/reboot” command at the end of the script, but we quickly learned that it caused the computer to enter a continuous rebooting loop because the policy would never finish.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
The first question that was asked after I sent out the instructions for how to update the staff computers was &quot;what about software updates?&quot; We have a Self Service item for installing system updates, but other than a progress bar with minimal text, again there is no feedback to the user. Also, the user has to continually run it to make sure that everything has been installed. As mentioned above, there is a version of the First-Boot-Package-Install packages that installs Apple Software Updates (First Boot Package Install With Automated Apple Software Update). This package will continually check for updates until there are none remaining. We will be creating a Self Service policy, based upon the one described above, to do this. &amp;nbsp;We decided to keep them separate because users sometimes become impatient when an installation seems to take &quot;forever&quot; to finish. &amp;nbsp;This way, they can choose what they will be updating and when it&#39;ll be done.&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: Helvetica, Arial, &#39;Droid Sans&#39;, sans-serif; font-size: 14px; line-height: 19.9999942779541px; margin: 0px; padding: 0px;&quot;&gt;
We quickly discovered that missing from this process was the ability to monitor progress. Because this process is done outside of Casper, we couldn&#39;t easily use its tools to troubleshoot. We could wait until the next Recon ran, but that wouldn&#39;t give us immediate feedback, or tell us what went wrong. Fortunately the process keeps a log file. We could query the log remotely if needed, but that wouldn&#39;t give us something that we could capture and analyze easily. Since there is a log file, we&#39;re thinking that we should be able to send them to a syslog server.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://netman29.blogspot.com/feeds/4669021423306767399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4301941765729087526/4669021423306767399' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/4669021423306767399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/4669021423306767399'/><link rel='alternate' type='text/html' href='http://netman29.blogspot.com/2015/01/introducing-updateday-patching.html' title='Introducing UpdateDay patching'/><author><name>Netman</name><uri>http://www.blogger.com/profile/03724027441220808204</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje-peB5itWprUy_cuZ4tGN6NLKdKfscfkeB9ElP41UIcRsWOvofBwXxI0PQmRY7kBq5a8ENdPHk6Tt1YdK9AL2qofhvExoQRGopcerqwtOxqfSaLLE68qdmDEiq4-bjY7tU3nQvdZrAFE/s72-c/Cachepolicy1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4301941765729087526.post-7342693369319764773</id><published>2014-07-23T13:25:00.000-07:00</published><updated>2014-07-23T13:30:49.530-07:00</updated><title type='text'>The road to Reposado</title><content type='html'>One of the projects that I&#39;ve had in the back of my head for a while was to ditch Apple&#39;s Software Update Service (SUS) and use &lt;a href=&quot;https://github.com/wdas/reposado&quot; target=&quot;_blank&quot;&gt;Reposado&lt;/a&gt; in its place. &amp;nbsp;We currently have several (20) servers in place. During our ongoing evaluation process we&#39;ve begun to question the necessity of maintaining these servers in their current capacity. We are using them for 3 purposes: Workgroup Manager (MCX), a Casper (JSS) Distribution Point, and Software Update Services.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;MCX is being replaced by profiles. &amp;nbsp;As we move more of our computers to 10.8/10.9, it is no longer necessary to continue this service.&lt;/li&gt;
&lt;li&gt;We could use (virtually) any server to host our Distribution Points.&lt;/li&gt;
&lt;li&gt;Software Update Services only (officially) hosts updates for the same level of the host&#39;s operating system or lower. Since our servers are currently at 10.7.5 this obviously creates a problem. &amp;nbsp;We were able to use a kludge to get it to host 10.8.X updates, but this didn&#39;t work when 10.9 was released.&lt;/li&gt;
&lt;/ul&gt;
So, as you can see, we can possibly do without maintaining Apple branded servers in our environment. As an experiment, on a lonely Sunday afternoon, I decided to install &lt;a href=&quot;https://jamfnation.jamfsoftware.com/viewProduct.html?id=180&amp;amp;view=info&quot; target=&quot;_blank&quot;&gt;Jamf&#39;s Netboot/SUS appliance&lt;/a&gt;&amp;nbsp;in our virtual infrastructure. A couple hours and a few hairs later I was servering updates back through 10.4.X. &amp;nbsp;I quietly put this into production and began servicing our 10.9 clients. This would normally be fine, except that we have relatively slow links to our remote sites&lt;br /&gt;
&lt;br /&gt;
Thus this past week I launched my master plan to replace Apple&#39;s SUS with Reposado. &amp;nbsp;Below is the process that I used. (Warning: This is the process that I used. &amp;nbsp;I&#39;m sure that there are many other ways to do what I&#39;ve done.)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Resources used: &lt;/b&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Reposado GitHub site (&lt;a href=&quot;https://github.com/wdas/reposado&quot;&gt;https://github.com/wdas/reposado&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Margarita GitHub site (&lt;a href=&quot;https://github.com/jessepeterson/margarita&quot;&gt;https://github.com/jessepeterson/margarita&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Bye Bye Apple SUS (&lt;a href=&quot;http://www.nbalonso.com/bye-bye-apple-sus/&quot;&gt;http://www.nbalonso.com/bye-bye-apple-sus/&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Reposado Apple Software Update Server (&lt;a href=&quot;http://signalboxes.net/mac2linux/reposado-apple-software-update-server/&quot;&gt;http://signalboxes.net/mac2linux/reposado-apple-software-update-server/&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Setting up Reposado and Margarita on Linux – Part 1 (&lt;a href=&quot;http://macadmincorner.com/setting-up-reposado-and-margarita-on-linux-part-1/&quot;&gt;http://macadmincorner.com/setting-up-reposado-and-margarita-on-linux-part-1/&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Preparation:&lt;/b&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Clone (download) Reposado and Margarita repositories.&lt;/li&gt;
&lt;li&gt;Download X-Code command line tools&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;b&gt;Process:&lt;/b&gt;&lt;br /&gt;
Create Reposado working directory:&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;mkdir /usr/local/reposado&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Copy items in reposado-master/code directory to this folder.&lt;br /&gt;
&lt;br /&gt;
Create Reposado repository folders:&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;mkdir -p /Volumes/Data/reposado/html&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;mkdir /Volumes/Data/reposado/metadata&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Change to the Reposado working directory:&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;cd /usr/local/reposado&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Configure Reposado and answer the questions that come up. (Answers in bold) In this example I’ll be using port 80 to serve updates:&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;./repoutil --configure&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Path to store replicated catalogs and updates [None]: &lt;b&gt;/Volumes/Data/reposado/html&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Path to store Reposado metadata [None]: &lt;b&gt;/Volumes/Data/reposado/metadata/&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Base URL for your local Software Update Service (Example: http://su.your.org -- leave empty if you are not replicating updates) [None]: &lt;b&gt;http://myupdateserver.com&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Clone the Apple Software Update library:&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;./repo_sync&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
The initial sync will take a couple of hours. While this is running, you should see it creating files and indexes and downloading the updates into it’s file structure. &amp;nbsp;Since this is going to take a while, we can begin to prep our web server.&lt;br /&gt;
&lt;br /&gt;
Open the Apache2 configuration file (/etc/apache2/httpd.conf) to make sure it’s setup properly:&lt;br /&gt;
&lt;br /&gt;
•Make sure it’s listening on port 80 (around line 50?):&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;#Listen 12.34.56.78:80&lt;br /&gt;
Listen 80&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
•The rewrite module is enabled: (Uncomment if necessary)&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;LoadModule rewrite_module libexec/apache2/mod_rewrite.so&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
•Change the default directory.&amp;nbsp;Comment out the default line and add your new directory so that it looks like below:&lt;br /&gt;
&lt;br /&gt;
Change: &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Directory &quot;/Library/WebServer/Documents&quot;&lt;/span&gt;&lt;br /&gt;
to: Directory &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&quot;/Volumes/Data/reposado&quot;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
•Some people have found it necessary to make sure that Overrides are enabled (I haven’t found it necessary, but ymmv)&lt;br /&gt;
Change:&amp;nbsp;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;AllowOverride None&lt;/span&gt;&lt;br /&gt;
to:&amp;nbsp;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;AllowOverride All&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Close the file and edit the default port 80 configuration (/etc/apache2/sites/0000_any_80_.conf)&amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
Change the default directory here as well:&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;DocumentRoot &quot;/Volumes/Data/reposado/html”&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
(This step is probably not necessary, but this is the combination was required in order for me to get this working.)&lt;br /&gt;
&lt;br /&gt;
Create a .htaccess file in your Reposado repository with the following items (check the &lt;a href=&quot;https://github.com/wdas/reposado/blob/master/docs/URL_rewrites.txt&quot; target=&quot;_blank&quot;&gt;Reposado wiki&lt;/a&gt; for the latest). This will allow you to point all of your clients to [repositoryURL]/index.sucatalog and not worry about making changes for every operating system:&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLvtSp7y0d8Dmw2OR-IiHtPRSVJtpwGlYRu2OOC5HXI52SwvCNryJet9AhhSu9akuT9BO7fH3Cqwm2ouu2EvBweiFTPhyphenhyphenyFROZ5v4Z1ixKaOtZIPCs7WX5jRBZoS6697hH9rhMRrHakpx0/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;1:  RewriteEngine On  
2:  Options FollowSymLinks  
3:  RewriteBase /  
4:  RewriteCond %{HTTP_USER_AGENT} Darwin/8  
5:  RewriteRule ^index(.*)\.sucatalog$ content/catalogs/index$1.sucatalog [L]  
6:  RewriteCond %{HTTP_USER_AGENT} Darwin/9  
7:  RewriteRule ^index(.*)\.sucatalog$ content/catalogs/others/index-leopard.merged-1$1.sucatalog [L]  
8:  RewriteCond %{HTTP_USER_AGENT} Darwin/10  
9:  RewriteRule ^index(.*)\.sucatalog$ content/catalogs/others/index-leopard-snowleopard.merged-1$1.sucatalog [L]  
10:  RewriteCond %{HTTP_USER_AGENT} Darwin/11  
11:  RewriteRule ^index(.*)\.sucatalog$ content/catalogs/others/index-lion-snowleopard-leopard.merged-1$1.sucatalog [L]  
12:  RewriteCond %{HTTP_USER_AGENT} Darwin/12  
13:  RewriteRule ^index(.*)\.sucatalog$ content/catalogs/others/index-mountainlion-lion-snowleopard-leopard.merged-1$1.sucatalog [L]  
14:  RewriteCond %{HTTP_USER_AGENT} Darwin/13  
15:  RewriteRule ^index(.*)\.sucatalog$ content/catalogs/others/index-10.9-mountainlion-lion-snowleopard-leopard.merged-1$1.sucatalog [L]  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Let’s start the web server and &amp;nbsp;check to make everything is OK:&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;sudo apachectl restart&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Check the log files for errors:&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;tail /var/log/apache2/error_log&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;tail /var/log/apache2/access_log&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After the repo_sync has finished. point one or more of your clients to the new repo and test, test, test:&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;sudo defaults write /Library/Preferences/com.apple.SoftwareUpdate CatalogURL “http://myupdateserver.com/index.sucatalog”&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Verify that your entry was done properly:&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;defaults read /Library/Preferences/com.apple.SoftwareUpdate CatalogURL&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;http://myupdateserver.com/index.sucatalog&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Test your client:&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;sudo softwareupdate -l&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
You should see the computer checking similar to below:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Software Update Tool&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Copyright 2002-2010 Apple&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Software Update found the following new or updated software:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;* SecUpdSrvr2014-003Lion-1.0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Security Update 2014-003 (1.0), 180667K [recommended] [restart]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;* SecUpdSrvr2014-002Lion-1.0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Security Update 2014-002 (1.0), 173813K [recommended] [restart]&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
If you see any errors, check your CatalogURL and try again.&lt;br /&gt;
&lt;br /&gt;
At the server, check the log files to ensure that no errors have occurred. I like to go back 50 or 100 lines or so to make sure I’m seeing the beginning of the process:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;tail -n50 /var/log/apache2/error_log&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;tail -n50 /var/log/apache2/access_log&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Congratulations!! You now have a functioning update server!&lt;br /&gt;
&lt;br /&gt;
Now let’s schedule it to sync nightly:&lt;br /&gt;
&lt;br /&gt;
Create a plist file (reposync.plist) in the Reposado working directory with the following contents:&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLvtSp7y0d8Dmw2OR-IiHtPRSVJtpwGlYRu2OOC5HXI52SwvCNryJet9AhhSu9akuT9BO7fH3Cqwm2ouu2EvBweiFTPhyphenhyphenyFROZ5v4Z1ixKaOtZIPCs7WX5jRBZoS6697hH9rhMRrHakpx0/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;&quot;&gt;&lt;code style=&quot;color: black; word-wrap: normal;&quot;&gt;1:  &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;  
2:  &amp;lt;!DOCTYPE plist PUBLIC &quot;-//Apple Computer//DTD PLIST 1.0//EN&quot; &quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&quot;&amp;gt;  
3:  &amp;lt;plist version=&quot;1.0&quot;&amp;gt;  
4:  &amp;lt;dict&amp;gt;  
5:    &amp;lt;key&amp;gt;Label&amp;lt;/key&amp;gt;  
6:    &amp;lt;string&amp;gt;com.yourcompany.reposync&amp;lt;/string&amp;gt;  
7:    &amp;lt;key&amp;gt;OnDemand&amp;lt;/key&amp;gt;  
8:    &amp;lt;true/&amp;gt;  
9:    &amp;lt;key&amp;gt;RunAtLoad&amp;lt;/key&amp;gt;  
10:    &amp;lt;false/&amp;gt;  
11:    &amp;lt;key&amp;gt;Program&amp;lt;/key&amp;gt;  
12:    &amp;lt;string&amp;gt;/PATH/TO/SCRIPT&amp;lt;/string&amp;gt;  
13:    &amp;lt;key&amp;gt;ProgramArguments&amp;lt;/key&amp;gt;  
14:    &amp;lt;array&amp;gt;  
15:      &amp;lt;string&amp;gt;/usr/local/reposado/repo_sync&amp;lt;/string&amp;gt;  
16:    &amp;lt;/array&amp;gt;  
17:    &amp;lt;key&amp;gt;StartCalendarInterval&amp;lt;/key&amp;gt;  
18:    &amp;lt;dict&amp;gt;  
19:      &amp;lt;key&amp;gt;Hour&amp;lt;/key&amp;gt;  
20:      &amp;lt;integer&amp;gt;02&amp;lt;/integer&amp;gt;  
21:      &amp;lt;key&amp;gt;Minute&amp;lt;/key&amp;gt;  
22:      &amp;lt;integer&amp;gt;00&amp;lt;/integer&amp;gt;  
23:    &amp;lt;/dict&amp;gt;  
24:  &amp;lt;/dict&amp;gt;  
25:  &amp;lt;/plist&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
This plist will run repo_sync every night at 2:00 am. Copy it to /Library/LaunchDaemons/com.mycompany.reposync.plist:&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;cp reposync.plist /Library/LaunchDaemons/com.mycompany.reposync.plist&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
and launch it:&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;sudo launchctl load -w /Library/LaunchDaemons/com.mycompany.reposync.plist&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Next steps: &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Installing Margarita (&lt;a href=&quot;https://github.com/jessepeterson/margarita&quot;&gt;https://github.com/jessepeterson/margarita&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Duplicating this process across all remaining site servers. (Might turn out to be an excuse to start using Puppet (&lt;a href=&quot;http://puppetlabs.com/&quot;&gt;http://puppetlabs.com/&lt;/a&gt;) to manage my servers)&lt;/li&gt;
&lt;li&gt;Implement Sean Kaiser’s Multi-Site solution (&lt;a href=&quot;http://seankaiser.com/blog/2013/05/23/multi-site-reposado/&quot;&gt;http://seankaiser.com/blog/2013/05/23/multi-site-reposado/&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Changing the server configurations to pull from my master repo. (Just an idea, only if bandwidth utilization gets out of hand.)&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://netman29.blogspot.com/feeds/7342693369319764773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4301941765729087526/7342693369319764773' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/7342693369319764773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/7342693369319764773'/><link rel='alternate' type='text/html' href='http://netman29.blogspot.com/2014/07/the-road-to-reposado.html' title='The road to Reposado'/><author><name>Netman</name><uri>http://www.blogger.com/profile/03724027441220808204</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4301941765729087526.post-3268228119057016463</id><published>2014-07-16T08:06:00.000-07:00</published><updated>2014-07-16T08:06:03.484-07:00</updated><title type='text'>Cleaning up the network monitoring</title><content type='html'>&lt;div dir=&quot;ltr&quot;&gt;
Last week I had the pleasure/honor of being able to attend the Penn State Mac Admins Conference. But, before i get to implementing what I learned there are a free things that I need to clean up.&amp;nbsp; One of the issues that I was having prior to leaving was figuring out why our servers weren&#39;t recovering properly from power outages. (Before anybody starts screaming &quot;you should have a UPS!&quot;, we have them but you can only maintain power for so long). We tend to have seasonal power outages and brown outs at this time of year as well as people being helpful and unplugging the server racks. While things usually recover nicely, we&#39;ve been having some timing issues. The servers are coming back up before the network. And since they don&#39;t have the network available, DNS and DHCP epithet don&#39;t or sort of start up. I need to come up d with a way of monitoring this with my current console. I&#39;ve been using &lt;a href=&quot;http://www.opsview.com/&quot; target=&quot;_blank&quot;&gt;Opsview core&lt;/a&gt; for a couple of years to do general system monitoring. It&#39;s based on Nagios and had a semi useful web interface, so I can pretty much bend it to my will. &lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://netman29.blogspot.com/feeds/3268228119057016463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4301941765729087526/3268228119057016463' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/3268228119057016463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/3268228119057016463'/><link rel='alternate' type='text/html' href='http://netman29.blogspot.com/2014/07/cleaning-up-network-monitoring.html' title='Cleaning up the network monitoring'/><author><name>Netman</name><uri>http://www.blogger.com/profile/03724027441220808204</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4301941765729087526.post-7884686648755432200</id><published>2014-07-16T06:07:00.001-07:00</published><updated>2014-07-16T06:16:24.748-07:00</updated><title type='text'>Post PSUMac ToDo List</title><content type='html'>&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font: 13.0px Arial;&quot;&gt;&lt;b&gt;Post Conference ToDo List &lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font: 13.0px Arial;&quot;&gt;Last week I had the honor/pleasure of attending the &lt;a href=&quot;http://macadmins.psu.edu/&quot; target=&quot;_blank&quot;&gt;MacAdministrator&#39;s Conference at Penn State University&lt;/a&gt;. It was a fun filled and brain filling week of techy goodness.&amp;nbsp; Below is the short version of the todo list that I came up with: &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;font: 13.0px Arial;&quot;&gt;Cleaning up and finishing some of my deployment scripts.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font: 13.0px Arial;&quot;&gt;Reposado (&lt;a href=&quot;https://github.com/wdas/reposado&quot;&gt;https://github.com/wdas/reposado&lt;/a&gt;)&lt;/span&gt;&lt;span style=&quot;font: 13.0px Arial;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;font: 13.0px Arial;&quot;&gt;Multi-Site alterations (&lt;a href=&quot;http://seankaiser.com/blog/2013/05/23/multi-site-reposado/&quot;&gt;http://seankaiser.com/blog/2013/05/23/multi-site-reposado/&lt;/a&gt;)&lt;/span&gt;&lt;span style=&quot;font: 13.0px Arial;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;&lt;span style=&quot;font: 13.0px Arial;&quot;&gt;Autopkg (&lt;a href=&quot;https://github.com/autopkg/autopkg&quot;&gt;https://github.com/autopkg/autopkg&lt;/a&gt;)&lt;/span&gt;&lt;span style=&quot;font: 13.0px Arial;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;font: 13.0px Arial;&quot;&gt;JSS addon (&lt;a href=&quot;https://github.com/arubdesu/jss-autopkg-addon&quot;&gt;https://github.com/arubdesu/jss-autopkg-addon&lt;/a&gt;)&lt;/span&gt;&lt;span style=&quot;font: 13.0px Arial;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font: 13.0px Arial;&quot;&gt;Autopkg change notifications &lt;a href=&quot;https://draft.blogger.com/(http://seankaiser.com/blog/2013/12/16/autopkg-change-notifications/&quot;&gt;(http://seankaiser.com/blog/2013/12/16/autopkg-change-notifications/&lt;/a&gt;)&lt;/span&gt;&lt;span style=&quot;font: 13.0px Arial;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;&lt;span style=&quot;font: 13.0px Arial;&quot;&gt;Git (&lt;a href=&quot;https://about.gitlab.com/gitlab-ce/&quot;&gt;https://about.gitlab.com/gitlab-ce/&lt;/a&gt;)&lt;/span&gt;&lt;span style=&quot;font: 13.0px Arial;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;font: 13.0px Arial;&quot;&gt;Workstation client (Sourcetree?)&lt;/span&gt;&lt;span style=&quot;font: 13.0px Arial;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font: 13.0px Arial;&quot;&gt;Server solution (Git lab??) &lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;&lt;span style=&quot;font: 13.0px Arial;&quot;&gt;Changes to computer preference management.&lt;/span&gt;&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;font: 13.0px Arial;&quot;&gt;Change &quot;defaults write&quot; and plist packages to profiles (&lt;a href=&quot;http://talkingmoose.net/2014/07/12/posting-my-psu-macadmins-conference-presentation/)&quot;&gt;http://talkingmoose.net/2014/07/12/posting-my-psu-macadmins-conference-presentation/)&lt;/a&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
</content><link rel='replies' type='application/atom+xml' href='http://netman29.blogspot.com/feeds/7884686648755432200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4301941765729087526/7884686648755432200' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/7884686648755432200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/7884686648755432200'/><link rel='alternate' type='text/html' href='http://netman29.blogspot.com/2014/07/post-psumac-todo-list.html' title='Post PSUMac ToDo List'/><author><name>Netman</name><uri>http://www.blogger.com/profile/03724027441220808204</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4301941765729087526.post-826675915349256509</id><published>2013-01-05T11:04:00.000-08:00</published><updated>2013-01-05T11:04:40.556-08:00</updated><title type='text'>Deep Thoughts for the New Year</title><content type='html'>&lt;br /&gt;
I started this blog a few years ago as a place to put some of my thought and ideas and to document some aspects of my life. Well, this has been a major fail. &amp;nbsp;I hope to fix this this year. Now, on to today&#39;s topic.&lt;br /&gt;
&lt;br /&gt;
A lot of people use the new year as a time for reflection and planning goals for the upcoming year. &amp;nbsp;I guess I&#39;m no exception to this. I usually don&#39;t make resolutions, but look at things in my life that I could change - part of my never ending quest to be a &quot;better&quot; person.&lt;br /&gt;
&lt;br /&gt;
Since I&#39;ve been somewhat of a loner most of my life, I don&#39;t have a lot of friends. A close friend once told me that I have more friends than I&#39;m aware of and I need to be more receptive to their friendships. Words I&#39;ve tried to take to heart. I&#39;ve met some interesting people in the past year, a few I plan to keep around for a while. &amp;nbsp;The others, well, they serve their purpose. Fighting the urge to retire into my shell is something that I constantly fight. While I can fake being comfortable in social situations, its not what I like to do. &amp;nbsp;Mind you, public speaking and performing is not a problem for me. The time that I spent in church during my teen years is responsible for that.&lt;br /&gt;
&lt;br /&gt;
One of my flaws is that I tend to throw myself into my work. For me, work is an extension of some of my interests. Creating something functional from a pile of parts; Finding a unique solution to a problem that I didn&#39;t even know that I had; Well, you get the idea.&lt;br /&gt;
&lt;br /&gt;
Over the past few years I&#39;ve forced myself to get involved with a couple organizations that I didn&#39;t know existed prior. &amp;nbsp;Like minded individuals that I can bounce a few of my ideas off of. Many of them are very well known nationally worldwide, at least in some circles. &amp;nbsp;Some of them are published authors and/or renowned speakers as well. I&#39;ve learned a ton from them. Although I have no idea how they can do so much with the same amount of hours in a day. &amp;nbsp;A lot of it is time management. A lot of it is sheer knowledge and recall ability.&lt;br /&gt;
&lt;br /&gt;
My engineering background, as well as being raised by a basement mad scientist complete with lab coat, has given me a need to learn as much about as many different things as possible. Somewhere along the line I developed the ability to get myself up to speed quickly on new ideas and procedures. There is a lot of depth to go with the breadth mind you. I&#39;ve learned through the years that others may find my knowledge intimidating, or they don&#39;t believe that I know all that I claim to. &amp;nbsp;Through talking to people, I&#39;ve learned that that is a side affect of successfully working in the IT department of an educational organization.&lt;br /&gt;
&lt;br /&gt;
I remember a quote that I once read that said something along the lines of the truly great minds are not afraid of mistakes as their part of the learning experience. I also know that there are others that have more knowledge, experience and resources than I have. &amp;nbsp;One of the great things about the internet is that people are more than happy to share their experiences and solutions to the problems they&#39;ve faced. To this end, I&#39;ve discovered a ton of blogs that I can use for my research and ideas. Why reinvent the wheel when I can take the opportunity to learn from them.&lt;br /&gt;
&lt;br /&gt;
Those that I work with are completely clueless about a lot of the ideas, processes, and products that I bring forward. But, as evidenced by these blogs, they are indeed in use and practiced by many in the field. I try to not be critical of them, but they can be quite frustrating at times.&lt;br /&gt;
&lt;br /&gt;
A few years ago, a former boss tried to impress upon me that I needed to stop creating my own solutions. &amp;nbsp;He was also convinced that any software that is put into production should come out of a box and be backed by a &quot;real&quot; company. &amp;nbsp;He equated open source software to the shareware of the 80&#39;s - unpolished, unreliable and unbacked. While this may be true of some products, it is not true for all. The internet was built, and continues to run on, mostly open source software. &amp;nbsp;Many commercial products are based on open source. In fact, many of the more successful open source products have been spun into real companies, while others have been acquired. I know someone who took a leave from work to start such a company with the ultimate goal of acquisition in mind, although 9/11 brought that to a crashing end for him. (No pun or offense intended.) What I&#39;ve learned through my new contacts is that these products are in use in many of the companies that we&#39;re familiar with.&lt;br /&gt;
&lt;br /&gt;
If you&#39;re unfamiliar with it, the concept of open source is very successful. It goes something like this: &amp;nbsp;I have an idea, or I have a need or problem that is not solved by off the shelf products. Or, those products don&#39;t work the way I need them to and I can&#39;t change that. &amp;nbsp;So, I&#39;ll come up with my own solution and share it with the world. &amp;nbsp;The only stipulation is that if you come up with new ways to expand it, or solve problems that are in my code, then you must give those changes back to the &quot;community.&quot; While some may scoff at the concept of giving away their work, again, it&#39;s highly successful.&lt;br /&gt;
&lt;br /&gt;
As my work responsibilities have grown and changed, I&#39;ve had to take his thoughts to heart. I have had to begin using products that I can turn over to others (with little technical experience) to operate. But, the same crowd-sourced efforts that are used to further open source products can be applied to many of these products. I&#39;ve tried to walk the balance between commercial products with &quot;real&quot; support yet give me the ability to craft my own customizations. &amp;nbsp;This usually gives me the excuse to keep my programming skills sharp as well as learning more about the systems that I support. However, I simply don&#39;t have the time to do it all myself.&lt;br /&gt;
&lt;br /&gt;
I struggle to comprehend how those that I work with do not want to learn about the internals. They&#39;re stuck (barely) in maintenance mode. No thought is given to how or why something happens. Or, why does the solution work. Sometimes I take it personally. They&#39;re a continual source of aggravation for me. Both their limited skill sets and their unwillingness to grow and expand their own knowledge are baffling. Yet, they seem to be happy this way. How can they be happy not knowing all they could about their chosen profession? While I have technically passed day to day supervision of the underlings to someone else, they don&#39;t have the skills to assist them. Or the supervisory skills to keep them on task. &amp;nbsp;While they do need a task master, I still find myself getting too involved with them on a daily basis. This definitely interferes with my ability to get my own tasks done. Yes, another source of frustration.&lt;br /&gt;
&lt;br /&gt;
Regardless of how I try to mask my frustration when I talk to others, it shows in some manner. Some people may think that I&#39;m a mean, cold, uncaring person. My true friends know that this is not true. Still others tell me that I need to calm down because &quot;it&#39;s not that important.&quot; What? If you don&#39;t think that getting your problem (that you&#39;ve complained to those above me about) resolved is important enough for me to get upset over - you&#39;re part of the problem as well. More stress! I&#39;m not proud of this. If anything I sometimes find it embarrassing. I try to be a gentlemen at all times. Well, most times. I have my moments like anyone. I believe that people have many sides. That&#39;s what shapes our personalities. Some people verbalize all of their thoughts. I internalize mine. Others don&#39;t seem to have any thoughts at all.&lt;br /&gt;
&lt;br /&gt;
It&#39;s something that I struggle with daily. How can I find balance. There is part of most people that wants to be around others. Our species did not succeed by being solitary. I can sometimes tolerate being around others for short periods. Unless it becomes an excuse to badger or harass me. Then I can become quite grizzly and off putting. &amp;nbsp;Again, it&#39;s not something that I&#39;m proud of and I know that it&#39;s a coping mechanism. Sometimes these people need to be put in their place and I may be more than willing to be the one to do it. Usually, afterwards they&#39;re more cooperative.&lt;br /&gt;
&lt;br /&gt;
In closing, please be patient with me. I&#39;m a work in progress. Learning to deal with these stressors is something that I need to get a handle on.&lt;br /&gt;
&lt;br /&gt;
Here&#39;s to a new year! And, to my true friends: &amp;nbsp;Thanks for being you.&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://netman29.blogspot.com/feeds/826675915349256509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4301941765729087526/826675915349256509' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/826675915349256509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/826675915349256509'/><link rel='alternate' type='text/html' href='http://netman29.blogspot.com/2013/01/deep-thoughts-for-new-year.html' title='Deep Thoughts for the New Year'/><author><name>Netman</name><uri>http://www.blogger.com/profile/03724027441220808204</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4301941765729087526.post-7751523533993486344</id><published>2011-10-25T20:51:00.000-07:00</published><updated>2011-10-25T20:51:53.885-07:00</updated><title type='text'>(Mis)Adventures in Networking</title><content type='html'>EDIT: &amp;nbsp;Whoops! I never published this blog post.&lt;br /&gt;
&lt;br /&gt;
Wow, it&#39;s been a while since my last post.&amp;nbsp; Anyway, if you were looking for an example of Murphy&#39;s law, I&#39;ve got one for you.&lt;br /&gt;
&lt;br /&gt;
We had 2 simple goals:&amp;nbsp; upgrade our internet service and bring up our new WAN connections.&amp;nbsp; This adventure starts on Tuesday, April 19, 2011.&lt;br /&gt;
&lt;br /&gt;
Background:&lt;br /&gt;
&lt;br /&gt;
In the city where I work, we are really locked into our choice of providers.&amp;nbsp; Because of the city&#39;s infrastructure, we have 2 options: the incumbent telecom provider and the local cable company who has no interest in providing service to us. &lt;br /&gt;
&lt;br /&gt;
This install is an upgrade to our existing service and also a relocation to another building.&amp;nbsp; It was originally supposed to take place last November. As we were ramping up for the install, we discovered that my former boss didn&#39;t place the order. (This after I received a couple of phone calls asking why we were requesting service at 2 sites during the summer.) After a couple of angry phone calls to the telco rep, the order was placed.&amp;nbsp; We were given an install date in early February.&amp;nbsp; A week before the date arrived I sent my weekly pester the project manager email and was told that they were having &quot;unforseen issues and would be unable to meet the date.&quot; (According to the rep, they ran out of capacity) The date they gave me was in June.&amp;nbsp; Called the rep, explained to him how this was unacceptable and that I was going to recommend that we take action to terminate our existing contracts. He was then able to get us a March date. As we got close to the March date, we were told that date was only for our end of the connection and it would take a few weeks more to get the other end installed. Finally in late March, we were told that everything was in place and we looked at the calendar to find a suitable date that wouldn&#39;t cause too much disruption.&amp;nbsp; We decided on spring break week since the majority of our employees were off anyway.&lt;br /&gt;
&lt;br /&gt;
Tuesday Afternoon:&lt;br /&gt;
I met with an engineers from my ISP and my integrator to go over the connections and site prep prior to the installation. He checked the configuration on the router as it was shipped and made some changes/corrections.&amp;nbsp; He made a call to try to bring up the connection, even though it wouldn&#39;t be routing any traffic at that point - just to make sure everything was good on the telco end.&amp;nbsp; After spending some time on hold and talking to several people, he was told that our appointment wasn&#39;t until 9:00 the next morning and there was nothing that could be done until then. I found this rather entertaining since he works for the same company.&amp;nbsp; While he was doing this the integrator and I busied ourselves with racking switches, connecting cables, checking connections, etc. A couple of hours later we went over our game plan for installation and left for the day.&lt;br /&gt;
&lt;br /&gt;
Wednesday Morning:&lt;br /&gt;
We met at the appointed time and set out to make magic!! Our enthusiasm was soon dashed when we couldn&#39;t get a link to the demark. We did the usual switch the polarity of the cables, trying new/different cables, trying different SFP modules, nothing was working.&amp;nbsp; At some point during we noticed that we didn&#39;t have a link light on the WAN router either - but the connection was up and passing traffic. The ISP engineer continued to work with the telco side to try to troubleshoot the issue.&lt;br /&gt;
&lt;br /&gt;
During a trip to the demark to bang my head against the wall I looked at the fiber box that went to the MDF - it read &quot;SM Fiber to MDF&quot;. I thought SM - as in Single Mode Fiber? This should be MultiMode Fiber.&amp;nbsp; I disbelief I opened the box and looked inside.&amp;nbsp; Sure enough, it was Single Mode. WTF! (Bang Head on wall). Funny thing is the vendor that installed the fiber was hired by the telco on the premise that they wouldn&#39;t install the line unless dedicated fiber was in place. Now, the demark happens to also be in one of the IDF&#39;s in the building. Couldn&#39;t we just use that? We were told no.&amp;nbsp; After we put our heads together for a few minutes, I said &quot;F it, this is the only opening we have for over a month that we can do this during the day.&quot; I then connected to the fiber that was in the IDF, ran upstairs, moved the cross-connects and bingo, the WAN came up with a link light.&lt;br /&gt;
&lt;br /&gt;
While this was going on, the telco engineer had moved the router to the demark to try to get a connection there. After a while, he was able to get the line up and brought the router back upstairs.&amp;nbsp; We re-racked the router and fired it up. He was unable to pass any traffic across the connection.&amp;nbsp; He gets on the phone again and calls me over after about 15 minutes and puts his cell on speaker.&amp;nbsp; The person on the other line says &quot;Oh, you want to switch your internet service to that line? I asked him why the heck he thought we were going through all of this? His answer (I wish I was making this up): &quot;Oh, I thought you were just testing the line.&quot; As Bill Engvall says &quot;I didn&#39;t start out the day wanting to be a jackass, but you just pushed my jackass button.&quot; Needless to say, we had internet in a couple of minutes. Elapsed time: 3.5 hours.&lt;br /&gt;
&lt;br /&gt;
I wish this was the end of the story, but it&#39;s not.&lt;br /&gt;
&lt;br /&gt;
While we did have internet, traffic was sporadic. Our initial troubleshooting lead us to believe it was a DNS issue.&amp;nbsp; And, indeed, we were having trouble with DNS resolution.&amp;nbsp; But, when we tried to use a public DNS server, it only marginally better. It worked fine from the DMZ and from outside.&amp;nbsp; Made a few changes to the routers and firewall and we were able to get access at-first. After about 10 minutes, it stopped working again. Undid the router and firewall changes and it worked again for about 10 minutes.&lt;br /&gt;
&lt;br /&gt;
Hours of troubleshooting later, we were able find the issue, but not a clear solution. When we starting routing traffic through the new WAN, it introduced routing loops at almost every point in the network.&amp;nbsp; Considering we have 22 locations, the problem was quite massive.</content><link rel='replies' type='application/atom+xml' href='http://netman29.blogspot.com/feeds/7751523533993486344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4301941765729087526/7751523533993486344' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/7751523533993486344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/7751523533993486344'/><link rel='alternate' type='text/html' href='http://netman29.blogspot.com/2011/10/misadventures-in-networking.html' title='(Mis)Adventures in Networking'/><author><name>Netman</name><uri>http://www.blogger.com/profile/03724027441220808204</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4301941765729087526.post-7864451676839677137</id><published>2011-10-25T20:47:00.000-07:00</published><updated>2011-10-25T20:50:17.626-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sysadmin"/><title type='text'>Making corrections after deployment (or whoops!)</title><content type='html'>Like clockwork, almost as soon as we deployed the new workstations, we began receiving complaints about things that weren&#39;t right. &amp;nbsp;Most of the initial complaint were &quot;I need the administrator password so that I can install software and make changes.&quot; &amp;nbsp;This was met with a resounding &quot;NO!&quot; &amp;nbsp;It&#39;s been an uphill battle and we admittedly have to do some good work to repair our department&#39;s reputation. It was most entertaining to get a phone call with a complaint and to be able to tell them &quot;Look at the computer, I&#39;m logged into it right now. And, that program that you said doesn&#39;t work does.&quot;&lt;br /&gt;
&lt;br /&gt;
The last week or so has been pretty quiet. &amp;nbsp;After they began to see printers and software magically appear on their computers, they stopped complaining. &lt;br /&gt;
&lt;br /&gt;
There was one item that slipped by us: Some of the laptops would be going home with teachers and administrators and they would need to be able to connect to their home wireless networks. &amp;nbsp;We had this locked down to prevent students from changing to an open network that they can see from the school.&lt;br /&gt;
&lt;br /&gt;
After hours of digging and false starts, I found the preference file that needed to be changed:&lt;br /&gt;
&lt;br /&gt;
/Library/Preferences/SystemConfiguration/preferences.plist&lt;br /&gt;
&lt;br /&gt;
My first reaction was it&#39;s a plist, it should be easy to script the change. &amp;nbsp;Wrong! It doesn&#39;t act like any of the other plist files. &amp;nbsp;Using a &quot;defaults write&quot; command would put the setting into the wrong place in the file. &amp;nbsp;I tried to open it in several plist editors, and it only found some of the settings, none of which I needed to change.&lt;br /&gt;
&lt;br /&gt;
After I got home I spent a couple of hours trying to use sed and awk to change the file, but I couldn&#39;t get the regex correct. &amp;nbsp;I was about to give up, when I decided to give Google another try and found my answer:&lt;br /&gt;
&lt;br /&gt;
/usr/libexec/airportd&lt;br /&gt;
&lt;br /&gt;
I ran it with the -h flag to see the options available and I found what I needed:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
RequireAdmin (Boolean)&lt;br /&gt;
RequireAdminIBSS (Boolean)&lt;br /&gt;
RequireAdminNetworkChange (Boolean)&lt;br /&gt;
RequireAdminPowerToggle (Boolean)&lt;br /&gt;
&lt;br /&gt;
I could use &quot;/usr/libexec/airportd en1 prefs RequireAdmin=NO&quot; to change all of the settings at once or I could use the others to get more granular if I chose. I wrapped this in a quick BASH script and tested - success!! Here&#39;s the code that I created.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# &amp;nbsp;Script to allow Users to change the wireless network without requiring a password&lt;br /&gt;
#&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Turn off all settings&lt;br /&gt;
/usr/libexec/airportd en1 prefs RequireAdmin=NO&lt;br /&gt;
&lt;br /&gt;
# To allow granular settings you could do the following:&lt;br /&gt;
#/usr/libexec/airportd en1 prefs RequireAdminIBSS=&lt;br /&gt;
#/usr/libexec/airportd en1 prefs RequireAdminNetworkChange=&lt;br /&gt;
#/usr/libexec/airportd en1 prefs RequireAdminPowerToggle=&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tomorrow I get to see if it works with Lion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://netman29.blogspot.com/feeds/7864451676839677137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4301941765729087526/7864451676839677137' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/7864451676839677137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/7864451676839677137'/><link rel='alternate' type='text/html' href='http://netman29.blogspot.com/2011/10/making-corrections-after-deployment-or.html' title='Making corrections after deployment (or whoops!)'/><author><name>Netman</name><uri>http://www.blogger.com/profile/03724027441220808204</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4301941765729087526.post-6192214771511450827</id><published>2011-10-25T20:29:00.000-07:00</published><updated>2011-10-25T20:54:06.589-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sysadmin"/><title type='text'>Adventures in Managed Computing</title><content type='html'>Over the last month we&#39;ve been working on deploying over 700 new workstations and laptops. &amp;nbsp;This time around, I was able to get support from the upper administration to make them fully managed. &amp;nbsp;I was also able to convince them that we needed to pay for installation. After a few months of negotiating with Apple and my local var we were able to settling on an SOW for the project.&lt;br /&gt;
&lt;br /&gt;
The VAR would:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Install the management and imaging software on a brand new server.&lt;/li&gt;
&lt;li&gt;Install and configure the pile of servers that I had in my office.&lt;/li&gt;
&lt;li&gt;Image, deliver and deploy the new computers.&lt;/li&gt;
&lt;li&gt;Ensure that the computers were integrated into the management system and our online tracking system.&lt;/li&gt;
&lt;/ol&gt;
We chose to use Casper for JamfSoftware to manage the computers. &amp;nbsp;Casper has a pretty good reputation in the community and we decided to give it a whirl. After this is settled, we&#39;ll begin a SCCM deployment for the PC side of the house.&lt;br /&gt;
&lt;br /&gt;
I&#39;ll post about my experiences with Casper in a later post.&lt;br /&gt;
&lt;br /&gt;
That is all for now. &amp;nbsp;Later.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://netman29.blogspot.com/feeds/6192214771511450827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4301941765729087526/6192214771511450827' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/6192214771511450827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/6192214771511450827'/><link rel='alternate' type='text/html' href='http://netman29.blogspot.com/2011/10/adventures-in-managed-computing.html' title='Adventures in Managed Computing'/><author><name>Netman</name><uri>http://www.blogger.com/profile/03724027441220808204</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4301941765729087526.post-3726711331651338783</id><published>2010-05-27T06:23:00.000-07:00</published><updated>2010-05-27T06:23:41.446-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="email"/><category scheme="http://www.blogger.com/atom/ns#" term="sysadmin"/><title type='text'>E-Mail Server Update</title><content type='html'>On the afternoon my last post, the server went down again.  This time it happened as I was &quot;tail-ing&quot; the log file and saw what was happening:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
May 17 13:16:27 server lmtpunix[19636]: DBERROR db4: Logging region out of memory; you may need to increase its size&lt;br /&gt;
May 17 13:16:27 server lmtpunix[19636]: DBERROR: opening /var/imap/deliver.db: Cannot allocate memory&lt;br /&gt;
May 17 13:16:27 server lmtpunix[19636]: DBERROR: opening /var/imap/deliver.db: cyrusdb error&lt;br /&gt;
May 17 13:16:27 server lmtpunix[19636]: FATAL: lmtpd: unable to init duplicate delivery database&lt;br /&gt;
May 17 13:16:27 server lmtpunix[19636]: DBERROR db4: read: 0x401410, 28: No space left on device&lt;br /&gt;
May 17 13:16:27 server lmtpunix[19636]: DBERROR db4: Ignoring log file: /var/imap/db/log.0000000001: No space left on device&lt;br /&gt;
May 17 13:16:27 server lmtpunix[19636]: DBERROR db4: DB_ENV-&amp;gt;log_put: 1: No space left on device&lt;br /&gt;
May 17 13:16:27 server lmtpunix[19636]: DBERROR: error exiting application: No space left on device&lt;br /&gt;
May 17 13:16:27 server master[14002]: service lmtpunix pid 19636 in READY state: terminated abnormally&lt;br /&gt;
May 17 13:16:27 server lmtpunix[19637]: DBERROR db4: Logging region out of memory; you may need to increase its size&lt;br /&gt;
May 17 13:16:27 server lmtpunix[19637]: DBERROR: opening /var/imap/deliver.db: Cannot allocate memory&lt;br /&gt;
May 17 13:16:27 server lmtpunix[19637]: DBERROR: opening /var/imap/deliver.db: cyrusdb error&lt;br /&gt;
May 17 13:16:27 server lmtpunix[19637]: FATAL: lmtpd: unable to init duplicate delivery database&lt;br /&gt;
May 17 13:16:28 server lmtpunix[19637]: DBERROR db4: read: 0x401410, 28: No space left on device&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Notice the 5th line: No space left on device.  This can&#39;t be right, I have about 16 GB of free space (according to df -h).  But, lets think about this for a moment.  I&#39;ve been chasing a database corruption problem.  If the OS thinks that it is out of space, of course it won&#39;t be able to update the db.&lt;br /&gt;
&lt;br /&gt;
Looking back at my notes from a couple of months ago, before this started, I had about 30 GB free.  Where did all of the free space go? I talked to the PHB and he finally agreed to let me take the server down over the weekend to work on it.  In preparation for this, I also looked at the folders in the mail store and compared them to the FileMaker Pro database that I use to track all of the account info. (For you privacy nuts, I don&#39;t keep passwords, if you forget it, I can change it but I cannot see what it is.) I also looked at tuning options for Postfix, Cyrus and Mailman.&lt;br /&gt;
&lt;br /&gt;
Fast forward to Friday night.  I purged the mail queue, the stopped the mail server and manually ran the garbage cleanup script. Our webmail users can&#39;t understand that unless they click &quot;Purge&quot; the mail doesn&#39;t actually get deleted. So, I wrote a script that deletes the files from their Trash folder and rebuilds the index. This happens quietly behind the scenes and they never know it happened unless they try to retrieve something from the Trash. I actually once had someone tell me that&#39;s where they store their important emails. I asked them: Do you keep your checkbook in the garbage can at home? And, they went away muttering to themselves.&lt;br /&gt;
&lt;br /&gt;
I rebooted the server into single user mode and fsck&#39;d the drive.  It took forever to get through the various steps, to the point that I stopped watching and forced myself to wait 10 minutes between checks.  When it got to &quot;Checking Volume Information&quot; it said:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;Invalid volume free block count&lt;br /&gt;
(It should be 8456596 instead of 4562047)&lt;br /&gt;
Repairing Volume&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
After it was done (roughly 3 hours from start time) I then had 32 G free, not 16 as reported before I started.  Yea!!!&lt;br /&gt;
&lt;br /&gt;
From here, I set about rebuilding the Cyrus database and the user databases. I restarted the mail server (sudo serveradmin start) and watched the mail begin to flow.  When I felt comfortable, I restarted Mailman and watched it fly through the postings that were waiting to be sent.&lt;br /&gt;
&lt;br /&gt;
Its now a couple of days later and everything seems to be stable.... Except, now the boss want me to get to 100 GB free!!! (le sigh...) Stay tuned for more updates</content><link rel='replies' type='application/atom+xml' href='http://netman29.blogspot.com/feeds/3726711331651338783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4301941765729087526/3726711331651338783' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/3726711331651338783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/3726711331651338783'/><link rel='alternate' type='text/html' href='http://netman29.blogspot.com/2010/05/e-mail-server-update.html' title='E-Mail Server Update'/><author><name>Netman</name><uri>http://www.blogger.com/profile/03724027441220808204</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4301941765729087526.post-1368670362171640509</id><published>2010-05-26T20:48:00.000-07:00</published><updated>2010-05-27T06:16:42.990-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="family"/><category scheme="http://www.blogger.com/atom/ns#" term="njmsp"/><category scheme="http://www.blogger.com/atom/ns#" term="racing"/><title type='text'>Its Racing Season</title><content type='html'>Believe it or not, the Netman isn&#39;t all work, he knows how to have fun also. One of the things that my wife and I like to do is go to races.  She&#39;s mostly a Nascar fan, but goes to other types of races to entertain me. We have our most extensive season planned and started it off on Mother&#39;s Day.&lt;br /&gt;
&lt;br /&gt;
We went to see the Trans-Am series at New Jersey Motorsports Park.  I remember growing up watching Mustangs, Corvettes, Camaros and other cars on TV. This was the first time that I&#39;ve had a chance to see this series and was excited.&lt;br /&gt;
&lt;br /&gt;
We stumbled onto the Club Diner in Bellmawr on our first trip to the  track and its become part of our ritual. Usually we have to figure out  how to get there. I must have set it as a waypoint in the GPS the last  time we went because it took us right to the door.  Strange, but I  digress.&lt;br /&gt;
&lt;br /&gt;
The entry list had about 20 entries, but when I checked the practice times, most of them didn&#39;t have a time listed. When we got there we learned that only 8 cars showed up, but for some reason, they list 12 cars getting points.&lt;br /&gt;
&lt;br /&gt;
Here are a few of my pictures from the race:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;Here&#39;s Tomy Drissi and Tony Ave getting ready to go out for practice and qualifying.  My wife can&#39;t wait for the Marmaduke movie to come out and decided that she was going to root for Tomy.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfYMrTBU7sms_zEKyqEmynxEZiHJxFRcZcDBULLQaVmq6a33xqhvZ9gp_vPGmfyImtF2HC__QKeLGEJ0zp29vgAFj5RQ-yN6qZuc2gfQYb_T6CM9Uoy_UpSfJ6KZKG7Oef7rnxxpuBCQo/s1600/IMGP1287.JPG&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd71EAZNijvDimXYyT5d01xbTGgktwo69wV6Pwe_JdlOG8DHbXlzgkSTxsZiGU7r7q0hW82rbahFAfV6tYU6RuxOTwjlkZKSSChUHKSm2kAenQBeewIdWGUWzbGRVgFB6CZxVaz7nK8PA/s1600/IMGP1290.JPG&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd71EAZNijvDimXYyT5d01xbTGgktwo69wV6Pwe_JdlOG8DHbXlzgkSTxsZiGU7r7q0hW82rbahFAfV6tYU6RuxOTwjlkZKSSChUHKSm2kAenQBeewIdWGUWzbGRVgFB6CZxVaz7nK8PA/s320/IMGP1290.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfYMrTBU7sms_zEKyqEmynxEZiHJxFRcZcDBULLQaVmq6a33xqhvZ9gp_vPGmfyImtF2HC__QKeLGEJ0zp29vgAFj5RQ-yN6qZuc2gfQYb_T6CM9Uoy_UpSfJ6KZKG7Oef7rnxxpuBCQo/s1600/IMGP1287.JPG&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfYMrTBU7sms_zEKyqEmynxEZiHJxFRcZcDBULLQaVmq6a33xqhvZ9gp_vPGmfyImtF2HC__QKeLGEJ0zp29vgAFj5RQ-yN6qZuc2gfQYb_T6CM9Uoy_UpSfJ6KZKG7Oef7rnxxpuBCQo/s320/IMGP1287.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;Drissi won the race (surprise, surprise), RJ Lopez came in second and  Ave was third. Here they are on the podium spraying champagne and doing the &quot;hat dance.&quot;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEig22hIxfHNLrTFhxCqBBGTwauaqjxRUAFXPwNc28qSdcSjK1arueYmkwMlJOMWR0TEPEszJupj6p-EVzcw-7EqzXBRmesWHwpRfpMKzfRwmFNG-4TyvUC-EA21ez0QMmM8sDulidsJyps/s320/IMGP1374.JPG&quot; width=&quot;320&quot; /&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp2Dh9T3do_mg5sbnw7eWBDRWLUwnB2a0Gss0un6qxC_-9UguNcrPYGmwwoxMbueyN8UdPqH8ANW90CQQbrFBLncWx30Av_NCe47yJgFwwNjeJjPx55PbJpUc1HvM-nM3BpyL8FCoXYTU/s1600/IMGP1372.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp2Dh9T3do_mg5sbnw7eWBDRWLUwnB2a0Gss0un6qxC_-9UguNcrPYGmwwoxMbueyN8UdPqH8ANW90CQQbrFBLncWx30Av_NCe47yJgFwwNjeJjPx55PbJpUc1HvM-nM3BpyL8FCoXYTU/s320/IMGP1372.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;My personal highlight of the day was getting to see Drissi&#39;s owner Paul  Gentilozzi.  (Below talking on the phone.)  I had a chance to talk to him a couple of times and he&#39;s much cooler than the TV reporters make him out to be.&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHKRpyw-1GcSaWeQ2MlGRQehhyPhXevmvbahI9ZW7lf9vwUuUJHWxGwhueauE3M5Qr_sePwszaAfaSn8GIR2pWB_Ar9p4_Y2ijKt_wNKlkecMy4VOZWLWZeLjidaSt5sSGHu5EyNWNepY/s320/IMGP1368.JPG&quot; width=&quot;320&quot; /&gt;&lt;/div&gt;&lt;br /&gt;
Here&#39;s &lt;a href=&quot;http://picasaweb.google.com/105081277676324544611/TransAm2010?authkey=Gv1sRgCI6w8eLW-YKAbg&amp;amp;feat=directlink&quot;&gt;a link to my Picasa album&lt;/a&gt;. Its not my best work, but here it is. Next up - Arca and Sprint Cup at Pocono.</content><link rel='replies' type='application/atom+xml' href='http://netman29.blogspot.com/feeds/1368670362171640509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4301941765729087526/1368670362171640509' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/1368670362171640509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/1368670362171640509'/><link rel='alternate' type='text/html' href='http://netman29.blogspot.com/2010/05/its-racing-season.html' title='Its Racing Season'/><author><name>Netman</name><uri>http://www.blogger.com/profile/03724027441220808204</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd71EAZNijvDimXYyT5d01xbTGgktwo69wV6Pwe_JdlOG8DHbXlzgkSTxsZiGU7r7q0hW82rbahFAfV6tYU6RuxOTwjlkZKSSChUHKSm2kAenQBeewIdWGUWzbGRVgFB6CZxVaz7nK8PA/s72-c/IMGP1290.JPG" height="72" width="72"/><thr:total>0</thr:total><georss:featurename>8000 Dividing Creek Rd, Millville, NJ 08332, USA</georss:featurename><georss:point>39.359984 -75.053787</georss:point><georss:box>39.355836499999995 -75.0610825 39.3641315 -75.0464915</georss:box></entry><entry><id>tag:blogger.com,1999:blog-4301941765729087526.post-251848871537506285</id><published>2010-05-17T09:17:00.000-07:00</published><updated>2010-05-17T09:45:33.094-07:00</updated><title type='text'>(More) Email Server Issues</title><content type='html'>This past weekend, we had another email outage. This time it looks like it took the server took about 12 hours to rebuild itself. Time for a backup/restore or defrag.  But, the PHB says he&#39;s going to purchase an Exchange 2010 setup at the start of the next fiscal and doesn&#39;t want to have the downtime. Meanwhile, my faithful Frankenserver takes another hit.  This server has been in service since 2005 and has run fine for years until recently.&lt;br /&gt;&lt;br /&gt;When I left on Friday afternoon, everything looked fine, but I had a feeling that it wasn&#39;t. At 6:00 Saturday morning, I got up and checked the server. Sure enough, the db was corrupted again. So I did the usual rebuild:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;#serveradmin stop mail&lt;br /&gt;# mv /var/imap /var/imap.old&lt;br /&gt;# mkdir /var/imap&lt;br /&gt;/usr/bin/cyrus/tools/mkimap&lt;br /&gt;reading configure file...&lt;br /&gt;i will configure directory /var/imap.&lt;br /&gt;i saw partition /var/spool/imap.&lt;br /&gt;done&lt;br /&gt;configuring /var/imap...&lt;br /&gt;creating /var/spool/imap...&lt;br /&gt;done&lt;br /&gt;# chown -R cyrusimap:mail /var/imap&lt;br /&gt;# sudo -u cyrusimap  /usr/bin/cyrus/bin/reconstruct&lt;br /&gt;#serveradmin start mail&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;the last step is usually done with the -i option, but I usually skip it and perform the user folder rebuilds manually  with:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;# cd /var/spool/imap&lt;br /&gt;#su cyrusimap&lt;br /&gt;$ /usr/bin/cyrus/bin/reconstruct -r -f user/username&lt;br /&gt;user/username&lt;br /&gt;user/username/Deleted Messages&lt;br /&gt;user/username/Drafts&lt;br /&gt;user/username/Sent Messages&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I have a text file on my server that has all of the usernames.  I wrote a quick script to parse the file and rebuild each user.&lt;br /&gt;&lt;br /&gt;After looking at various log files, it looks like Mailman is causing the issues.  We have a list that goes out to all of our users (about 2300). (Send to one address and this spiders out to the lists for each location. The Mailman docs refer to this as an umbrella list.)&lt;br /&gt;&lt;br /&gt;Our HR department decided to &quot;go green&quot; by sending out death notices and other items via this list. Even though, they&#39;ve been told to do a delay-send until the evening hours, they keep &quot;forgetting&quot; and sending them in the middle of the day. This usually ends up tying up the server for a couple of hours during which time messages continue to come into the server, but nothing goes or out until it finishes processing the list.&lt;br /&gt;&lt;br /&gt;At this point I decided to hold off on the rebuild and wait until I talked to the boss.  I got him to agree to hold off on the rebuild until we can clean up the server and verify that it is actually stable (this time).&lt;br /&gt;&lt;br /&gt;I spent an hour or so this morning researching various mailman options such as can we delay the sending until X o&#39;clock?  Turns out others have asked the same question and the answer ranges from not easily to no.  I ran through the various configuration options and found that my SMTP_MAX_RCPTS was set to 500.  This causes the server to attempt to send 500 messages in each batch. I changed this to the recommended 10.  We shall see if this works.&lt;br /&gt;&lt;br /&gt;I was also able to get him to agree to let me purge some of the older emails on the server and set up some quotas.&lt;br /&gt;&lt;br /&gt;Stay tuned.....</content><link rel='replies' type='application/atom+xml' href='http://netman29.blogspot.com/feeds/251848871537506285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4301941765729087526/251848871537506285' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/251848871537506285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/251848871537506285'/><link rel='alternate' type='text/html' href='http://netman29.blogspot.com/2010/05/more-email-server-issues.html' title='(More) Email Server Issues'/><author><name>Netman</name><uri>http://www.blogger.com/profile/03724027441220808204</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4301941765729087526.post-6485523908642406781</id><published>2010-05-11T12:40:00.000-07:00</published><updated>2010-05-11T13:31:30.137-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="lopsa"/><category scheme="http://www.blogger.com/atom/ns#" term="PICC"/><category scheme="http://www.blogger.com/atom/ns#" term="sysadmin"/><title type='text'>PICC Day 2</title><content type='html'>Day 2 of the PICC conference was little more scattered and varied than the first one.  The first session was &quot;The Evolution of Storage Networking and the Current Trends in the Industry.&quot;  Jacob Farmer, CTO of Cambridge Computer led this session.  Jacob&#39;s talk was a exactly what the title says.  He talked about storage virtualization and how abstraction layers interract with the Operating system and the File System. Most of the concepts were as I imagined they would be, although its nice to know the &quot;real&quot; names for things. I learned that the Equallogic SANs that I have at work are using &quot;spindle virtualization.&quot; In short, this means that you don&#39;t have to worry about carving up your SAN into various LUNs, each (possibly) having different RAID configurations. When you setup the Equalllogic, you format it (RAID 5, 6, 10, or whatever you want) and then only worry about the size of the partitions that you create. This allows you to easily add additional storage by adding another unit to the &quot;cluster.&quot; Personally, I think this is a cooler method of dealing with SANs.&lt;br /&gt;&lt;br /&gt;I only stayed for the first half of this talk because I wanted to go to a couple other sessions. Next I went to &quot;Pushing Boulders Uphill: NOAA Updates - High Performance Computing across the WAN.&quot; [In my best &quot;Staples&quot; commercial voice] &quot;Wow, that&#39;s a long title&quot; The speakers gave an overview of how NOAA deals with their datasets.  Its amazing how much data they move around their network on a daily basis. More importantly, some of the discussion was about how the grew their network and some of the tools they use.  It was amazing to see how &quot;simple&quot; it was, albeit from a very high level overview. Even better, they use some of the same (open source) tools that I use to monitor their network. I must be doing something right.&lt;br /&gt;&lt;br /&gt;Directly after this, Matt Simmons led a discussion on &quot;Keeping Nagios Sane.&quot; More than any other, this session demonstrated what community is about.  Matt started the session by stating that he wasn&#39;t an expert, but these were the things that worked for him. Most of the participants in the session use Nagios and contributed some of their ideas during the discussion. Could any of us be considered &quot;experts&quot;? Maybe. Depending on your definition. &lt;br /&gt;&lt;br /&gt;Sometimes, I get a little annoyed when my coworkers or others call me an &quot;expert.&quot; What does that mean? I know what I know. But, that&#39;s not everything there is to know. Usually I know more about my field than they do. Do I know everything? Of course not.  I think what separates us from the paper admins is our ability to get up to speed quickly in a variety of areas. Often, this is driven by our quest for knowledge. Sometimes, we actually need to do something with what we learn. What separates this profession from most others is that there are always several ways to accomplish a task.  Some of them are more elegant than others and some are just crazy ideas that lead to some cool discovery. I should probably finish this post before I go off on a rant.  BTW, Matt, check out cacti for trending.&lt;br /&gt;&lt;br /&gt;Next I went to a session of Budgeting for System Administrators given by Adam Moskowitz. Alan gave some very cogent advice to us regarding the budget process. Sometimes we tend to forget that those above us may not understand the buzzwords. We need to be show them what our needs are in a language that they can understand and relate to. Also, they may not fully understand the inter-relatedness (is that a word?) of the various parts of our projects. Finally, sometimes we have to be willing to compromise and either scale-back or phase in our projects.&lt;br /&gt;&lt;br /&gt;After this, my brain needed a break and I attended an &quot;Unconference&quot;  This was probably the closest to what most people would imagine would happen if a group of techies got together in a room to just discuss a topic, except most of us were totally worn out at that point.  We ended up talking about DNS, specifically, how we each manage it.  We were shown Carnegie-Mellon&#39;s NetReg by one of the the people who wrote it.  How cool is that. I had looked at it a couple of times before, but didn&#39;t realize its power.  It&#39;s not something that I would use in my current environment, but I know its out there if the need arises.&lt;br /&gt;&lt;br /&gt;The last session I attended was &quot;An overview of Google&#39;s Technologies....&quot; given by Tom Limoncelli. It was kind of fitting that I started and ended with the same speaker.  Tom gave a quick overview of Google and how they grew their infrastructure. More cool stuff to keep in the back of my head.&lt;br /&gt;&lt;br /&gt;Overall, it was a good conference and I had a blast. I met some new and interesting people. (And not the weirdos that are usually drawn to me) Kudos to William Bilancio, Tom Limoncelli, and the entire planning and organizing committees.  They&#39;ve already begun to consider the next conference and I&#39;m sure this one will be even better.</content><link rel='replies' type='application/atom+xml' href='http://netman29.blogspot.com/feeds/6485523908642406781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4301941765729087526/6485523908642406781' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/6485523908642406781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/6485523908642406781'/><link rel='alternate' type='text/html' href='http://netman29.blogspot.com/2010/05/picc-day-2.html' title='PICC Day 2'/><author><name>Netman</name><uri>http://www.blogger.com/profile/03724027441220808204</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4301941765729087526.post-417337446108034798</id><published>2010-05-07T08:34:00.000-07:00</published><updated>2010-05-08T06:48:33.285-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="lopsa"/><category scheme="http://www.blogger.com/atom/ns#" term="sysadmin"/><title type='text'>LOPSA-NJ’s PICC</title><content type='html'>&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://www.lopsanj.org/events/picc10/files/picc10bannersm.png&quot;&gt;&lt;img style=&quot;margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 385px; height: 75px;&quot; src=&quot;http://www.lopsanj.org/events/picc10/files/picc10bannersm.png&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I&#39;m at LOPSA-NJ’s PICC conference in sunny New Brunswick, NJ. I&#39;ve taken &lt;a href=&quot;http://www.standalone-sysadmin.com/blog/&quot;&gt;Matt Simmons&lt;/a&gt;&#39; challenge to blog about the conference (and restart this long neglected blog).The first session I&#39;m attending is &lt;a href=&quot;http://www.everythingsysadmin.com/&quot;&gt;Tom Limoncelli&#39;s&lt;/a&gt; Time Management for System Administrator&#39;s - A New Approach. This talk was a whirlwind tour of his classic book Time Management for System Administrators but slightly rearrange, redone and updated.&lt;br /&gt;&lt;br /&gt;This was the first time I was able to hear Tom speak formally.  I was especially looking forward to this talk since it is based upon the book that radically changed my outlook on doing my job. It was everything I was expecting and more. Sometimes, a refresher course in a subject that you&#39;re familiar with can change your way of thinking. A couple of tips that I picked up were:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Keep a single calendar with your work and personal events. And, be sure to write everything down.&lt;/li&gt;&lt;li&gt;A reminder that I have to find a todo list manager or GTD app for my new Droid Incredible. Since the Android platform is a competitor to the iPhone, I don&#39;t see Apple supporting syncing to the phone in the near future. (More on the phone in a later post.)&lt;/li&gt;&lt;li&gt;Go over your notes at the end of the day and move incomplete tasks to the next day (or even further out).&lt;/li&gt;&lt;li&gt;Remind my co-workers about the 30 minute rule.&lt;/li&gt;&lt;li&gt;Tom mentioned that he keeps a lab notebook. I tend to keep everything on one pad and things can sometimes get lost.&lt;/li&gt;&lt;li&gt;An interesting idea was to put contact information for the helpdesk onto the desktop wallpaper.  I&#39;ll have to play around with this.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The second session was also hosted by Tom Limoncelli. This one was titled: Help, Everyone hates our IT Department. This was sort of an extension of the first session. The key bullet points for me were:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;How do users get help? And, do they know who to call and when.&lt;/li&gt;&lt;li&gt;Has the scope of support been clearly defined?&lt;/li&gt;&lt;li&gt;What is the definition of an Emergency?&lt;/li&gt;&lt;/ul&gt;The major takeaway that I had from this session was: If you can manage expectations and communications, it will help to manage the perception of the IT department. (I will probably revise this statement later, after I&#39;ve had a chance to think about it.)&lt;br /&gt;&lt;br /&gt;The evening ended with a talk by David Blank-Edelman - Through the Lens Geeky: How SysAdmins are Portrayed in Pop Culture. His presentation showed several film clips portraying SysAdmins from the 50&#39;s through recent films. The good, the bad, the unrealistic (of both sides) were shown.&lt;br /&gt;&lt;br /&gt;During the second session I texted one of my friends the title of the session I was in.  Her response was : Everyone doesn&#39;t hate the IT department, they just misunderstand you.  Both Tom&#39;s and David&#39;s presentations drove this point home. When I get back, I&#39;ll be musing over this.  How do I change perception? How can we (better) publicize what we do?</content><link rel='replies' type='application/atom+xml' href='http://netman29.blogspot.com/feeds/417337446108034798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4301941765729087526/417337446108034798' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/417337446108034798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/417337446108034798'/><link rel='alternate' type='text/html' href='http://netman29.blogspot.com/2010/05/lopsa-njs-picc.html' title='LOPSA-NJ’s PICC'/><author><name>Netman</name><uri>http://www.blogger.com/profile/03724027441220808204</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4301941765729087526.post-4244470251704482322</id><published>2008-02-18T15:12:00.000-08:00</published><updated>2008-02-18T15:14:29.954-08:00</updated><title type='text'>Hello World</title><content type='html'>I&#39;ve been thinking about starting a blog for a few months now, and I&#39;ve finally made the plunge.  In this blog I will put down some of my random thoughts and ideas as well as some examples of what a typical day for me is like.</content><link rel='replies' type='application/atom+xml' href='http://netman29.blogspot.com/feeds/4244470251704482322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/4301941765729087526/4244470251704482322' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/4244470251704482322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4301941765729087526/posts/default/4244470251704482322'/><link rel='alternate' type='text/html' href='http://netman29.blogspot.com/2008/02/hello-world.html' title='Hello World'/><author><name>Netman</name><uri>http://www.blogger.com/profile/03724027441220808204</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>