#!/bin/sh # Dieses Skript gibt das # Datum aus date |
/bin/sh ./beispielskript.sh |
#!/usr/bin/env python print "foo" |
#!/usr/bin/awk -f BEGIN { print "foo" } |
#!/usr/bin/awk -F: -f { print $1 } |
#!/bin/sh whoami echo "http://freiesmagazin.de" date |
$ chmod +x foo.sh |
$ ./foo.sh |
meillo http://freiesmagazin.de Di 15. Sep 10:49:18 CEST 2009 |
while (( ++i < 5 )) ; do ... done |
#!/bin/sh echo $0 $@ |
#!/bin/echo |
$ cd /tmp $ echo '#!/tmp/b' >a $ echo '#!/tmp/c' >b $ cp printargs c $ chmod +x a b |
#include <stdio.h> int main (int argc, char* argv[]) { int i; for (i = 0; i < argc; i++) { printf(%d: %s\n", i, argv[i]); } return 0; } |
$ gcc -o printargs printargs.gcc |
Autoreninformation |
Markus Schnalke liebt Unix und dessen Skripting-Möglichkeiten. So auch den Shebang-Mechanismus, der die Ausführung von Skripten deutlich erleichtert. |
Autoreninformation |
Mathias Menzer wirft gerne einen Blick auf die Kernel-Entwicklung, um mehr über die Funktion von Linux zu erfahren und seine Mitmenschen mit seltsamen Begriffen und unverständlichen Abkürzungen verwirren zu können. |
LoginGraceTime 600 MaxAuthTries 3 AllowUsers root@*.mydomain user |
$ ssh myserver -p 12345 -l user |
[ssh-iptables] enabled = true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] sendmail-whois[name=SSH, dest=user@myhostname, sender=fail2ban@myhostname] logpath = /var/log/secure maxretry = 3 |
# fail2ban-client status ssh-iptables Status for the jail: ssh-iptables |- filter | |- File list: /var/log/secure | |- Currently failed: 0 | `- Total failed: 74 2 `- action |- Currently banned: 3 | `- IP list: 94.75.x.x 94.75.x.x 217.160.x.x `- Total banned: 95 |
# iptables -L fail2ban-SSH |
[openSSH] sequence = 1234,2345,3456 seq_timeout = 5 command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn [closeSSH] sequence = 1234,2345,3456 seq_timeout = 5 command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j DENY tcpflags = syn |
Autoreninformation |
Mirko Lindner ist seit 1998 aktiv in die Entwicklung des Kernels eingebunden und verantwortlich für diverse Treiber und Subsysteme. Daneben ist er einer der Betreiber von Pro-Linux.de. |
#!/usr/bin/python # -*- coding: utf-8 -*- from os import execvp from sys import argv parameter = argv + ['cat', 'output', 'zusammengefasst.pdf'] execvp('pdftk', parameter) |
#!/usr/bin/python # -*- coding: utf-8 -*- from subprocess import Popen from os import waitpid from sys import argv def gain(format, song): format.append(song) process = Popen(format) finish = waitpid(process.pid, 0) audio_dateien = argv[1:] while len(audio_dateien) != 0: song = audio_dateien.pop() if song[-4:] == '.mp3': format = ['mp3gain', '-r'] gain(format, song) elif song[-4:] == '.ogg': format = ['vorbisgain', '-a'] gain(format, song) Popen(['zenity'] + ['--info'] + ['--text'] + ['Skript abgearbeitet!']) |
Autoreninformation |
Dominik Mäder arbeitet gerne mit freier Software. Skripte und weitere kleine Helferlein machen ihm dabei das Leben einfacher. |
CPAN (Comprehensive Perl Archive Network) [1] ist
eine Paketverwaltung für Perl-Module. Die Suche und Installation von
Modulen kann dabei über ein kleines (englischsprachiges) Shell-Programm
geschehen, welches man über das Kommando cpan aufruft.
|
# cpan cpan[1]> install Paketname::Modulname |
cpan[1]> install Test::More |
#!/usr/bin/perl use strict; use warnings; use Test::More tests => 8; use MathModule; my %testhash = ( # Teste ungueltigen negativen Wert -2 => -1, -1 => -1, # Teste Grenzfall 0 0 => 1, # Teste Grenzfall 1 1 => 1, 2 => 2, 3 => 6, # Teste Grenzfall 16 16 => 20922789888000, # Teste ungueltigen zu grossen Wert 17 => -1 ); foreach(sort keys %testhash){ is(MathModule::faculty($_), $testhash{$_}, "faculty of: ".$_); } |
#!/usr/bin/perl use strict; use warnings; use Test::More tests => 1; use MathModule; sub testFaculty{ my %testhash = ( # Teste ungueltigen negativen Wert -2 => -1, -1 => -1, # Teste Grenzfall 0 0 => 1, # Teste Grenzfall 1 1 => 1, 2 => 2, 3 => 6, # Teste Grenzfall 16 16 => 20922789888000, # Teste ungueltigen zu grossen Wert 17 => -1 ); my $ok = 1; foreach(sort keys %testhash){ $ok = 0 if(MathModule::faculty($_) != $testhash{$_}); } return $ok; } is(testFaculty(),1,"faculty"); |
# File: MathModule.pm # # Stellt mathematische Funktionen zur # Verfuegung use strict; use warnings; package MathModule; use base qw(Exporter); our @EXPORT = qw(faculty); # berechnet die Fakultaet fuer eine # gegebene Zahl zwischen 0 und 16 sub faculty { my $n = shift; return -1 if $n < 0 or $n > 16; return 1 if $n == 0; return $n*faculty($n-1); } |
#!/usr/bin/perl use strict; use warnings; use Test::More tests => 1; use MathModule; sub facultyArray { my $min = shift; my $max = shift; my @results = (); for my $i($min..$max){ # Fuege die berechnete Fakultaet # von $i an die Liste @result an push(@results,MathModule::faculty($i)); } return @results; } my @facultynumbers = (-1,-1,1,1,2,6,24,120,720,5040, 40320,362880,3628800,39916800, 479001600,6227020800,87178291200, 1307674368000,20922789888000,-1); is_deeply([facultyArray(-2,17)],[@facultynumbers],"arraytest"); |
#!/usr/bin/perl use strict; use warnings; use Test::More tests => 1; use MathModule; sub testFaculty{ my %testhash = ( 17 => -1, # Teste Wert > 16 -1 => -1, # Teste Wert < 0 0 => 1, # Teste 0 1 => 1 # Teste != 0 ); my $ok = 1; foreach(sort keys %testhash){ $ok = 0 if(MathModule::faculty($_) != $testhash{$_}); } return $ok; } is(testFaculty(),1,"faculty"); |
Autoreninformation |
Marcel Jakobs programmiert gerne in Perl. Das Testen gehört für ihn bei größeren Programmen dazu. |
+-> HTML +---------+ +--------+ +-----------+ | |Textdatei|->| pandoc | ->|DocBook XML|-+-> RTF |(Markup) | +---+----+ +-----------+ | +---------+ | +-> PDF +->LaTeX -> PDF | +->HTML |
+------------+ +-------+ +--------+ | | | | | | | Textdatei +-->| ditaa |-->| Grafik | | | | | | | +------------+ +-------+ +--------+ |
$ java -jar ditaa.jar ditaa-beispiel-2.txt ditaa-beispiel-2.png |
+------------+ +-------+ +--------+ |cF00 | |cFF0 | |c0F0 | | Textdatei +-->| ditaa |-->| Grafik | | {d}| | {io}| | {d}| +------------+ +-------+ +--------+ |
$ java -jar ditaa.jar ditaa-beispiel-3.txt ditaa-beispiel-3.png |
+------------+ +--------+Kundensystem|<-----+ | +------------+ | | ^ | v | | +-------+ +---+---+ +---+---+ |VDA4905| |VDA4913| |VDA4906| +---+---+ +-------+ +---+---+ | ^ ^ | | | | | +-------+ | | | | +-----+-----+-+ +------->|Dienstleister| +----+--------+ | ^ v | +----+--+ |SAP R/3| |IDOC | +-++--+-+ |^ ^ +---------------+| | | | +------------+ v | | +-----------+ +---+--------+ +---+---+ |Belegart LZ| |Lieferschein| |Faktura| |VDA4905 +->|VDA4913 +->|VDA4906| +-----------+ +------------+ +-------+ |
Autoreninformation |
Volker Duetsch nutzt Linux seit 1994 überwiegend privat. Beim Einsatz von Open-Source-Programmen richtet er seinen Fokus auf Programme, die auf verschiedenen Betriebssystemen verfügbar sind. |
# modinfo sata_via filename: /lib/modules/2.6.26-2-amd64/kernel/drivers/ata/sata_via.ko version: 2.3 license: GPL description: SCSI low-level driver for VIA SATA controllers author: Jeff Garzik srcversion: 4F5E9D4C56ABDD3C940464D alias: pci:v00001106d00007372sv*sd*bc*sc*i* alias: pci:v00001106d00005372sv*sd*bc*sc*i* alias: pci:v00001106d00005287sv*sd*bc*sc*i* alias: pci:v00001106d00003249sv*sd*bc*sc*i* alias: pci:v00001106d00003149sv*sd*bc*sc*i* alias: pci:v00001106d00000591sv*sd*bc*sc*i* alias: pci:v00001106d00005337sv*sd*bc*sc*i* depends: libata vermagic: 2.6.26-2-amd64 SMP mod_unload modversions |
# lspci [...] 00:0d.0 Multimedia controller: Philips Semiconductors SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (rev d1) [...] |
# lspci -s 0:f.0 -n 00:0f.0 0104: 1106:3149 (rev 80) |
# grep 0x00003149 /lib/modules/2.6.26-2-amd64/modules.pcimap | grep 1106 sata_via 0x00001106 0x00003149 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0 |
# lspci -s 0:c.0 00:0c.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10) # lspci -s 0:c.0 -n 00:0c.0 0200: 10ec:8139 (rev 10) # grep 0x00008139 /lib/modules/2.6.26-2-amd64/modules.pcimap | grep 10ec 8139too 0x000010ec 0x00008139 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0 8139too 0xffffffff 0x00008139 0x000010ec 0x00008139 0x00000000 0x00000000 0x0 8139cp 0x000010ec 0x00008139 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0 |
# lsmod | grep 8139 8139cp 23808 0 8139too 28288 0 mii 9856 2 8139cp,8139too |
# lspci -s 0:c.0 -v 00:0c.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10) Subsystem: Realtek Semiconductor Co., Ltd. RT8139 [...] Kernel driver in use: 8139too Kernel modules: 8139cp, 8139too |
# dmesg | grep 8139cp [1.379395] 8139cp: 10/100 PCI Ethernet driver v1.3 (Mar 22, 2004) [1.406707] 8139cp 0000:00:0c.0: This (id 10ec:8139 rev 10) is not an 8139C+ compatible chip [1.406780] 8139cp 0000:00:0c.0: Try the "8139too" driver instead. |
# lsusb -s 5:4 Bus 005 Device 004: ID 046d:09a4 Logitech, Inc. |
# modinfo uvcvideo filename: /lib/modules/2.6.26-2-amd64/kernel/drivers/media/video/uvc/uvcvideo.ko [...] alias: usb:v*p*d*dc*dsc*dp*ic0Eisc01ip00* alias: usb:v5986p0200d*dc*dsc*dp*ic0Eisc01ip00* alias: usb:v5986p0141d*dc*dsc*dp*ic0Eisc01ip00* |
# lsusb -s 5:4 -v [...] bInterfaceClass 14 Video bInterfaceSubClass 1 Video Control bInterfaceProtocol 0 [...] |
Autoreninformation |
Rainer König arbeitet bei einem PC-Hersteller am Thema Linux-Hardware-Kompatibilität für PCs. |
Autoreninformation |
Dominik Wagenführ ist ehemaliges Teammitglied von ubuntuusers.de und daher sehr mit der Community verbunden. Durch den Einsatz von LaTeX bei freiesMagazin waren seine Vorträge zu dem Thema auf der Ubucon eine Selbstverständlichkeit. |
|
Beispielrechnung | ||||
Spielbrett | Gewonnenene Spiele S (von max. 100) | eigene Züge Z | fremde Züge Y | gespielte Karten K |
brett1.dat | 98 | 2465 | 1496 | 1953 |
brett2.dat | 99 | 2782 | 1131 | 2162 |
brett3.dat | 84 | 4455 | 1496 | 3724 |
gesamt | 281 | 9702 | 4123 | 7839 |
|
#!/bin/bash echo "Datei | Runden | Karten | eig. Zuege | fremde Zuege | Gesamtzuege | Zeit (fuer alle Spiele)" for FILE in "$1" ; do echo $FILE "|" \ `egrep "reached" $FILE | wc -l` "|" \ `egrep "reached" $FILE | nawk '{ sum += $(NF-10) } END{ print sum }'` "|" \ `egrep "reached" $FILE | nawk '{ sum += $(NF-8) } END{ print sum }'` "|" \ `egrep "reached" $FILE | nawk '{ sum += $(NF-5) } END{ print sum }'` "|" \ `egrep "reached" $FILE | nawk '{ sum += $(NF-3) } END{ print sum }'` "|" \ `egrep "reached" $FILE | nawk '{ sum += $(NF-1) } END{ print sum }'` "|" \ `egrep "real" $FILE | nawk -Fm '{ print $2 }' | nawk -Fs '{ sum += $1 } END{ print sum }' | sed 's/\./,/1'` done exit 0 |
$ ps ax | grep firefox 13368 ? Ssl 18:29 /usr/lib/firefox-3.0.14/firefox -P default 19958 pts/3 R+ 0:00 grep firefox |
$ ps -C firefox PID TTY TIME CMD 13368 ? 00:18:46 firefox |
$ egrep "^\(EE|WW|NI|\?\?\)" /var/log/Xorg.0.log |
$ pkill gnome |
$ type psgrep psgrep ist eine Funktion. psgrep () { ps aux | grep --color=always "$1" | grep -v "grep" } |
Messen | ||||
Veranstaltung | Ort | Datum | Eintritt | Link |
World Usability Day | Weltweit | 05.11.2009 | - | http://www.worldusabilityday.de |
OpenRheinRuhr | Bottrop | 07.11.-08.11.09 | 3 EUR | http://openrheinruhr.de |
Open Source Expo | Karlsruhe | 15.11.-16.11.09 | 10 EUR | http://openexpo.de |
Brandenburger Linux-Infotag | Potsdam | 21.11.2009 | frei | http://www.blit.org |
KNF-Kongress | Nürnberg | 22.11.2009 | - | http://www.franken.de/veranstaltungen/knfkongress |
LinuxDay | Dornbirn | 28.11.2009 | frei | http://ld.lugv.eu |
$: | Shell-Prompt |
#: | Prompt einer Root-Shell - Ubuntu-Nutzer können hier auch einfach in einer normalen Shell ein sudo vor die Befehle setzen. |
~: | Abkürzung für das eigene Benutzerverzeichnis /home/BENUTZERNAME |
Impressum ISSN 1867-7991 | ||
freiesMagazin erscheint als PDF und HTML einmal monatlich. | ||
Redaktionsschluss für die Dezember-Ausgabe: 22. November 2009 | ||
Kontakt | ||
Postanschrift | freiesMagazin | |
c/o Dominik Wagenführ | ||
Beethovenstr. 9/1 | ||
71277 Rutesheim | ||
Webpräsenz | http://www.freiesmagazin.de | |
Autoren dieser Ausgabe | ||
Volker Duetsch | ASCII-Art mal anders mit ditaa | |
Marcel Jakobs | Testen mit Perl | |
Rainer König | Hardwarekompatibilität unter Linux | |
Mirko Lindner | SSH-Port absichern | |
Dominik Mäder | Nautilus-Scripts | |
Mathias Menzer | Der Oktober im Kernelrückblick | |
Markus Schnalke | Shebang - All der Kram | |
Dominik Wagenführ | Rückblick: Ubuntu-Treffen auf der Ubucon 2009 |
Erscheinungsdatum: 1. November 2009 | ||
Erstelldatum: 4. November 2009 | ||
Redaktion | ||
Dominik Honnef | Thorsten Schmidt | |
Dominik Wagenführ (Verantwortlicher Redakteur) | ||
Satz und Layout | ||
Ralf Damaschke | Yannic Haupenthal | |
Marcus Nelle | Markus Schaub | |
Sebastian Schlatow | ||
Korrektur | ||
Daniel Braun | Raoul Falk | |
Stefan Fangmeier | Johannes Mitlmeier | |
Karsten Schuldt | ||
Veranstaltungen | ||
Ronny Fischer | ||
Logo-Design | ||
Arne Weinberg (GNU FDL) | ||