Manuel A. Krischer

Wissenschaftlicher Mitarbeiter

»Never do something just because other people do it, my father said, never just follow the crowd, never!«
(Margaret Thatcher)

Unix / Linux im ADV-Labor

An dieser Stelle eine lose Sammlung von Informationen zur Gummersbach IT-Infrastruktur, Unix/Linux und zur Profilhomepage.

Android Mailclient mit dem ADV Mailaccount nutzen

Kurzanleitung zur Konfiguration des Android Mailclients mit sicheren Serververbindungen und passendem IMAP-Ordner für den ADV-Mailaccount.

Cisco Jabber mit alternativen Clients

Wenn der offizielle Cisco Client für ihr Betriebssystem nicht verfügbar ist, funktioniert der Textchat auch mit einem Jabber/XMPP Client:

Benutzername [CAMPUSID]@th-koeln.de
Passwort [CAMPUSIDPW]
Server jabber.th-koeln.de:5222

Aliase

Für die Datei ~/.bashrc bzw. ~/.alias (wenn in .bashrc aufgerufen)

Das aktuelle Verzeichnis als Baumansicht (mit Unterverzeichnissen)

alias dirf='find . -type d| sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-\1/"'

l > ls -al

alias l='ls -alo'

Alle eigenen Semaphoren entfernen

alias rmsem='ipcs | grep `whoami` | cut -c1-12 | sed s.s."ipcrm -s".g | sh'

Alle eigenen Shared-Memory Seqmente entfernen

alias rmsh='ipcs | grep `whoami` | cut -c1-12 | sed s.m."ipcrm -m".g | sh'

Alle eigenen Sharedmemoryseqmente/Semaphoren anzeigen

alias dirsh='ipcs | grep `whoami`'

Gegen Tippfehler

alias cd..='cd ..'

Schneller auf den BS-Praktikum Server

alias bs='ssh `whoami`@advbs08'

Um die Aliasbefehle auch in der Standardshell TCSH benutzen zu können, müssen diese in der Datei ~/.tcshrc angelegt werden und eine leichte Veränderung in der Form alias ll ls -al haben. Hochkommata sowie das Gleichheitszeichen sind nicht nötig.

Shell-Spielereien

Hinweis: um die eigene Shell mittels chsh (CHangeSHell) auf eine andere als die Standard-Shell (tcsh) zu ändern, muss man sich auf der ADVM2 einloggen, da nur dort die Benutzeraccounts geführt werden.

Die Login-Standardshell ändern Sie im GMID-Portal.

folgende Befehle in der Datei ~/.bashrc einfügen. Wenn die Bash auch Login-Shell ist (siehe oben), dann auch folgenden link anlegen ln -s .bashrc .bash_profile.

Bei jedem Login die Größe des eigenen Homeverzeichnisses in lesbarer Einheit erfahren

Für .bashrc

echo Homeverzeichnis belegt $(($(du -k ~| tail -n 1 | cut -f 1)/1000)) MB

Für .tcshrc

set BYTE=`du -k | tail -n 1 | cut -f 1` echo Homeverzeichnis belegt `expr $BYTE / 1000` MB

Um standardmäßig und auch im Midnight Commander VIM als Editor zu verwenden

export EDITOR=/usr/bin/vim

Das Datenverzeichnis für den Midnight Commander festlegen

export MC_DATADIR=~/app/mc

Einfärben des Prompts zur besseren Unterscheidung

Beispiel des eingefärbten Prompts rgb_restore='\[\033[00m\]' rgb_black='\[\033[00;30m\]' rgb_firebrick='\[\033[00;31m\]' rgb_red='\[\033[01;31m\]' rgb_forest='\[\033[00;32m\]' rgb_green='\[\033[01;32m\]' rgb_brown='\[\033[00;33m\]' rgb_yellow='\[\033[01;33m\]' rgb_navy='\[\033[00;34m\]' rgb_blue='\[\033[01;34m\]' rgb_purple='\[\033[00;35m\]' rgb_magenta='\[\033[01;35m\]' rgb_cadet='\[\033[00;36m\]' rgb_cyan='\[\033[01;36m\]' rgb_gray='\[\033[00;37m\]' rgb_white='\[\033[01;37m\]' rgb_std="${rgb_blue}" rgb_usr="${rgb_yellow}" PS1="${rgb_usr}\u${rgb_std}@\h:${rgb_usr}\w${rgb_restore}$PS2"

VIM mit Syntax-Highlight

VIM mit Syntax-Highlight

Von Hendrik Hansmeier stammt der Tipp, im Homeverzeichnis die Datei ~/.vimrc anzulegen und dort ein anderes Farbschema als das voreingestellte zu aktivieren. Dazu muss der Eintrag colorscheme $name$ angelegt werden. $name$ muss einer der Folgenden sein:

Beispiel: colorscheme desert

Es können auch noch weitere Einstellungen in der Datei vorgenommen werden, evtl sinnvoll ist die Darstellung der Zeilennummern mit dem Eintrag set number. Eine fertigte Einstellungsdatei gibt es auf der ADVM1 im Verzeichnis /usr/local/praktikum/.vimrc. Beide Befehle können auch in die Befehlszeile des VIM eingegeben werden, wenn man das Aussehen oder die Farbzusammensetzung erstmal temporär testen möchte.

Um auch auf den ThinClients im ADV-Pool die Farben dargestellt zu bekommen, muss in der Datei ~/.tcshrc auch noch der Eintrag setenv TERM vt300 in setenv TERM xterm geändert werden und anschliessend mit source .tcshrc die veränderten Einstellungen der Shell bekannt gemacht werden.

Mehr zu VIM gibt es z.B. bei wiki.ubuntuusers.de/vim.

Die Profilhomepage aufpeppen

Quellcode mit SSI Anweisung

Da aus Sicherheitsgründen weitverbreitete Scriptsprachen wie PHP auf dem Webserver der Hochschule deaktiviert sind, sehen die meisten Profil-Homepages unter www.gm.fh-koeln.de/~USERNAME meist sehr traurig aus. Damit Menüstrukturen trotzdem nicht mehrfach gepflegt werden müssen oder auf Uralt-Techniken wie HTML Frames zurückgegriffen werden muss, ist der Einsatz von Server Side Includes (SSI) zu empfehlen.

Um eine Seite, die bspw. die Navigation enthält, einbinden zu können, muss ihre aufgerufene Seite die Endung .shtml anstelle von .html bekommen - z.b. also index.shtml. An der Stelle wo jetzt die eingebundene Datei platziert werden soll, muss der SSI Befehl (als Kommentar getarnt) <!--#include file="DATEINAME.EXT" --> eingefügt werden.

Weitere Hinweise über die Nutzung von SSI und mehr Funktionen wie Dateidatum und bedingte Anweisungen werden z.b. bei jumk.de/ssi/ssi.shtml beschrieben.

SSH Key für den Login nutzen

Wenn statt Username/Passwort der öffentliche Schlüssel des eigenen Rechner für den Login auf den Rechnern des ADV-Labors verwendet werden soll, kann nach dieser Anleitung verfahren werden www.schlittermann.de/doc/ssh.

Hommage an Dennis Ritchie

Dennis MacAlistair Ritchie (09.09.1941 - 12.10.2011) war ein amerikanischer Informatiker und entwickelte zusammen mit Ken Thompson und anderen die erste Version des Unix-Betriebssystems. Zusammen mit Thompson und Brian W. Kernighan entwickelte er die Programmiersprache C.

Youtube: "Write in C"

Escape Sequenzen

Escapesequenzen mit color.h im Einsatz

Um Farben für Textausgaben oder Positionierungen des Cursers (und vieles mehr) auf einem Unix-Terminal zu Bewerkstelligen, können Escape-Sequenzen verwendet werden.

Für eine einfache Anwendung die Datei color.h abspeichern und im Programm mittels #include "color.h" einbinden. Die einzelnen Makros müssen jeweils noch mit Semikolon abgeschlossen werden.

#include <stdio.h>
int main(){
        int c1 = 30, c2 = 42;
        while(1){
                printf("%c[%dm%c[%dm HELLO ",27, c1++, 27, c2++);
                usleep(2000);
                if(c1>37) c1 = 30;
                if(c2>47) c2 = 40;
                fflush(stdout);
        }
return 0;
}

Zugriffsrechte des Homeverzeichnisses überprüfen

Folgendes Script in .tcshrc oder .bashrc einbinden, um eine Veränderung der Verzeichnisrechte zu bemerken.

#!/bin/sh
#In Startscript der Shell einbinden um moegliche 
#Aenderung der Verzeichnisrechte zu bemerken
#PERM_REQ="drwx--S---"  #default
PERM_REQ="drwx--x--x"   #website aktiv
PERM_AKT=`ls -ld $HOME | cut -d" " -f1`
if [[ $PERM_REQ != $PERM_AKT ]]; then
        echo ACHTUNG: VERZEICHNISRECHTE von $HOME veraendert
fi

ascii.c

Einfache Darstellung der wichtigsten Asciizeichen mit C.

Einfache Darstellung der wichtigsten Asciizeichen mit C.

#include <stdio.h>
void main(){
        for(int i=32; i<128; i++){
                printf("%3d: %c ",i,i);
                if ((i+1)%8==0)
                        printf("\n");
        }
}

VPN mit VPNC

Update: Opeconnect statt VPNC

Seit 2022 funktioniert die untengenannte VPNC Lösung nicht mehr, da alte Verschlüsselungsmethoden bei Cisco gestrichen wurden (nun: DH Group14) und VPNC nicht mehr entwickelt wird.

Als Alternative ist die Software openConnect für alle Betriebssystem, die nicht mit dem originalen AnyConnect betrieben werden können, empfohlen.

Die Konfiguration ist etwas anders vorzunehmen, aber anschließend ähnlich komfortabel über die Kommandozeile zu nutzen.

Als Root

/etc/openconnect/fhk.confprotocol=anyconnect
user=CAMPUSID
passwd-on-stdin
authgroup=FHK-VPN
pid-file=/root/openconnect.pid
background

Damit man das Kennwort nicht jedes Mal eintippen muss, aber es nicht sichtbar wird, legen wir folgende Datei an

/root/openconnect.pwdCAMPUSIDPASSWORD

Diese Datei wird mit chmod 600 /root/openconnect.pwd nur für den Administrator lesbar gemacht!

Anschließend legen wir noch 2 Aliase an, damit mit nur einem kurzen Befehl das VPN gestartet und auch wieder beendet werden kann: (Je nach Unix/Linuxvariante kann die Aliasdatei auch anders benannt sein oder bereits in .profile oder .bashrc. definiert werden.)

/root/.aliasalias vpn='cat /root/openconnect.pwd | openconnect --config=/etc/openconnect/fhk.conf vpn.fh-koeln.de'
alias vpnoff='kill `cat /root/openconnect.pid`; rm /root/openconnect.pid'

Nach dem Neueinlesen der Aliase sollte dann mit vpn das VPN gestartet werden können und das Banner der Hochschule zu sehen sein. Mit vpnoff wird es wieder deaktiviert und die Datei mit der hinterlegten PID gelöscht. Beide Befehle funktionieren nur als root. Für Systeme mit sudo statt einem echten Root-Nutzer müssen entsprechende Anpassungen vorgenommen werden. Auf einer Seite wie www.wieistmeineip.de kann überprüft werden, ob das VPN funktioniert. Adressen der Hochule starten immer mit 139.6.xxx.xxx.

Der Artikel aus dem MOXD-Lab zeigt, wie man den Netzverkehr aufsplitten kann, damit nicht alle Anwendungen die Daten durchs VPN schicken, sondern nur die benötigten internen Seiten.

Um das VPN der TH auch unter Linux nutzen zu können wird ein Cisco VPN Client benötigt. Dafür bietet sich das Paket "vpnc" an. Zur Konfiguration muss eine Datei mit folgendem Inhalt angelegt werden:
/etc/vpnc/default.confIPSec gateway vpn.fh-koeln.de
IPSec ID FHK-VPN
IPSec secret KoelnerDom
Xauth username YOURVPNNAME
Xauth password YOURVPNPASSWORD
Application Version Cisco Systems VPN Client 4.8.0:Linux
Anschließend noch die Rechte der Datei anpassen chmod 600 /etc/vpnc/default.conf

Mit dem Root-Befehl
vpnc
wird das VPN anschließend betreten, mit
vpnc-disconnect
wieder verlassen.