[Quicktip] Passwort als Parameter an ssh übergeben

Als Erweiterung zu [Quicktip] ssh Verbindung ohne Known-Hosts Eintrag hier noch die Möglichkeit, das Loginpasswort für einen Server an den SSH Befehl zu übergeben:

Aus Sicherheitsgründen ist es nicht möglich, Passwörter an den ssh-Befehl unter Linux/Unix zu übergeben. Damit soll verhindert werden, dass Passwörter in Scripten hardcoded werden und somit nicht mehr sicher sind. Möchte man passwortlos per Script mit anderen Servern arbeiten, gibt es noch immer die Möglichkeit, die RSA Keys zu hinterlegen.

Nun gibt es aber auch einige wenige spezielle Anwendungsfälle, in denen das Passwort nicht wirklich Sicherheitsrelevant ist, man nicht die Möglichkeit hat den RSA Key zu hinterlegen und man immer mit wechselnden Rechnern zu tun hat. Für diese seltenen Fälle kann man sich mit dem “expect” Befehl behelfen. “expect” macht folgendes: man ruft ein Programm per “expect” auf und versieht das ganze mit einem Kontrollscript. Dann kann man mit einer Art regulärer Ausdrücke nach Ausgaben eines Programmes suchen und auf diese reagieren. Im Fall von ssh sucht man nach der Ausgabe “password:”. Findet expect dieses, soll es einen vorgegebenen Wert einsetzen und mittels Enter bestätigen. Wenn man nun noch ein bisschen Bash-Magie betreibt kommt dieses Script heraus.

Der Aufruf läuft dann so:

./sshlogin.exp password 192.168.1.11 who

In dieser Variante wird immer der Benutzer root verwendet, man kann das Script aber einfach noch um einen weiteren Parameter erweitern, schon ist der Benutzername auch variabel.

Und was war mein Anwendungsfall? Darüber gibt es demnächst einen Artikel… 😉

Links:
bash.cyberciti.biz

[Quicktip] MySQL Query-Ergebnis per Console in eine CSV Datei exportieren

Mit phpmyadmin und Konsorten ist es kein Problem, Ergebnisse von SQL Abfragen in CSV-Dateien zu exportieren. Problematisch wird es allerdings, wenn man eine aufwändigere Abfrage hat, die den php Timeout provoziert, oder aber man keinen Web-Client zu Verfügung hat. Dann greift man zur Konsolenversion von MySQL – welche diesen Export nicht direkt anbietet. Mittels ein bisschen Bash-Magie kann man sich aber behelfen:

mysql --database=database --execute="select a from b where a>1;" | sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > filename.csv

Was passiert? Die Abfrage wird ausgeführt und die Ergebnisse werden in Textform ausgegeben. Mittels Pipe wird die Ausgabe an “sed” weitergegeben, welches diese in das CSV Format umwandelt und anschließend in die Datei “filename.csv” schreibt.

Via snipplr.com

[Quicktip] ssh Verbindung ohne Known-Hosts Eintrag

Es gibt gute Gründe, warum ssh die Fingerprints (also die virtuellen Fingerabdrücke) der Server speichert, mit denen man sich verbindet. Tut man dies nämlich erneut, so kann ssh prüfen, ob sich hinter dieser IP bzw. hinter diesem Hostnamen noch immer der gleiche Rechner befindet. Wenn nicht, gibt’s eine Warnung.

Nun gibt es aber auch Fälle, bei denen will man diesen Schutz unterbinden – vornehmlich beim Scripting. Und das macht man so:

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@server

Was passiert? Mit dem ersten Parameter wird das known-hosts-File “/dev/null”, also “nichts”, verwendet. Parameter 2 gibt an, dass die Überprüfung der Fingerprints deaktiviert werden soll. Lässt man den ersten Parameter weg, so werden trotzdem die Fingerprints in der normale known-hosts-File geschrieben.

[Quicktip] GIT Commit/Merge auf github rückgängig machen

Folgendes Problem: Ihr habt ein paar Änderungen commited und auch schon gepushed – in meinem Fall zu github -, merkt dann aber, dass ihr was falsches commited habt. Was nun?

Zuerst könnt ihr mit eurem GIT Client auf die Version resetten, die noch ok war. Oder ihr macht das per Git-Bash:

git reset --hard [Hashwert des gültigen Commits]

Damit setzt ihr euren Stand direkt auf diesen Commit zurück. Achtung! Wenn ihr den Parameter –hard verwendet werden sämtliche Änderungen überschrieben – und alle nachfolgenden Commits werden gelöscht!

Anschließend führt ihr ein

git push -f

aus und schon wird der Reset auch an Github oder evtl. andere entfernte Repositories übertragen. Achtung auch hier: die nachfolgende History wird gelöscht, auch von github. Wenn ihr den Parameter -f (für “force”) weglasst, so wird euch der Push verweigert, da ihr ja einen älteren Stand als im Repository pushen wollt. Daher ist er zwingend nötig.

[Quicktip] iPhone Wörterbuch durch eigene Wörter erweiterten

Im Gegensatz zu Android ist die Auto-Korrektur beim iPhone nicht sehr intelligent gelöst. Hinzu kommt, dass sie nur schlecht neue Wörter lernt. Um dem Abhilfe zu schaffen kann man nun einen Jailbreak durchführen, um anschließend die Datei

/private/var/mobile/Library/Keyboard/dynamic-text.dat

zu editieren. Die einzelnen zusätzlichen Wörter stehen da durch Leerzeichen getrennt drin.

Es gibt aber auch einen wesentlich eleganteren Weg, und das ohne Jailbreak. Dazu geht man in die Einstellungen – Allgemein – Tastatur – internationale Tastaturen – Tastatur hinzufügen. Dort wählt man nun die Tastatur “Japanisch (Romaji) aus. Wenn man nun wieder eine Ebene höher geht, also in die allgemeinen Tastatureinstellungen, dann gibt es dort den neuen Menüpunkt “Benutzerwörterbuch”. In diesem kann man nun eigene zusätzliche Wörter verwalten, welche dann von der Autokorrektur erkannt werden. Hinweis: Es reicht, das Wort nur bei “Wort” einzutragen – man muss nicht noch Japanisch übersetzen 😉

[Quicktip] Google Mail, Kalender und Kontakte mit iPhone synchronisieren

Als Android-User ist mir Googlemail und seine Kalender- sowie Kontaktdienste ans Herz gewachsen. Mein komplettes Telefonbuch wird mit Google synchronisiert, was mir erlaubt, einfach mal zwischen Geräten zu wechseln, und das ohne umständlichen Datenaustausch.

Wenn ich nun auf dem iPhone ein neues Email-Konto hinzufügen möchte, wird mir auch gleich Googlemail als eigene Rubrik angeboten. Schön und gut, nur leider werden bei dieser Methode nur Emails und Kalender synchronisiert, die Kontakte jedoch nicht. Der Trick ist, dass man kein Googlemail sondern ein Exchange Konto einrichten muss. Der Benutzername ist die eigene Googlemail-Adresse, das Passwort bleibt gleich. Klickt man nun auf “fertig”, so wird man erstmal darauf hingewiesen, dass die Zertifikate nicht glaubwürdig sind. Das bestätigt man einfach. Anschließend erscheint noch das Feld “Server”, in welches man einfach

m.google.com

einträgt. Aussehen müsste es dann so:

Anschließend drückt man noch einmal auf “fertig”. Nun kann man wählen, was synchronisiert werden soll. Hier tauchen nun auch die Kontakte auf.

[Quicktip] mehrere Googlekalender auf dem iPhone

Kurz nachdem ich mein neues iPhone 4 eingerichtet hatte, stellte sich mir folgende Frage: Wie kann ich mehrere Google Kalender mit dem iPhone synchronisieren? Man ruft mit dem iPhone die Seite

m.google.com/sync

auf. Dort steht dann wahrscheinlich, dass dieser Service nicht verfügbar ist bzw. das Gerät nicht unterstützt wird. Man klickt nun unten auf

“Sprache ändern”

und wählt dort “Englisch (US)” aus. Anschließend meldet man sich mit seinem Google Account an. Nun werden einem die verwendeten Geräte angezeigt (iPad, iPhone, iPod usw.). Klickt man auf eines davon, kann man per Haken auswählen, welche Kalender für dieses Gerät synchronisiert werden sollen. Bei der nächsten Synchronisierung erscheinen die Kalender in der Kalender-App.

Falls dem nicht so sein sollte, geht einfach in die Einstellungen -> “Mail, Kontakte, Kalender” und wählt dort euren Google Account aus. Legt den Schalter für “Kalender” um. Ihr erhaltet eine Warnung, dass nun alle Einträge dieses Kalenders vom iPhone gelöscht werden. Bestätigt dies und legt anschließend den Schalter erneut um. Wenn ihr nun die Kalender-App startet, wird eine erneute Synchronisierung erzwungen.

Fertig.

[Quicktip] Milestone – Fragezeichen im Batteriesymbol

Falls euer Milestone mal ein Fragezeichen im Batteriesymbol innerhalb der Statusleiste anzeigen sollte, dann haut irgendwas bei der Synchronisierung zwischen Akku und Telefon nicht hin. Das Problem scheint damit zu tun zu haben, dass das Milestone den Akkuverbrauch nur in 10%-Schritten lesen kann und dabei irgendwie aus dem Takt gerät.

Ist ja auch egal. Da man aber gerade bei einem Akkufresser wie dem Milestone auf die Anzeige angewiesen ist, kann man folgendes probieren, um das Problem zu beheben:

– Telefon einfach mal neu starten. Der Akkustand sollte aber um min. 10% geschrumpft sein, da sonst auch der Neustart laut eigener Erfahrung auch nichts bringt. Am besten das Handy nach einer oder 2 Stunden neu starten.

– schneller geht es mit einem Kaltstart – während des Betriebs einfach mal den Akku herausnehmen, 10 Sekunden warten und dann wieder einsetzen. Anschließend kann man das Handy wieder starten.

Bei mir haben beide Methoden funktioniert. Falls das Fragezeichen stehen bleibt, solltet ihr euch über einen neuen Akku Gedanken machen. Zum Glück kosten die ja nicht mehr allzu viel.

[Quicktip] Motorola Milestone kein Internet trotz Empfang

Ich führe hier mal die bereits vom alten Blog bekannte Reihe der Quicktips weiter, diesmal mit einem Tip zum Motorola Milestone. Ich hatte seit dem letzten Service-Update von Android 2.1 das Problem, dass ich teilweise unterwegs eine HSPA/3G/EDGE/GPRS Verbindung angezeigt bekomme, jedoch weder im Browser noch sonst irgendwo der Zugriff auf das Internet möglich ist. Und dazu möchte ich hier die Lösung aufzeigen.

Das Problem liegt am Wlan: fährt man das Handy mit eingeschaltenem Wlan ein und es verbindet sich anschließend gleich mit einem bekannten Wlan, dann tritt genau dieser Fehler auf. Sobald man das Wlan verlässt hat mein kein Internet mehr. Die einzige Lösung ist ein Neustart des Telefons, natürlich erst, wenn ihr das Wlan ausgeschalten habt.

Ich weiß, dass ist keine schöne Lösung, denn ab und zu vergisst man es doch mal, aber zumindest kennt ihr nun die Ursache des Problems 😉

Es bleibt zu hoffen, dass die Probleme mit dem hoffentlich noch in diesem Jahr erscheinenden Android 2.2 Update behoben werden.