Author: ab
Mac keyboard shortcuts
On Internet Shortcut Files
If you are managing Macs and PCs, then you will frequently connect to other computers or virtual machines through screen sharing, secure shell or other means. Here is a simple trick to make those connections easier:
Open your favored UI text editor (Text Edit will do) and type
vnc://<username>@<hostname>
Replace <username>
and <hostname>
with your username and hostname for a Mac you frequently share the screen with.
Then select the entire text and drag it to the desktop. It will create a file with “@” sign on the icon. When you double click this file, Screen Sharing opens and asks for the password (unless it is stored in the Keychain) and connects the remote session.
Now rename this file to VNC <hostname>
. Then activate Spotlight (cmd-space) and start typing “VNC” and the hostname. After a few characters the VNC link file should be the top result. Hit return and the session starts.
As an extra bonus you can put these files in a folder in your cloud file system of choice (iCloud Drive, Dropbox, Google Drive, Box, etc.) and they will sync to all your Macs.
Other Protocols
You can do the same with any URI scheme:
ssh://<username>@<hostname>:<port>
afp://<username>@<hostname>/<share>
smb://<username>@<hostname>/<share>
http://<hostname/<path>
Microsoft Remote Desktop/RDP
The new Microsoft Remote Desktop application available in the Mac App Store also supports rdp
URI schemes, however the syntax is a bit odd. To connect to a remote host you have to use:
rdp://full%20address=s:<hostname>&username=s:<username>
You can find more options for this URI scheme in this technote. One I have found useful is screen mode id
where a value of 1
means to open the remote screen in a window a value of 2
means full screen mode.
Looking into the files
If inspect the file generated by dragging, you can see that it is a property list file with a single key URL
and a string value containing the link.
Files for a vnc
URI get the .vncloc
extension, http[s]
URIs get the .webloc
extension, ftp
URIs get the .ftploc
extension and everything else seems to get .inetloc
extensions. (There may be more, let me know if you find any.)
This makes it easy to write a short script that simplifies the creation of these internet location files:
Sample use:
./create_netloc.py vnc://user@host.example.com
will create VNC host.vncloc
./create_netloc.py http://munki.example.com/munkireport-php/ Munkireport
will create Munkireport.webloc
./create_netloc.py "rdp://full%20address=s:host.example.com&username=s:name&screen%20mode%20id=i:1"
will create RDP host.inetloc
Note on
rdp
links: since the ‘&’ is special in shell commands you need to quote the uri if any are present.
Fun with find
and git
find ~ -type d -name .git -exec dirname {} \;
will show you all folders in your home directory which have a .git
subfolder — i.e. they are git repositories.
This is useful, but can be extended to:
find ~ -type d -name .git -exec dirname {} \; | tr '\n' '\000' | xargs -0 -n1 -I % git -C "%" status
to show the git status
output of all your git repositories.
Time to clean up!
Useful AutoPkg bash functions
Note: the version of these functions I posted originally were not safe for paths with spaces in them. I have updated them and now the should be.
I have added these functions to my .bash_profile
and thought they might be useful for others as well.
alias reveal="open -R"
function recipe-open() { open "$(autopkg info $@ | grep 'Recipe file path' | cut -c 22-)"; }
function recipe-edit() { bbedit "$(autopkg info $@ | grep 'Recipe file path' | cut -c 22-)"; }
function recipe-reveal() { reveal "$(autopkg info $@ | grep 'Recipe file path' | cut -c 22-)"; }
Use them like this
recipe-open RecipeName.munki
recipe-open com.github.recipe.id
recipe-open
will grab the path to the recipe file and use open
to open it with its default application. I have PlistEdit Pro assigned to open .recipe
file extensions.
recipe-edit
will open the recipe file in BBEdit, which doesn’t suck.
recipe-reveal
will open the recipe in the Finder. The bash alias reveal
for open -R
is quite useful independent of autopkg
.
Adapt for your own choice of editors.
Free/Cheap Mac Sysadmin Tools You Might Like
Free tools for the budget-minded Mac admin
Munki 2.2 Official Release
Yay! Munki 2.2 is officially released!
Connect to Active Directory with a Profile
In OS X 10.9 Mavericks Apple added the option to connect a Mac client to Active Directory with a configuration profile. In previous OS versions admins have to script AD connection with the dsconfigad
CLI tool.
Many of the configuration options for this profile are described here. By default the client Mac’s hostname
will be used as the machine record name to connect to AD. However, you can provide a ClientID
key to override the default. There are also placeholders you can provide for this filed as described here. In our setup we use the ComputerName
(as defined in Sharing preference pane or with scutil --set ComputerName
) instead, since the hostname of a given MacBook may change depending on which Thunderbolt ethernet adaptor is used.
The easiest way to create an Active Directory Profile is to use Profile Manager on OS X Server to create one with the settings you want, then download the profile and further edit in a text editor. You can also use this generic Active Directory configuration profile as a starting point.
Building a Cocoa-AppleScript (AppleScriptObjC) Automator Action
This TechNote has been updated for Yosemite. Maybe it is time to update some of my ancient actions, too…
Technical Note TN2322: Building a Cocoa-AppleScript (AppleScriptObjC) Automator Action.