Category Archives: Mac

bash | Abgestürzte ssh-Sitzungen beenden

Ab und an reagieren SSH-Sessions nicht mehr und damit ist das komplette Terminal blockiert. Das liegt meist daran, das die Netzwerkverbindung unterbrochen wurde – sei es auf Grund von Netzwerkfehlern oder weil das Notebook in den Energiesparmodus gegangen ist. In solchen Fällen habe ich immer das Terminal-Fenster geschlossen, was ich ziemlich nervig fand (Stichwort: Fensteranordnung im iTerm). Irgendwann habe ich die Lösung gefunden, die ich Euch nicht vorenthalten möchte. Wenn man im Terminal-Fenster die Tasten [ENTER] [TILDE] und [PUNKT] der Reihe nach eingibt, wird die abgestürzte SSH-Session beendet und das Terminal freigegeben:

↩~.

Da ich mir das nicht merken kann bzw. mir die Tastenkombination zu kompliziert ist, habe ich damit einfach Typinator “missbraucht”

So ist es mir möglich mit der Tastenkombination “XXX” jede hängende SSH-Session zu beenden.

mac | OSX Lion und die aktuellste BASH-Shell

Man sollte meinen, das Apple mit der Herausgabe eines neuen Betriebssystems nach knappen zwei Jahren auch alle Komponenten auf den aktuellsten Stand bringt – zumindest in Bezug auf die Standard-Shell Bash trifft das auf jeden Fall nicht zu. Auch in OS X Lion 10.7 ist die mitgelieferte Bash-Version die 3.2.48 – die letzte Überarbeitung der Version 3. Meine frühere Beschreibung zur Installation von BASH-Version 4 trifft immer noch zu – die zur Zeit aktuellste Version von Bash ist die 4.2.

mac | OSX und die Shell

In MacOSX ist die Standardshell Bash – leider in der ca. fast schon zwei Jahre alten Version 3.2.48. Das wird jetzt nicht jeden stören, da nicht jeder auf der Kommandozeile arbeitet. Wer aber, wie ich, ab und an ein Shell-Script erstellt, wird vielleicht schon mal mit der “neuesten” Version 4.1 geliebäugelt haben. Hervorzuheben sind

There is a new `autocd' option that, when enabled, causes bash to attempt
to `cd' to a directory name that is supplied as the first word of a
simple command.
There is a new shell option: `globstar'.  When enabled, the globbing code
treats `**' specially -- it matches all directories (and files within
them, when appropriate) recursively.
There is a new shell option: `dirspell'.  When enabled, the filename
completion code performs spelling correction on directory names during
completion.
Brace expansion now allows zero-padding of expanded numeric values and
will add the proper number of zeroes to make sure all values contain the
same number of digits.
There is a new &>> redirection operator, which appends the standard output
and standard error to the named file.
The parser now understands `|&' as a synonym for `2>&1 |', which redirects
the standard error for a command through a pipe.

Alle neuen Features aufzuzählen würde zu viel Zeit rauben, deswegen sei auf die Liste des Bash-Maintainers verwiesen.

Wie man diese Version in OSX installiert werde ich hier zeigen.

Read More →

mac | Apple Mail gesprächiger machen

Im Normalfall braucht man sich um sein EMail-Programm keinen Gedanken machen – es funktioniert einfach! Aber was ist, wenn man auf Fehler bei der Email-Kommunikation stößt? Was macht man, wenn sich das EMail-Programm nicht mit dem Server verbinden will, man aber einfach nicht herausbekommt, woran es liegt? Die Meisten haben keinen Zugriff auf die LogFiles ihres EMail-Servers und sind somit auf die Gesprächigkeit ihres EMail-Programms angewiesen.

Apple Mail scheint nicht zu der Sorte Email-Programm zu gehören, die es dem Benutzer einfach machen – zumindest nicht auf der Oberfläche. Aber zum Glück gibt es noch die Kommandzeile :)

Grob eingestuft kann man entweder Apple Mail von der Kommandzeile aus mit Parametern starten oder aber diese Schalter in den Einstellungsdateien (Preferences) definieren. Einen bespielhafter Aufruf von Apple Mail auf der Kommandzeile könnte so aussehen

/Applications/Mail.app/Contents/MacOS/Mail -LogSocketErrors YES -LogActivityOnHost your.mail.server -LogActivityOnPort 143 &> ~/Desktop/ConnectionLog.txt

Die Erklärung der Parameter erfolgt weiter unten. Die Einträge in der Einstellungsdatei erstellt man entweder mit einem Programm wie PrefEdit oder aber auch schnell auf der Kommandozeile mit dem Befehl defaults. Ein beispielhafter Aufruf wäre für Apple Mail

defaults write com.apple.mail LogActivityOnPort 25

Und nun zu den einzelnen Einstellungsmöglichkeiten, die ich bei Robert Chien, Apple und MacOSXHints gefunden habe:

LogSocketErrors

Hiermit werden prinzipielle Fehler aufgelistet. Diese Option kann man an- (YES) oder abschalten (NO).

defaults write com.apple.mail LogSocketErrors YES

LogActivityOnHost

Mit dieser Einstellung schränkt man das Logging auf die Kommunikation mit einem bestimmten Email-Server ein.

defaults write com.apple.mail LogActivitiyOnHost mail.gmx.net

LogActivityOnPort

Mit dieser Einstellung kann man am besten einschränken. Man muss für jedes Protokoll, welches man beobachten möchte, einfach die dazugehörige Portnummer eintragen. Die am meisten genutzen sind

Protokolle und ihre Ports
Protokoll Port
SMTP 25
POP3 110
POP3S 995
IMAP 143
IMAPs 993

Sollen mehrere Ports gleichzeitig überwacht werden, müssen sie einfach in Anführungszeichen und mit Komma getrennt eingegeben werden.

defaults write com.apple.mail LogActivitiyOnPort \"993,143\"

Mit den drei Parametern LogSocketErrors, LogActivityOnHost und LogActivityOnPort sollte man jedem Problem beim Abrufen oder Senden von Emails auf die Schliche kommen – wenn man die LogFiles zu deuten weiß.
Und wo finden sich die LogFiles? Beim Start von Apple Mail über die Kommandzeile gibt man das zu schreibende LogFile inkl. des Pfades mit an, bei den Änderungen in der Einstellungsdatei kann man die zusätzlichen Loggingeinträge in der Datei system.log finden. Dazu einfach das Programm Konsole öffnen.

Aber Achtung: Die LogFiles enthalten viele sensible Daten wie Usernamen, Passwörter und die übertragenen Emails im Klartext und ausserdem wird das LogFile schnell sehr groß.

mac | Manches ist einfacher als man denkt …

Man sollte nicht immer alles so hinnehmen, was Andere so schreiben – egal wie sehr man ihnen Profession anerkennt. Bestes Beispiel ist der Artikel von MacMacken zum Thema IPv6-Privatsphäre. Da verweist er auf einen Artikel der Zeitschrift c´t in dem es um die Privacy Extension für IPv6 geht und darum, das diese bei OSX nicht per Default aktiviert sind. Eine Aufklärung, wie man diese denoch bei OSX aktiviert wird aufgezeigt. Da dieses Aktivierung per sysctl (also per Befehlszeile) erfolgt, ist sie somit auch nicht Neustart-sicher. Die Lösung der c´t lautet daher ihren selbstgebauten LaunchDaemon herunterzuladen und zu installieren. Dabei gibt es, wie auch bei anderen *nix/BSD-Betriebssystemen, eine deutlich einfachere Lösung:

Man lege eine Datei /etc/sysctl.conf mit dem Inhalt

net.inet6.ip6.use_tempaddr=1

an und nach einem Reboot kann man mit dem Befehl

sudo sysctl net.inet6.ip6.use_tempaddr

herausfinden, das das Ergebnisist und somit die Einstellungen wirken.

Es hilft in Zukunft also durchaus mal nachzudenken und das auszuprobieren, was bei anderen *nix/BSD-Betriebssystemen auch funktioniert – auch eine mehr oder minder renomierte Zeitschrift wie die c´t kann sich irren. Übrigens verweist Apple in seinen man-Pages selbst auf sysctl.conf :) .