25.3.14

Kali Linux - erste Schritte

  • Netzkabel ziehen
  • # deutsch Tastatur
    setxkbmap de
  • # automatische Konfiguration des Netzwerkadapters verhindern
    service network-manager stop
  • # ggfs. dhclient abschießen
    kill -INT $( pgrep dhclient )
  • # alte Spuren entfernen
    ip addr flush dev eth2
    ip route flush dev eth2
    echo > /etc/resolv.conf
  • # Netzkabel verbinden und keine IP-Adresse zuweisen/ ohne ARP starten
    ip addr add 0.0.0.0/0 dev eth2
    ip link set eth2 arp off up
  • # Wireshark starten
    wireshark
  • # Filter auf private IP-Adressen setzen
    ip.dst == 10.0.0.0/8 || ip.dst == 169.254.0.0/16 ||ip.dst == 172.16.0.0/12 || ip.dst == 192.168.0.0/16  || ip.dst == 224.0.0.0/4 || ip.dst == 255.255.255.255 
  • # Manuell IP-Adresse einrichten
    ip link set eth2 down
    ip addr flush dev eth2
    ip addr add 10.2.1.155/24 brd + dev eth2
    ip link set eth2 arp on up
  • # Gateway einrichten
    ip route add default via 10.2.1.1
  • # Nameserver einrichten
    echo "nameserver 10.2.1.1" > /etc/resolv.conf

11.2.14

Rsync über SSH nutzen

Wer öfter in die Verlegenheit kommt, große Dateien (> 1GB) über das Netz kopieren zu müssen, wird vermutlich schon festgestellt haben, dass der Linux Befehle SCP oftmals abbricht (warum auch immer).
Eine Alternative ist rsync, welcher sich einfach installieren und anwenden lässt.

Syntax ist die folgende:

rsync -avz -e ssh remoteuser@remotehost:/remote/dir /this/dir/

(c&p von http://troy.jdmz.net/rsync/index.html)

Weitere Schalter, die hilfreich sein können:

Uploadlimit eingrenzen auf 70 kb/s
--bwlimit=70

Fortschritt anzeigen:
--progress

Der Vorteil ist, dass auch nach Abbrüchen der UP- bzw. Download problemlos fortgesetzt werden kann.
I love it!


Update:
Nicht über SSH, sondern "ganz normal" syncen ist auch nicht immer ganz trivial.
Ich hatte das Problem, dass von einem NAS auf eine mit NTFS formierte externe USB-Platte gesynct werden sollte und immer wieder die gleichen Dateien gesynced wurden.
Lösung:

 rsync -rvvltDu /Quelle/ /Ziel/
-r: copies directories recursively
-l: copies symlinks as symlinks
-t: preserves modification times
-D: preserves device and special files
-v: shows output (verbose)
-u: skips files that are newer at the destination


Update:
Bei einem Fehler wie diesem
 rsync error: error in rsync protocol data stream (code 12) at io.c(601)

könnte es sein, dass der remote path zu rsync auf dem remote System nicht wie erwartet ist. Dann einfach den Pfad angeben, wie z.B.:
--rsync-path "/ffp/bin/rsync"

24.9.13

DSL - Damn small Linux als Gateway auf gleichem Rechner installieren

  • Distribution herunterladen und in den VMWare Player als Laufwerk (iso) einbinden und installieren
  • Standardmäßig ist kein APT Paketmanager aktiv. Diesen als root auf der Shell installieren mit
    dpkg-restore

  • Firewall (falls vorhanden) anpassen und Forwarding aktivieren mit

    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    echo 1 > /proc/sys/net/ipv4/ip_forward

18.9.13

Screenshots mit PHP erstellen

aptitude install imagemagick wkhtmltopdf
<?php
 
// save this snippet as url_to_png.php
// usage: php url_to_png.php http://example.com
if (!isset($argv[1])){
    die("specify site: e.g. http://example.com\n");
}
 
$md5 = md5($argv[1]);
$command = "wkhtmltopdf $argv[1] $md5.pdf";
exec($command, $output, $ret);
if ($ret) {
    echo "error fetching screen dump\n";
    die;
}
 
$command = "convert $md5.pdf -append $md5.png";
exec($command, $output, $ret);
if ($ret){
    echo "Error converting\n";
    die;
}
 
echo "Conversion compleated: $argv[1] converted to $md5.png\n"; 
  

Whois-Klasse für PHP

Nach längerer Zeit habe ich mich mal wieder auf die Suche nach einer guten PHP-Klasse für Whois-Abfragen begeben.
Und jetzt bin ich endlich fündig (und glücklich) geworden :)

Hier findet ihr eine Klasse, die endlich das tut, was sie soll.

Chapeau!

19.8.13

Firefox - Plugin Entwicklung

An dieser Stelle möchte ich beschreiben, wie man ein Firefox-Plugin entwickeln kann.
Ich weiß, dass es schon einige Anleitungen in dieser Form gibt, vielleicht aber kann man auch hier etwas lernen ; )
Das Beispiel soll ein Plugin sein, welches eine Whois-Abfrage zu einer Domain oder IP-Adresse durchführt.

Was das Plugin leisten soll:

  • Der mit der Maus selektierte Text (IP oder Domain) soll ausgewertet und an eine bestimmte URL geschickt werden
  • Die Antwort mit den Whois-Informationen soll in einem neuen Div erscheinen; alternativ: neues Tab


Was muss ich vorher machen?


Der Code:

exports.main = function() {
   
    var contextMenu = require("context-menu");
    var tabs = require("tabs");
    var selection = require("selection");
    var Request = require('request');
   
    var menuItem = contextMenu.Item({
        label: "Whois Auskunft",
        context: contextMenu.SelectionContext(),
        contentScript: 'self.on("click", function() {'+
                            'var text = window.getSelection().toString();'+
                            'self.postMessage(text);'+
                            '});',
        onMessage: function(text) {
                        tabs.open("http://whois.domaintools.com/"+text);
                    }                       
        }) ;
  

    };

Tipps:

  • Debuggen → Fehlerkonsole vom Firefox
    Console.log(„Nachricht“);



to be continued....

23.7.13

PHP und JS Schnipsel - Datumsfunktionen

Datum aus einer MySQL-Datenbank formatieren:


$datum_de = date("d.m.Y ", strToTime($datum));



Datumspicker mit jquery einbinden:

  1. Framework und CSS einbinden 
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js"</script>
    <script type="text/javascript" src="http://code.jquery.com/ui/1.10.3/jquery-ui.js">
    </script> <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" type="text/css" />
  2. Funktion definieren (geht auch ohne PHP :))
function datepicker($fieldId)
{
    ?>
    <script type="text/javascript">

        jQuery(function($){
            $.datepicker.regional['de'] = {clearText: 'enternen', clearStatus: 'Auswahl löschen',
                closeText: 'schließen', closeStatus: 'Änderungen nicht übernehmen',
                prevText: 'vorheriger Monat', prevStatus: 'vorheriger Monat',
                nextText: 'nächster Monat', nextStatus: 'nächster Monat',
                currentText: 'heute', currentStatus: '',
                monthNames: ['Januar','Februar','März','April','Mai','Juni',
                    'Juli','August','September','Oktober','November','Dezember'],
                monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
                    'Jul','Aug','Sep','Okt','Nov','Dez'],
                monthStatus: 'anderer Monat', yearStatus: 'anderes Jahr',
                weekHeader: 'Wo', weekStatus: 'Woche des Monats',
                dayNames:
                    ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
                dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
                dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
                dayStatus: 'Setze DD als ersten Wochentag', dateStatus: 'Wähle D, M d',
                dateFormat: 'yy-mm-dd', firstDay: 1,
                changeMonth: true,
                changeYear: true,
                initStatus: 'Bitte wählen Sie ein Datum', isRTL: false};
            $.datepicker.setDefaults($.datepicker.regional['de']);
        });
        $(function() {
            <?php echo "\$(\"#" . $fieldId . "\").datepicker();";
            ?>
        });

    </script>
    <?php
}

Openhab und Ecoflow Max - API Anbindung

 Ich wollte die neu erworbene Powerstation in Openhab einbinden, um den aktuellen Status (Ladestand etc.) über Openhab auswerten zu können. ...