Kurztipp: Tab Completion funktioniert nicht bei vnc+xfce

Ich nutze aus diversen Gründen ab und an XFCE in einer VNC Session unter Debian 8. Dabei fehlte mir aber die Tab Completion, was extrem nervig sein kann. Die Lösung für mein Problem war:

in der

~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml

folgendes editieren

<property name="&lt;Super&gt;Tab" type="string" value="switch_window_key"/>

wird zu

<property name="&lt;Super&gt;Tab" type="empty"/>

danach die VNC Session killen und neu starten.

Kein häufiges Problem nehme ich mal an ;-).

Kurztipp: syncen mit lsyncd

Lsyncd hatte ich mir schon mal vor Jahren angeschaut. Damals wurde aber ssh als Transport noch nicht unterstützt.  Nun habe ich mir das nochmal kurz (wirklich kurz) unter Debian 8 angeschaut (Version 2.1.5). Lsyncd überwacht Verzeichnisse via inotify und überträgt alle geänderten Dateien automatisch auf die angegebenen Zielhosts.  Lsyncd bietet eine große Anzahl an Optionen, daher schadet ein Blick auf die Homepage nicht. Zum schnellen testen kann man einfach folgendes ausprobieren:

apt install lsyncd

Auf der Konsole:

lsyncd -rsyncssh /home/thomas/hallo zielhost /home/thomas/test

Dabei wird der Inhalt des Ordners hallo in den Zielordner test Übertragen. Default werden Änderungen alle 15 Sekunden übertragen. Der Zielordner wird dabei automatisch angelegt.

Konfigurationsdateien lassen sich auch „problemlos“ nutzen, z.B.:

$ cat /etc/lsyncd/lsyncd.conf.lua                                                                       
settings  {
        logfile = "/var/log/lsyncd/lsyncd.log",
                statusFile = "/var/log/lsyncd/lsyncd.status"
                }

sync {
        default.rsyncssh,
        source = "/home/thomas/hallo",
        host = "thomas@zielhost",
        targetdir = "/home/thomas/test",
      }

und mit

service lsyncd start

den daemon starten. Danach eventuell noch ein

update-rc.d lsyncd defaults

für den Autostart des daemons.

Dabei muss auf dem Zielhost ssh login ohne Passwort erlaubt sein. Man kann aber auch rsyncd zur Übertragung nutzen. Zu beachten ist das lsyncd default „delete“ als Option hat. Das merkst Du daran, dass plötzlich vielleicht Dein gesamtes home directory gelöscht wurde…nicht das es mir passiert wäre. Die Syntax im Bezug auf „/“ bei Verzeichnissen ist anders als bei rsync.

Lsyncd ist eventuell  interessant wenn man einfach nur ein paar Konfigurationen, ohne Puppet & Co zu nutzen, syncen will oder  man eine überschaubare Menge an Dateien auf verschiedenen hosts verteilen will. Ab einer gewissen Anzahl von Dateien stößt man an auf diverse Probleme (inotify&co). Am besten man testet lsyncd auf Testmaschinen bevor man es produktiv einsetzt.

Kurztipp: tmux Session beim login starten bzw. attachen

Um beim Login via ssh sofort in einer tmux Session zu landen habe ich folgendes in meine .bashrc auf dem Zielhost eingefügt:

case $- in
    *i*)
    if command -v tmux>/dev/null; then
        if [[ ! $TERM =~ screen ]] && [[ -z $TMUX ]]; then
          if tmux ls 2> /dev/null | grep -q -v attached; then
            exec tmux attach -t $(tmux ls 2> /dev/null | grep -v attached | head -1 | cut -d : -f 1)
          else
            exec tmux
          fi
        fi
    fi
    ;;
esac

Sehr praktisch falls die Verbindung nicht stabil oder die bash_history deaktiviert ist.

Man kann auch

ssh 123.123.123.123 -t tmux a

nutzen, falls eine tmux Session vorhanden ist bzw. „tmux“ falls keine.
Die .bashrc Lösung ist aber natürlich etwas eleganter.

Link:  https://stackoverflow.com/a/42351698

 

Kurztipp: eine Datei leeren

Wir haben eine Datei, die wir einfach nur leeren wollen. Die Dateirechte sollen so bleiben und wir wollen nicht mit rm&touch&chown&chmod arbeiten.

$ l machmichleer.txt
-rw-rw-r-- 1 thomas thomas 27K Apr 21 10:06 machmichleer.txt

$ > machmichleer.txt

$ l machmichleer.txt
-rw-rw-r-- 1 thomas thomas 0 Apr 21 10:07 machmichleer.txt

Kurztipp: cron für einen bestimmten Benutzer deaktvieren

Eventuell will man einem bestimmten Benutzer das Recht nehmen einen cronjob zu nutzen. Dazu reicht es eine Datei /etc/cron.deny anzulegen und den jeweiligen Benutzer dort einzutragen. Beim nächsten Versuch einen cronjob zu editieren, sollte dann in etwa folgendes kommen:

$ crontab -e
You (www-data) are not allowed to use this program (crontab)

Exisitiert cron.allow wird cron.deny nicht ausgewertet.

genaueres findet man bei man crontab.

Kurztipp: force reboot

Da ich das vor ca. 5 Minuten erfolgreich benutzt habe, bzw. benutzen musste. Wenn ein „reboot“ (selbst mit -f) seine Wirkung nicht tut, kann man folgendes machen:

echo 1 > /proc/sys/kernel/sysrq
echo b > /proc/sysrq-trigger

Funktioniert wunderbar und ist vergleichbar mit drücken der Reset Taste am Rechner. Dabei wird kein Prozess beendet, kein sync durchgeführt oder umount. Kann also unter Umständen zu größeren Problemen führen.

Mehr Informationen dazu gibt es unter http://major.io/2009/01/29/linux-emergency-reboot-or-shutdown-with-magic-commands/.

Kurztipp: wget soll vorhandene Datei überschreiben

Nutzt man wget um eine bereits vorhandene Datei erneut runterzuladen bekommt man in der Regel etwas wie

$ wget http://exdc.net/DATEI
...
In »DATEI.1« speichern.

Will man aber DATEI überschreiben falls eine neuere Version auf dem Server existiert, kann man z.B. einfach den Parameter -N nutzen

$ wget -N http://exdc.net/DATEI
...
Datei auf dem Server nicht neuer als die lokale Datei »DATEI« -- kein Download.

Dabei wird die Datei nur runtergeladen wenn die Datei auf dem Server neuer bzw. die Größe unterschiedlich zur lokalen Version ist.

Das steht natürlich alles in den man pages, aber ich wollte es mal erwähnt haben, da ich heute drüber gestolpert bin.

 

Kurztipp: Text zwischen zwei Strings anzeigen

Will man den Text zwischen zwei Strings angezeigt bekommen, kann man das recht einfach mit awk machen:

$ awk '/Dec 17 16:35:17/,/Dec 17 17:55:17/' /var/log/syslog
Dec 17 16:35:17 jabber -- MARK --
Dec 17 16:55:17 jabber -- MARK --
Dec 17 17:01:01 jabber /USR/SBIN/CRON[24012]: (root) CMD (ntpdate ntps1.gwdg.de  >/dev/null 2>&1)
Dec 17 17:15:17 jabber -- MARK --
Dec 17 17:17:02 jabber /USR/SBIN/CRON[24252]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Dec 17 17:35:17 jabber -- MARK --
Dec 17 17:55:17 jabber -- MARK --

Wenn man es braucht hat man es eh wieder vergessen, aber ich wollte es mal erwähnt haben ;-).

Surfraw – god loving extensions to the shell

Surfraw  provides a fast unix command line interface to a variety of popular WWW search engines and other artifacts of power.  It reclaims google, altavista, dejanews, freshmeat, research index, slashdot and many  others  from  the false‐prophet,  pox‐infested  heathen  lands  of  html‐forms, placing these wonders where they belong, deep in unix heartland, as god loving extensions to the shell.

Auf Gambaru.de steht schon ein sehr guter Artikel darueber, daher spare ich mir die Einzelheiten. Ich musste noch

~/.surfraw.conf
SURFRAW_browser=firefox

anlegen, da es mit Chrome nicht funktioniert hat und ich firefox nicht als global default browser einstellen wollte. Irgendwie nett, dass es urspruenglich von Julian Assange ist.

autocd in der bash

shopt -s autocd
shopt -s cdspell

in die ~/.bashrc eintragen. cdspell bezieht sich nur auf Tippfehler beim Directorywechsel mit cd. Es gibt noch eine Reihe von shopt Einstellungen die man sich alle in der manpage der bash anschauen kann.

 

 

so einfach

stat Desktop/anonlog.sh
 File: „Desktop/anonlog.sh“
 Size: 1002          Blocks: 8          IO Block: 4096   reguläre Datei
Device: 804h/2052d    Inode: 1085146     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/  thomas)   Gid: ( 1000/  thomas)
Access: 2010-06-23 09:28:50.186691906 +0200
Modify: 2010-06-23 09:28:32.086691173 +0200
Change: 2010-06-23 09:28:41.926690653 +0200