python : Key Press Event

Man möchte in einem Python Script einen Key Event abfangen. Das geht recht gut über curses

Beispiel :
#!/usr/bin/env python

import curses
stdscr = curses.initscr()
curses.cbreak()
stdscr.keypad(1)

stdscr.addstr(0,10,"Hit 'q' to quit")
stdscr.refresh()

key = ''
while key != ord('q'):
    key = stdscr.getch()
    stdscr.addch(20,25,key)
    stdscr.refresh()
    if key == curses.KEY_UP: 
        stdscr.addstr(2, 20, "Up")
    elif key == curses.KEY_DOWN: 
        stdscr.addstr(3, 20, "Down")

curses.endwin()


Hier gefunden :
stackoverflow.com - allyourcode
Referenz - Python 3.5 - curses

Bash : Folder an ein Array übergeben

Alle Unterordner eines Ordners durchnummeriert anzeigen.

path=/home
array=()
while IFS= read -r -d $'\0'; do
        array+=("$REPLY")
done < <(find ${path} -maxdepth 1 -type d ! -name '.*' ! -wholename ${path} -print0 )
cnt=1
for item in "${array[@]}"
do 
        echo "${cnt}) -> ${item}" 
        ((cnt++))
done

Bash : Parameter sauber an Skript übergeben

Parameter sauber an Skript übergeben mit getopts.

# definiere mögliche Parameter
# ------------------------------------------------

while getopts s:f:h opts; do
        case ${opts} in
                s) var1=${OPTARG} ;;
                f) var2=${OPTARG} ;;
                h) show_help ;;
        esac
done


Erklärung :
In diesem Beispiel gibt es 3 Parameter s,f und h , wenn -s angegeben wird muss ein Inhalt folgen. Also script.sh -s wirft den Fehler aus
Diese Option erfordert ein Argument -- s
das selbe würde auch auftreten wenn f ohne Inhalt angegeben wird. Das wird definiert indem bei getopts ein : hinter dem parameter steht (s:f:) bei h steht kein : hinter dem Buchstaben somit wird dieser Parameter leer aufgerufen also nur mit -h.

you want to know more :
mkssoftware.com docs getopts
wiki.bash-hackers.org - howto - getopts_tutorial

symbolische links setzen unter Windows & Linux

Jeder Admin wird sich jetzt denken "was soll das denn nun ?" aber trotzdem schreibe ich hier mal etwas zu diesem Thema.
Es dient auch mir als kleiner Spicker :-)

In beiden Beispielen wird die letzte Version eines Ordners im root Ordner mit latest verlinkt.

Unter Linux ist es möglich sogenannte Links zu setzen. Die verhalten sich wie normale Ordner bzw Dateien liegen aber eigentlich an einem anderen Ort im Dateisystem. Somit kann man einfach z.B. das Storage einer Owncloud auf einen NFS Share legen oder, was auch gerne gemacht wird, immer auf die letzte Version einer Datei linken. Der Aufruf dazu ist
ln -s Zielverzeichnis Linkname
löschen kann man den link mit dem Befehl
rm Linkname

ln linux

Das selbe verhalten kann man auch unter Windows mit mklink nachvollziehen. Das rettet einem manchmal den Tag wenn z.B. der Benutzer die Länge von 256 Zeichen überschritten hat. Dann steigt man tiefer ein und kann die Datei umbenennen oder eben ein Backup durchführen. Früher habe ich dafür immer subst verwendet, das werden jetzt die Windows Admins kennen ;-)
Link setzen mit Windows (cmd als Admin)
mklink /D Linkname Zielverzeichnis
Achtung die Parameter sind im Vergleich zu Linux verdreht, passiert mir jedesmal deswegen die Warnung.
Mit dem folgenden Befehl kann man einen Link auf einen Ordner / eine Datei löschen
rmdir Linkname

mklink windows

Kleiner Tipp :
Was man unter Windows damit auch machen kann ist Spiele von Steam, Uplay oder Origin auf eine andere HDD zu schieben.


Informationen zu der Befehlszeile :
technet.microsoft.com - mklink erklärt
wiki.ubuntuusers.de - ln erklärt
technet.microsoft.com - subst erklärt

pdftk : bearbeiten von PDF Dateien

Es gibt zwar schon tausende von Einträge zu diesem Thema dennoch schreibe ich jetzt mal was zu pdftk was mir in der Shell immer gute Dienste leistet. Ich hatte gerade wieder die Anforderung eine PDF zu verkleinern und zu drehen, sicher man könnte sich irgendeine GUI Sache auf die Kiste laden die das macht, aber warum es gibt doch pdftk ;-)

Hier kann man pdftk für Windows downloaden , bei Linux ist PDFTk meist über Repository verfügbar.

Debian
apt-get install pdftk

OpenSuse
zypper install pdftk


Beispiele :

Seiten drehen mit pdftk von Seite 1 bis Ende um 90°
pdftk input.pdf cat 1-endwest output out.pdf


Seiten drehen mit pdftk von Seite 1 bis 3 90° drehen den Rest so mit rein
pdftk input.pdf cat 1-3west 3-end output out.pdf


Seiten um 180° drehen
pdftk input.pdf cat 1-endsouth output out.pdf


Wie man Formulare ausfüllt habe ich hier erklärt : PDFtk - PDF Formulare automatisch befüllen

Mehr Informationen zu pdftk : pdftk - cli examples

“Das einzig sichere System müsste ausgeschaltet, in einem versiegelten und von Stahlbeton ummantelten Raum und von bewaffneten Schutztruppen umstellt sein.”
Gene Spafford (Sicherheitsexperte)