Latest change: Mi Mai 28 13:23:42 CEST 2014 = Page = diese seite: http://www.guckes.net/eisenstadt2014/vortrag.txt http://www.guckes.net/eisenstadt2014/vortrag.html (in bunt) TODO = Feedback = hallo! lesen Sie diesen text schon *vor* dem vortrag? dann wuerde ich mich ueber feedback freuen: mailto:eisenstadt2014@guckes.net (gpg keys 57F77F09 0185391B) vielen dank! :) = Event = 2014-05-23/24 Fri+Sat Eisenstadt 12:30-18h @FH_Burgenland Linuxwochen Eisenstadt http://eisenstadt.linuxwochen.at/ . eisenstadt@linuxwochen.at = Vortrag = Vortrag: Tools Tools Tools! Untertitel: Nuetzliche Werkzeuge ProgrammURL: http://linuxwochen.at/index.php?option=com_content&view=article&id=391&Itemid=81 Raum: *der* Raum :-) Datum: 2014-05-24 Samstag Zeit: 17:15-18:00 zielpublikum: alle menschen, die auf einem computer mal ein terminal aufmachen, "um mal was darin zu tun". = Start = _____ _ _ |_ _|___ ___ | | ___ | | | | / _ \ / _ \ | |/ __|| | | || (_) || (_) || |\__ \|_| |_| \___/ \___/ |_||___/(_) http://www.guckes.net/e/ http://www.guckes.net/eisenstadt/ http://www.guckes.net/eisenstadt/programm.kurz.txt http://www.guckes.net/eisenstadt/programm.lang.txt http://events.titanpad.com/17 pad! "Tools, Tools, Tools" bei den Grazer LinuxTagen (GLT): https://www.youtube.com/watch?v=mhAWgQ0dX3E [2014-04-05] Hinweis: 25. Mai -> Towel Day Dougles N. Adams (1952-2001) THHGTTG: The Hitch Hiker's Guide to the Galaxy http://de.wikipedia.org/wiki/Douglas_Adams = screen = CTRL-A S :split CTRL-A TAB :focus CTRL-A c :screen ("create") -> shell! = shell = was man generell ueber Shells wissen sollte: bash+zsh: $ alias c=clear fuer die eingabe dieses kommandos muss man eine leere inputzeile haben. eventuell muss man die inputzeile loeschen. das sind immer noch *zwei* tastendruecke. zuviel! bildschirm loeschen, aber inputzeile beibehalten: CTRL-L ("na, das war ja einfach!") text loeschen - und dabei in den kill ring stecken: CTRL-K delete to EOL of input line CTRL-U delete the complete input line CTRL-W delete unto previos BOW CTRL-Y insert latest copy from kill ring ESC CTRL-Y insert previous entry within kill ring see also: man bash -> kill ring version der laufenden shell anzeigen: CTRL-X CTRL-V CTRL-A Anfang CTRL-E Ende CTRL-B ein zeichen backwards/zurueck CTRL-F ein zeichen forward/vorwaerts see also: man bash -> /^SHELL BUILTIN COMMANDS http://www.guckes.net/Setup/bashrc Funktion help_me -> viel text (wer moechte, dass ich das endlich mal fertigstelle? bitte mail schicken! :-) = cd = ohne parameter geht's immer nach hause: $ cd -> $HOME mal woandershin wechseln: $ cd /usr/local/bin im OLDPWD steht das letzte verzeichnis. also kann man so zurueckwechseln: $ cd $OLDPWD aber es geht auch schneller: $ cd - und wozu noch "cd" tippen? aliase sind unsere freunde! $ alias -='cd -' $ alias ..='cd ..' achja.. aliase! = shell aliases = steht das kommando nicht im "pfad" ($PATH)? dem kommando ein verzeichnis hinzufuegen: $ alias arp=/usr/sbin/arp kommandos immer mit denselben parametern aufrufen: $ alias bz='bzip2 -v9' wie lange dauert das eigentlich? interne funktion "time" verwenden: $ alias bz='time bzip2 -v9' gpg - einen schluessel mit "ascii armor" exportieren: $ alias asc='gpg --export -a' zB: $ asc 0185391B (ja, der 0185391B ist mein neuester schluessel. das ist ein "8000R". key signing, anyone?) identifikation bei einer webseite mit "user=bitte pass=danke" :-) $ cget='wget -Y off --http-user=bitte --http-password=danke' eine schoene idee, das world wide web etwas freundlicher zu machen :) auf besuch in einer firma mit sicherheit? du darfst nur mit deiner kiste hinein? dann solltest du deine MAC wissen! $ mac='/sbin/ifconfig eth0 | grep -o '\''\([0-9a-f][0-9a-f]:\)\{5\}[0-9a-f][0-9a-f]'\' see also: http://de.wikipedia.org/wiki/MAC-Adresse http://de.wikipedia.org/wiki/Media_Access_Control man grep: -o, --only-matching Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line. initialer start mit parametern: alias WORK='screen -m -c ~/.screenrc.work' bemerkung: die namen von aliasen duerfen auch doppelpunkte enthalten. darum fuer benutzer des editors "vi": $ alias :q=exit = ls = $ ls -l # langes listing es gibt noch viele weitere optionen: $ ls -d # qb abg yvfg qverpgbevrf $ ls -g # qb abg yvfg bjare $ ls -G # qb abg yvfg tebhc $ ls -i # fubj vabqrf $ ls -F # pynffvsl jvgu vaqvpngbe $ ls -r # yvfg erirefr $ ls -S # yvfg ol fvmr $ ls -t # yvfg ol gvzr $ ls -X # fbeg ol rkg $ ls -rtl # ab gi! und nun.. FARBE! $ ls --color ("bunt ist meine lieblingsfarbe!" :) kombinationen sind in umgebungsvariable gespeichert: $ echo $LS_COLORS es gibt ein setup tool fuer diese farben: $ dircolors welche dateiendungen kennt jenes tool? (print database) $ dircolors -p see also: http://ubuntuforums.org/showthread.php?t=1297960 https://github.com/trapd00r/LS_COLORS $ FILE=~/.dircolors; dircolors -p > $FILE; vim $FILE Q: kennt jemand ein schoeneres tool mit dem man diese farben einstellen koennte? also interaktiv, zum ausprobieren? = zsh = zeige die der zsh bekannten optionen fuer ls: (wie viele moegen das wohl sein? mal raten!) $ ls -[TAB] $ ls --color=[TAB] was passiert, wenn die shell ausdruecke verwendet? will man das einfach so abschicken? "DANGER, WILL ROBINSON!" inline tab expansion - mal die shell die ausdruecke expandieren lassen: $ echo {23..42}[TAB] echo 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 mal die zahlen faktorieren lassen: $ for n in {23..42}; do factor $n; done die gerade zahlen sind eh keine primzahlen. also nur jede zweite zahl nehmen: $ for n in {23..42..2}; do factor $n; done manchmal braucht man die fuehrenden nullen dazu: $ echo {-10..10..01} -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 00 01 02 03 04 05 06 07 08 09 10 see also: BRACE EXPANSION (for echo {n1..n2..n3}) benutzung von "kill".. den richtigen prozess erwischen: $ sleep 23 & $ kill {select sleep prozess} [1] + terminated sleep 23 man kann auch nach dem praefix des prozessnamens expandieren: $ sleep 42 & $ kill sl nuetzliche auftrennung der werte in der PATH variablen: $ echo $PATH $ echo $path (manche leute entfernen die doppelpunkte mit awk, sed, perl.. mit kanonen auf spatzen schiessen!) alle verzeichnisse im pfad ($PATH) auflisten: $ for dir in $path; do ls -ld $dir; done wie kommt man schneller in eines dieser laaaaangen unterzeichnisse? TAB expansion.. eh kloar! how to "cd" to /usr/lib/python2.6/dist-packages/IPython/frontend/terminal/console ? $ cd /u/l/p/d/I/f/t/c [fpuaryyrf jrpufrya va rva iremrvpuavf hrore qvr "vavgvnyvra" frvare iremrvpuavffr:] hinweis: $ changing directories with "cd" (popdir, pushdir) see AUTO_PUSHD, PUSHD_IGNORE_DUPS, PUSHD_SILENT = gpg = [Key Signing, anyone?] eine datei mit geheimen daten fuellen.. $ echo my latest password is... > secret .. und dann verschluesseln: $ gpg -e secret # erzeugt secret.gpg $ gpg -a -e secret # erzeugt secret.asc ACHTUNG: die datei "secret" wird *nicht* entfernt! eventuell moechte man diese daten nach dem verschluesseln loeschen. und so ENTschluesselt man diese daten: $ gpg secret.asc You need a passphrase to unlock the secret key for user: "Sven Guckes " 1024-bit RSA key, ID 57F77F09, created 1995-01-30 Enter passphrase: _ gpg: encrypted with 1024-bit RSA key, ID 57F77F09, created 1995-01-30 "Sven Guckes " falls die datei "secret" noch existiert bekommt man natuerlich eine warnung: File `secret' exists. Overwrite? (y/N) Enter new filename: secret.neu vergleichen der alten mit der neuen datei: $ diff secret secret.neu keine ausgabe?! alles gut! :-) = htop = "htop is 'top' on steroids" prozessliste mit vielen farben. (remember: bunt ist meine lieblingsfarbe!) F5: tree view F4: filter - zB mosh ssh screen tmux zsh F6: sort by "User" (name) or by "CPU" (time) killing it softly... $ sleep 42 htop: F4 sleep k 9 ENTER (kein wunder, dass nerds kaum schlaf bekommen..) = pv = pipe viewer einfach mal viel output erzeugen und gleich in den "bit bucket" werfen. $ yes > /dev/null aber wie viele daten werden dabei eigentlich erzeugt bzw versenkt? "pv" sagt es euch! einfach dazwischenschalten: $ yes | pv > /dev/null guckes@kudu:~> yes | pv > /dev/null 1.23GB 0:00:23 [55.9MB/s] [ <=> ] generell kann man "pv" wie "cat" verwenden. $ pv source > destination achtung: man sollte die umlenkung in zieldatei nicht vergessen, sonst landet es auf dem terminal. ;-) einfaches kopieren: guckes@kudu:~> pv Mail.IN/VIM > /tmp/VIM 358MB 0:00:06 [52.7MB/s] [========================================>] 100% kopieren und komprimieren: guckes@kudu:~> time pv Mail.IN/VIM | bzip2 -9 > /tmp/TMP2.bz2 358MB 0:01:47 [3.34MB/s] [==============================>] 100% pv Mail.IN/VIM 0,04s user 0,65s system 0% cpu 1:47,19 total bzip2 -9 > /tmp/TMP2.bz2 96,18s user 0,85s system 90% cpu 1:47,31 total immerhin - 3.33MB/s, dh 10MB in drei sekunden mit haertester komprimierung. [TODO: weitere beispiele] = Moo! = spass mit apt-get, figlet, toilet, sl, und cowsay: $ apt-get moo $ aptitude -v{vvvvv} moo # homework! :) $ figlet hallo graz CTRL-D $ figlet -m0 serwas graz $ FIGLET GRAZ L $ toilet -w $COLUMNS --gay Graz is cool (nicht installiert am server.. tja..) $ sl -l # "yvggyr" genva $ sl -F # "sylvat" genva $ cowsay that is all folks ----------------------------------------------------------- ----------------------------------------------------------- ----------------------------------------------------------- = Kuer = (wieder zuviel. das wird vielleicht ein eigener vortrag ;-) (vielleicht bei einem show+tell zeigen) == apt == apt? apt-get, apt-cache, apt-key, apt-mark apt-show-versions alias aptse='apt-cache search' alias aptsh='apt-cache show' alias aptgi='apt-get install' -rwxr-xr-x 1 root root 204800 Nov 16 13:43 /usr/bin/apt-get -rwxr-xr-x 1 root root 122080 Nov 16 13:43 /usr/bin/apt-cache $ aptse vim --> 75 hits Verwendung von "less" mit Suche nach dem Suchwort (Parameter $1): function acse { apt-cache search $1 | sort | less -S +/$1 } function acsh { apt-cache show $1 | less -S +/$1 } $ acse cowsay $ acsh mutt $ apt-show-versions gnupg mutt slrn vim zsh gnupg/wheezy uptodate 1.4.12-7+deb7u3 mutt/wheezy uptodate 1.5.21-6.2+deb7u2 slrn/wheezy uptodate 1.0.0~pre18-1.3 vim/wheezy uptodate 2:7.3.547-7 zsh/wheezy uptodate 4.3.17-1 nimm die liste der programmnamen aus einer datei: $ apt-show-versions $(cat mylist.txt) hint: apt-file (trapicki) == mutt == rendering attachments (DOC,HTML,PDF,RTF,TNEF) as text - using antiword, elinks, pdftotext, unrtf, and tnef, respectively (TODO) == telnet == (zu viel. eigener vortrag?!) mit telnet kann man sich direkt auf einen port verbinden und "nach protokoll sprechen", so zB "email" (SMTP,port 25), . "web" (HTTP,port 80), .oder "news" (NNTP,port 119). $ telnet localhost 25 helo $domain quit see also: http://de.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol html! $ telnet www.guckes.net 80 ... nntp! $ telnet www.in-berlin.de 119 [TODO!] date list motd xuid xver quit see also: http://www.dmoz.org/World/Deutsch/Computer/Usenet/%C3%96ffentliche_Newsserver/ STAR WARS! $ telnet towel.blinkenlights.nl Nyan Cat in colour: $ telnet nyancat.dakko.us useful tools: $ telnet telehack.com MUDs! Regentag? Hausaufgabe! see also: http://de.wikipedia.org/wiki/Multi_User_Dungeon http://www.lysator.liu.se/mud/faq/faq2.html http://en.wikipedia.org/wiki/LPMud http://wayback.archive.org/web/20140105084659/http://nordmud.de/dml/ tipp von equinox0815: socat (SOcket CAT) http://www.dest-unreach.org/socat/ == vim == showing textwidth: :set colorcolum map ,cc :let &colorcolumn=join(range(81, 255), ',') viewing data: zz : reposition current line in middle line zt : reposition current line at top line zb : reposition current line at bottom line viewing characters: ga : show ascii of current character g8 : show utf-8 of current character text manipulation (internal): g? : rot13 gU : uppercasing gu : lowercasing gq : formatting text manipulation (external, ie using tools as filters): rev : reversing text - within lines tac : reversing text - block of lines tr : translations within alphabets tr [a-z] zyxwvutsrqponmlkjihgfedcba uggc://qr.jvxvcrqvn.bet/jvxv/Ngonfpu boxes : draws boxes (comments) around text tal : text aligner boxes+tal: http://thomasjensen.com/software.shtml visual mode: selecting rectangles inserting/deleting comments extracting URLs and showing with urlview: :w !urlview $ grep -o 'http:[^ ]*' $file | urlview reformatting paragraphs: vip!par ... automagically editing PDFs with pdftotext: $ vim foo.pdf und das bringt uns zu der automatischen extraktion von text n "verpackten formaten" in emails: = Ausblick = weitere vortraege von neulich bei den Grazer Linuxtagen am 5. April 2014: Freitag 2014-04-04 14:00-16:00 [HS04] Kevin Krammer: "Versionskontrolle mit Git" http://glt14-programm.linuxtage.at/track/Entwickler/307.de.html tools: git (was sonst? ;) Samstag 2014-04-05 13:00-13:40 [Seminarraum 2] Kurt Pfeifle: PDF-KungFoo mit Ghostscript & Co. http://glt14-programm.linuxtage.at/track/Entwickler/320.de.html tools: pdfinfo, pdffonts, pdfimages; gs (Ghostscript) + mutool; pdftk, Poppler-Tools, pdfresurrect, pdf-parser.py, pdfid.py, qpdf Samstag 2014-04-05 14:00-14:40 [HS01] Martin Leyrer "Teste Deine sichere Kommunikationsinfrastruktur" http://glt14-programm.linuxtage.at/events/338.de.html tools: telnet! Samstag 2014-04-05 17:00-17:40 [HS01] Axel Beckert: "aptitude" http://glt14-programm.linuxtage.at/events/333.de.html http://noone.org/talks/aptitude/ http://noone.org/talks/aptitude/aptitude-linuxday.txt tools: aptitude = apt-get + apt-cache + apt-mark + ncurses + more Samstag 2014-04-05 18:00-18:20 [HS01] Darshaka Pathirana: "How to Encrypt your (headless) Root-Server" http://glt14-programm.linuxtage.at/events/344.de.html tools: cryptsetup, grml-debootstrap, grub2, cryptLuks, dropbear Samstag 2014-04-05 18:30 Key Signing Party Sonntag 2014-04-06 16-20h "Show+Tell" im realraum: Brockmanngasse 15, 8010 Graz http://osm.org/go/0Iz~oIhDI?way=85446625 https://realraum.at/wiki/doku.php?id=show_tell2014 https://plus.google.com/events/c2ufgal0mec6t5djf8ljkqat0fg http://grical.realraum.at/e/show/439/ Dienstag 2014-04-15 17:42-23:42h im metalab in wien "show+tell" https://metalab.at/wiki/2014-04-15_Show_and_Tell http://guckes.titanpad.com/15 = Feedback = freue mich ueber feedback zum vortrag: mailto:eisenstadt2014@guckes.net (gpg keys 1024R/57F77F09 8000R/0185391B) = TODO = weitere tools. die man sich auch mal ansehen sollte, weil sie einfach super hilfreich und cool sind: ftp: lftp http://lftp.yar.ru/ ncftp http://www.ncftp.com/ http: curl http://curl.haxx.se/ wget http://www.gnu.org/directory/wget.html http://www.wget.org/ for sale! o_O search/suchen: ack http://beyondgrep.com/ (aka ack-grep) network: nmap http://nmap.org/ openssl http://www.openssl.org/ TUIs: elinks http://elinks.cz Web browser irssi http://irssi.org IRC chat client mutt http://mutt.org Mail User Agent newsbeuter http://newsbeuter.org RSS Feed Readers slrn http://slrn.sourceforge.net vim http://vim.org Text Editor zsh http://zsh.org *Zee* Shell https://github.com/robbyrussell/oh-my-zsh processes: dtrx http://brettcsmith.org/2007/dtrx/ dstat http://dag.wieers.com/home-made/dstat/ htop TODO iotop TODO mtr http://www.bitwizard.nl/mtr/ multitail http://www.vanheusden.com/multitail/ lsof TODO pkill TODO (package procps) pv http://www.ivarch.com/programs/pv.shtml music: mplayer TODO backup/synchronization: rsync TODO interactive login: autossh TODO mosh TODO ssh TODO window managers: screen TODO tmux http://tmux.sourceforge.net/ calendar: ccal TODO apt-key https://github.com/xtaran/curses-apt-key sourceforge projects: ditaa http://ditaa.sourceforge.net/ netcat http://netcat.sourceforge.net/ ngrep http://ngrep.sourceforge.net/ slrn http://slrn.sourceforge.net tmux http://tmux.sourceforge.net/ window manager mii-tool view, manipulate media-independent interface status oneko - katze, die der maus hinterherrennt pv - pipe viewer lolcaT - text mit einem regenbogen ueberziehen https://github.com/busyloop/lolcat atool . (acat, adiff, als, aunpack, etc.) di / dfc / discus / pydf (df auf Drogen, tlw. farbig) hardlink / fdupes / duff / rdfind (Doppelte Dateien finden und ggf. verlinken) since (stateful tail) swaks (Swiss Army-Knife for SMTP) paket unp : ind unp und ucat (Pack einfach aus, egal, welches Format :-) paket zutils: zcat/zgrep/zless auf Drogen: gzip/bzip2/lzma/xz/etc.) strigi-utils: deepfind / deepgrep glances An eye on your system http://nicolargo.github.io/glances/ inxi - Command line system information script for console and IRC A newer, better system information script for irc, administration, and system troubleshooters. example usage on IRC with irssi: /exec -out inxi -bx -> http://packages.qa.debian.org/$PAKETNAME zB http://packages.qa.debian.org/g/glances.html = Links = das offizielle HomePage des Event: http://eisenstadt.linuxwochen.at/ das offizielle Programm: http://linuxwochen.at/index.php?option=com_content&view=article&id=391&Itemid=81 das inoffizielle Programm - kurz und lang: http://www.guckes.net/eisenstadt2014/programm.kurz.txt http://www.guckes.net/eisenstadt2014/programm.lang.txt = References = http://ss64.com/bash/ http://www.cyberciti.biz/faq/howto-use-grep-command-in-linux-unix/ http://www.cyberciti.biz/open-source/best-terminal-applications-for-linux-unix-macosx/ http://www.cyberciti.biz/open-source/30-cool-best-open-source-softwares-of-2013/ http://www.cyberciti.biz/open-source/command-line-hacks/pv-command-examples/ http://www.cyberciti.biz/tips/multitail-view-multiple-files-like-tail-command.html http://www.cyberciti.biz/networking/nmap-command-examples-tutorials/ = Bemerkungen = CLT := Command Line Interface TUI := Text User Interface was ist der unterschied zwischen CLI und TUI? CLI findet auch verwendung in skripten (ohne interaktion mit dem benutzer) - [beispiele: agrep, date, wget.] TUI laeuft dagegen mit darstellung im terminal und wird von benutzer eine ganze weile interaktiv benutzt. [beispiele: irssi, mutt, screen, vim.] = HELP! = kennt jemand ein tool fuer die folgenden probleme bzw situationen? Q1: [colouring] einstellung von farben fuer "ls" (dircolors)? Q2: [colouring] einfaerben von speziellen texten, zB gpg/pgp schluessel fingerprints? Q3: [monitoring] ueber welchen port gehen/gingen wie viele daten? EOF