You are here: Foswiki>Main Web>WebHome (08 Nov 2016, KlausSchuetz)EditAttach

Willkommen bei Filuna

Howto - mein persönlicher Notizzettel zu allerlei Problemen

Debian

Die wichtigsten Befehle zur Paketverwaltung unter Debian

Befehl Wirkung
aptitude Paketverwaltung
synaptic grafische Paketverwaltung
apt-get install mozilla installiert ein oder mehrere Pakete
aptitude install mozilla installiert ein oder mehrere Pakete, setzt aber bei automatisch aufgelößten Abhängigkeiten das A-zeichen von aptitude
apt-get update aktualisiert Paketuebersicht (verfuegbare Pakete)
apt-get upgrade aktualisiert alle installierte Pakete (nach update ausfuehren)
apt-get check prueft Paketdatenbank
apt-get clean löscht den temporär gespeicherten Paketcache, der sonst immer größer wird
apt-get autoclean clears the local repository of retrieved package files of programs that are no longer installed.
apt-get -f install nach fehlern aufgerufen, wiederholt fehlgeschlagene Installationen
apt-cdrom add fügt eine Debian-CD zur Datenbank hinzu
apt-setup fügt eine Paketquelle zur Datenbank hinzu
apt-cache search paket sucht nach allen Paketen die "paket" enthalten, auch nicht installierte
apt-cache show paket weitere Informationen zum Paket
apt-cache showpkg [packagename] weitere Informationen zum Paket
apt-cache unmet Paket mit nicht erfüllten Abhängigkeiten anzeigen
apt-cache policy [packagename] welche Paketversionen isnd verfügbar, welche ist installiert und von welchem Repository?
dpkg -l mozilla* listet tatsaechliche Paketnamen des Programms auf (benötigt z.B. für reconfigure)
dpkg-query -l oder dpkg -l listet alle installierten Pakete auf
dpkg -L apache listet alle Dateien eines Paketes auf
dpkg -S mozilla.conf ermittelt Paket zu Datei
dpkg-reconfigure paketname Paket erneut konfigurieren
dpkg-repack Paketname .deb-Datei aus einem installierten Paket erstellen
apt-get -b source foo installiert die Sourcen für ein bestimmtes Paket
dpkg-source -x foo.dsc baut ein Source-Paket
dpkg-buildpackage -rfakeroot Source kompilieren
dpkg -P --force-depends Paketname Paket trotz Abhängigkeiten entfernen
Ausführliche Anleitung hier: http://debiananwenderhandbuch.de/

apt-get upgrade --print-uris -y | awk '{ print $3" "$1" "$2 }' | grep \'.*\' | sort -n \| tail -10
zeigt die größten Pakete an, die upgedatet werden sollen |

dpkg-query -W --showformat='${Installed-Size} ${Package}\n' | sort -nr | less
zeigt alle installierten Pakete nach verbrauchtem Plattenplatz geordnet

dpkg-scanpackages ./ /dev/null | gzip > Packages.gz
apt-ftparchive ./ | gzip > Packages.gz
Packages.gz bauen

Kernel bauan unter Debian:
make-kpkg kernel_image --revision=Configname.Version

kernel-header passend zum Kernel installieren

apt-get install linux-headers-$(uname -r)

init.d, Standard-Links hinzufügen
update-rc.d foobar defaults
nur bei bestimmt5en Runleveln starten
update-rc.d foobar start 20 2 3 4 5 . stop 20 0 1 6 .
alle Links entfernen
update-rc.d foobar remove

Paket trotz Abhängigkeiten entfernen:
dpkg -r --force-depends NAME

Pakete unter Debian neu konfigurieren:
dpkg-reconfigure fetchmail-common
der genaue Paketname muß bekannt sein, z.B. heißt das Paket für X11 xserver-xfree86

Debian Basic-Setup
grundlegende Einstellungen wie Time-Zone und root-Passwort
/usr/sbin/base-config

debian, rudimentäre software zum Grundsystem hinzufügen und konfigurieren
tasksel

Debian, einstellungen des setups wiederholen
/usr/sbin/base-config

Irttuemliche Auswahl rueckgaengig machen Unter aptitude mit g auf Pakete, die installiert oder entfern werden sollen, dann mit : markieren


./configure make make install, Debian-Paket bauen zur Installation aus fremder Quelle, hier als Beispiel mtpfs:

tar zxf mtpfs-1.1.tar.gz

cd mtpfs-1.1

dh_make -f ../mtpfs-1.1.tar.gz

   Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch?

 [s/i/m/l/k/n] s

fakeroot debian/rules binary

cd ..

sudo dpkg -i mtpfs_1.1-1_amd64.deb

sources.list generieren lassen

http://debgen.simplylinux.ch/


Unofficial Repositories

https://wiki.debian.org/UnofficialRepositories


Flashplayer auf Debian installieren

https://wiki.debian.org/FlashPlayer


aktueller Iceweasel auf Debian

http://mozilla.debian.net/


Wifi / WLAN unter Debian

https://wiki.debian.org/iwlwifi

Link auf deutsches Keyboard-Layout setzen (Debian):
ln -s /usr/share/keymaps/i386/qwertz/de-latin1.kmap.gz /etc/console/boottime.kmap.gz
/etc/init.d/keymap.sh start
Paket console-tools muß installiert sein


# iso-image auf cd brennen
debian-server:~# nice --18 cdrecord -eject -v speed=4 dev=0,4,0 -data -pad KNOPPIX_V3.1-2003-01-01-DE.iso

nis: nach erstellen eines neuen accounts wird dieser nicht exportiert
im verzeichnis /var/yp/ make ausfuehren, tabelle wird neu erstellt

Kommando als anderer User aufrufen
su -c Kommando

Umgebung des anderen Benutzers mitladen
su -c Kommando -

Log-Ausgaben auf der Konsole verhindern
dmesg -l 1

eigenen X-Server starten
startx fvwm2 -- :2 -depth 16

Dateien sortiert nach Größe ausgeben
ls -lS

Zahlenreihe erstellen
seq 10 20

die Syslog von heute ausgeben

cat /var/log/syslog | grep ^"`date +%b\ %d`"

Leerzeilen und Kommentare weglassen

grep -ve ^\ *\#'\|'^$ /etc/*.conf

unterschiede in zwei Dateien anzeigen, Leerzeilen und Leerzeichen ignorieren
diff -ubB FOO BAR

Dateien umbenennen, Benenne a nach b um
mmv "*a*" "#1b#2"

Textdatei in Postscript umwandeln
a2ps --medium A4dj -E -o /tmp/pretty.ps A B C D ...

Unix-Text zu Dos-Text umwandeln u.u.
alias unix2dos='recode lat1..ibmpc'
alias dos2unix='recode ibmpc..lat1'
Zeilenende von Linux nach Dos
sed "s/$/\r/" unixdatei > dosdatei
Zeilenende von Dos nach Linux
tr -d '\r' < dosdatei > unixdatei

alle nicht druckbaren Zeichen ausfiltern

tr -cd '[:print:]'


ACL, wichtige Befehle um ACLs zu setzen und anzuzeigen
setfacl -m g:cdusers:r-x /cdrom setzt das Leserecht für die Gruppe cdusers auf /cdrom
setfacl -x u:schuetz /cdrom entfernt die ACL für den User schuetz
setfacl -Rbk VERZ entfernt all ACLs und Default-ACLs rekursiv absteigend
getfacl -R VERZ > backup.txt sichert alle ACLs in die Datei backup.txt
setfacl --restore=backup.txt stellt alle zuvor gesicherten ACLs wieder her
getfacl FILE1 | setfacl --set-file=- FILE2 ACLs von FILE1 auf FILE2 übertragen
getfacl --access DIR | setfacl -d -M- DIR bei Verzeichnis DIR die Access-ACL in die Default-ACL übertragen
setfacl -m u:user1:r--,g:group3:r-x mehrere Rechte mit einem Kommando ändern, mit Komma getrennt
setfacl -m mask::r-- DATEI setzt die "mask" auf read. Der "mask"-Eintrag schränkt die Rechte aller ACLs ein. Wenn die "mask" einschränkender ist, als die ACL, dann hat die "mask" priorität. Die traditionellen Einträge von User, Group und Other sind davon nicht betroffen. Diese eingeschränkten Rechte werden dann als "effective" angezeigt.
setfacl -m u::rwx,g::rwx,o:rwx Datei die normalen Dateirechte mit setfacl setzen anstatt mit chmod
setfacl --set u::rw,g::rw,o::-,u:user4:r,g:group5:r-x DATEI setzt alle Rechte explizit. Alle vorigen Rechte gehen verloren.
setfacl -d --set u::rwx,u:user7:rwx,u:user4:rx,g::rx,g:group2:rx,o::- VERZ3 legt die default-ACL fest. Nur Verzeichnisse können eine default-ACL haben. Alle neu erstellten Dateien bekommen diese default-ACL als access-ACL. Erstellte Verzeichnisse erben diese default-ACL sowohl als access-ACL als auch als default-ACL. Wenn eine default-ACL existiert, hat die umask des Users keine Auswirkung.
setfacl -m d:u:user6:rwx,d:g:group5:rwx DATEI anderer Syntax für die default-ACL

  • der Befehl mv beachtet immer die ACLs, der Befehl cp nur mit der Option -a oder -p. tar kennt keine ACLs, stettdessen muss star benutz werden
  • Beim Mounten von XFS-Dateisystemen ist der Zusatz acl nicht notwendig, dies ist bei XFS Standard.
Da ACLs eine reine Erweiterung des Unix-Rechtemodells sind, gibt es weiterhin einen Dateibesitzer und eine besitzende Gruppe für jede Datei. Eine Access Control List kennt eine Anzahl unterschiedlicher Einträge:
ACL_USER_OBJ: Dies ist die Rechtemaske für den Dateibesitzer. Sie entspricht der ersten Rechtemaske für den User im klassischen Rechtemodell.
ACL_GROUP_OBJ: Dies ist die Entsprechung der Group-Rechtemaske im klassischen Modell.
ACL_OTHER: Die Rechtemaske für den Rest der Welt unter Unix. Von diesen ersten drei Einträgen gibt es jeweils genau einen in jeder ACL.
ACL_USER: Ein Eintrag für einen benannten Benutzer. Von diesem Eintrag kann es mehrere geben, mit denen für unterschiedliche Benutzer unterschiedliche Rechte vergeben werden. Gibt es einen Benutzereintrag ohne jegliche Rechte, kann dieser auf die Datei nicht zugreifen.
ACL_GROUP: Eintrag für eine Gruppe. Auch von diesem Eintrag kann es mehrere geben.
ACL_MASK: Die Maske für die effektiven Rechte. Sobald für eine Datei ACLs verwendet werden, wird ls -l diese Rechtemaske als Gruppenrecht anzeigen. Sobald mit chmod die Rechte für die besitzende Gruppe verändert werden (etwa per chmod g-rx), wird die ACL_MASK verändert.


Mozilla mehrmals starten
alias my_mozilla='mozilla -remote "ping()" && mozilla -remote "openURL (,new-window)" || mozilla -splash'

grub neu installieren (unter SuSE):
grub --batch --device-map=/boot/grub/device.map </etc/grub.conf

nfs-common, tcp-wrapper, konfiguration mit /etc/hosts.allow und /etc/hosts.deny

Domänen-Anmeldung unter win-xp klappt nicht, samba smb.conf
auf windoof-Rechner in regedit folgenden key auf 0 stellen:
local_machine/system/current_config/services/netlogon/parameters/requiresignorseal
Ist mit dem neuen Samba nicht mehr notwendig
eventuell muss "gast" konto erstellt werden!!!

zusätzliche Loop-Devices einrichten:
debian-server:~# mknod /dev/loop8 b 7 8
chmod ...
chgrp ...
grep max.loop /usr/src/linux/drivers/block/loop.c |head -2
in /etc/lilo.conf
append="max_loop=32"

Windows-Freigaben mounten, smb, samba
mount -t smbfs //windoof01/corel-disk3 /mnt/server -o username=schuetzk,password=schuetzk

email versenden mit nail

nail -s testmail11 -a spross2_sept2003.pdf -r absender@katholikentag.de empfaenger@katholikentag.de < testmailtext.txt

in der Datei testmailtext.txt muß kein EOF stehen. man kann eine Datei ~/.mailrc erzeugen, die Zeilen in der Form alias verteilerliste empfaenger1@irgendwo.de empfaenger2@irgendwoanders.de enthält. Diese Aliase landen allerdings nicht in bcc, sondern in der An-Zeile, jeder Empfänger sieht also die ganze Liste. Besser ist wohl ein Aufruf in einem Script mit for-Schleife

Serienfax mit sendfax und Liste aus dem M-server
sendfax -h faxserver.dktulm.test -n -f "Klaus Schütz, DKT Ulm" -l -T 3 -z faxverteilerliste.txt print.ps
-f ist nur relevant bei Faxcover, das mit -n ausgeschaltet wird. in der List stehen entweder nur Telefonnummern, oder name@07317051111, dann wird der Name für das Faxcover verwendet.

postscript, normales a4-Dokument als Broschüre drucken auf a3
getestet mit 4 Seiten aus sproessling. Ergebnis.ps mit kghostscript oeffnen, bei ansicht Seitengroesse auf a3 stellen, druck ueber kyocera mit Duplex

 *cat print.ps | psbook| pstops '2:0L@1(30cm,0.2cm)+1l@1(30cm,20.7cm)' > ergebnis.ps* 

Namensschilder, A3 längs gefaltet.

Unter OO Seitenformat auf A3 Quer, dann Höhe halbieren So wird die Rückseite richtig herum bedruckt. Wichtig: Drucker kprinter auf A3 stellen.

 *cat print.ps | pstops -p a3 '2:0@1(14.85cm,0cm)+1U@1(14.85cm,42cm)' > ergebnis.ps* 

alle Prozesse anzeigen, die ein Gerät belegen z.B. wenn umount bei CD nicht klappt:

lsof /dev/hdc

quota setzen und kontrollieren

quotatool -u schuetzk -b -q 300MB -v /home (setzt die Soft-Quota)
quotatool -u schuetzk -b -l 350MB -v /home (setzt die Hard-Quota)
edquota -t (hiermit wird die Grace Period gesetzt, die Zeit von Soft zu Hard)
repquota -avug | less (alle Quotas tabellarisch anzeigen)
quota schuetzk (quota für einen User ausgeben, kann jeder User selbst mit ssh)
quotacheck -vm -a (quota.user und quota.group generieren mit Schreibzugriff, sonst ohne m)

Beim aufsetzen eines NIS-Servers ist zu beachten, dass man unter /etc/default/nis den Wert NISSERVER auf master setzt:
NISSERVER=master
Ansonsten wird ypserv beim Aufruf von "/etc/init.d/nis start" NICHT gestartet.

alle DNS-Eintraege anzeigen lassen
dig -t ANY katholikentag.de

SSH-Tunnel von aussen mit dem Mumps-Server erstellen:
ssh -L 23:10.10.0.115:23 root@80.145.97.136
WICHTIG: Dann in zweiter Sitzung Verbindung zu localhost aufnehmen, z.B. telnet localhost. Der Anschluss des entfernten Systems wird auf dem eigenen Rechner durch ssh zur Verfügung gestellt. denkbar ist auch folgendes:

ssh -L 8080:10.10.0.100:8080 root@80.145.97.136

Dann trägt man den eigenen Server als Proxy ein. Vorteil: Der 10.10.0.100 kann alle Namen auflößen.

ssh Vertrauensstelleung herstellen, Schlüssel generieren:
ssh-keygen -t dsa -N "" && ssh-keygen -t rsa -N "" 
cd ~/.ssh* 
ssh-copy-id -i id_dsa.pub root@ds && ssh-copy-id -i id_rsa.pub root@ds

Generate public key out of private key:

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub


openoffice, faxdrucker einrichten

sendfax -h "faxserver.dktulm.test" -k "now + 900 hour" -D -f `who|head -n 1|cut -d " " -f 1`@katholikentag.de -n -T 3 -t 3 -l -d (PHONE) (TMP)

durch das who wird die Benachrichtigung an den angemeldeten Benutzer gesendet.

DVD-RAM unter Linux:
DVD-RAM in Brenner einlegen und mit mke2fs -b 2048 /dev/dvdbrenner formatieren.
Jetzt den fstab-Eintrag von "/dev/dvdbrenner" aendern, z.B.:
/dev/dvdbrenner /media/dvdbrenner iso9660 defaults,users,ro,noauto,noexec 0 0
`iso9660` durch `auto` ersetzen und `ro` entfernen!!!!!

Sollte die Desktop-Verknuepfung des DVDbrenners die DVD-RAM nicht mounten, dann RM-Taste auf Verknuepfung, Einstellungen waehlen, Reiter "Geraet" auswaehlen und und "Nur lesen" deaktivieren!!!!

DOS-Textdateien (auch .csv-Dateien) nach Linux konvertieren, wichtig bei cut -d";"

tr -d "\015" dostext.txt >linuxtext.txt

an Linux-Dateien aus ln ein cr/ln machen fuer dos

cat linux-datei.txt | sed 's/$'"/`echo \\\r`/" > dos-datei.txt

umwandeln mit recode

recode ibmpc..lat1 dosfile.txt > linux-file.txt

cups, einem Drucker eine bestimmte .ppd-Datei zuweisen

lpadmin -p kyocera9500 -P kyocera9500.ppd

sortieren nach einer bestimmten Spalte

sort -k 2

Kyocera, umgekehrte Druckreihenfolge bei Duplexdruck

echo '!R! FPRO N7,1 ; EXIT ;' |lp -dtest

wobei test ein CUPS-Drucker ist, der die Daten roh an den Drucker weiter leitet. Prüfen des Parameters durch Ausdruck der kompletten Satusseiten unter "Service"

Nachricht an Windows-Rechner senden, Gegenstück zu netsend bei Windows, ein Pop-Up-fenster erscheint

smbclient -M windoof01

Nach drücken von Enter wird die Nachricht eingegeben, und mit STRG-D beendet und versendet.

nach Änderungen in /etc/inetd.conf

telinit q

ISO-File auf CD brennen

cdrecord -eject -v speed=40 dev=0,1,0 -driveropts=burnfree /tmp/knoppix3.4_cebit.iso

nicht druckbare Zeichen ausfiltern, geeignet um Text aus Binärdateien zu fischen

strings datei.exe

Um die Kernelversion auszugeben, folgendes tun:

uname -r

screen, Sitzung auf Server, die bei Verebindungsabbruch nicht beendet wird

Verbindung zum Zielrechner aufbauen mit SSH
Starten tut man es einfach mit screen, ab dann arbeitet man auf einem von screen verwalteten screen. Eine Liste von laufenden screens erzeugt screen -ls. Multi-User-Mode: Wenn schon ein screen läuft, kann man sich einfach mit screen -rx draufschalten. (die erhält man mit screen -ls). Wenn man sich nicht sicher ist, ob schon ein anderer screen läuft: screen -R erstellt bei Bedarf einen neuen. Wenn man fertig ist, einfach Verbindung abbrechen (ggf. vorher Strg-a d = detach).
die wichtigsten Screen-Kommandos
Strg-a ? eingebauter Hilfebildschirm
Strg-a c ("create") erzeugt einen neuen von Screen verwalteten Bildschirm (Window)
Strg-a n ("next") schaltet um auf den nächsten Bildschirm
Strg-a auch ("next"), aber u.U. handlicher zu bedienen
Strg-a p ("previous") schaltet um auf den vorherigen Bildschirm
Strg-a 0 bis Strg-a 9 schaltet um auf Bildschirm 0..9
Strg-a x sperrt die Konsole, bis das Passwort des Benutzers eingegeben wurde
Strg-a d ("detach") verlässt screen, ohne es zu stoppen.
Strg-a Esc, dann Strg-u und Strg d für scrollen up/ down. Mit Esc verlassen.
Strg-a S split (new region)
Strg-a AltGr -< split vertical
Strg-a Tab change region
Strg-a X close region
Strg-a " list windows
Strg-a K close window
Strg-a W display window number
Strg-a A set name of current window
Strg-a M monitor window for activity
Strg-a _ monitor windows for silence

Proxy-Einstellungen von Mozilla bei allen Usern hinzufügen:

for datei in `ls */.mozilla/*/*/prefs.js`;do cat /home/schuetz/proxy-eintragen_mozilla.txt >> $datei; echo $datei;echo "---"; done

es wird nicht geprüft, ob bereits eine Einstellung vorhanden war!

Aufbau einer Datei zur automatischen Proxy-Configuration:

{
   if (isInNet(host, "10.10.0.0", "255.255.0.0"))
      return "DIRECT";
   else
      return "PROXY proxy.dktulm.test:8080";
}

ablegen als z.B. proxy.pac auf dem Webserver, und in die Konfig des Browsers eintragen. obiges Beispiel funktionierte nicht richtig, vermtl. wegen DNS-aAuflößung. "DIRECT" heisst wohl, dass der Name vom Client selbst aufgeloesst wird, nicht vom proxy.

oder einfacher, aber funktionell:
{
 if (isPlainHostName(host) || dnsDomainIs(host, ".dktulm.test"))
  return "DIRECT";
 else
  return "PROXY proxy.dktulm.test:8080; DIRECT";
}

unter Debian die Netzwerkkarte konfigurieren (Packet "etherconf" muss installiert sein):

dpkg-reconfigure etherconf

restore von mail-ordnern bei cyrus

grundsätzlich zuerst eine Vollsicherung verwenden, dann bei Bedarf eine diff. Folgende Dateien zurücksichern in ein externes Verzeichnis:

/var/spool/cyrus/mail/user/
/var/lib/cyrus/user/
/var/lib/cyrus/mailboxes

aus der Datei mailboxes diejenigen Zeilen des users mit der Orginal-Datei abgleichen, die anderen beiden Dateien komplett kopieren, auf Rechte achten.

IP-Ports schließen, die inetd öffnet
update-inetd -remove telnet und anschließend killall -s HUP inetd
So werden nicht benötigte Ports geschlossen, die ein Risiko darstellen.
Prüfen, welche Ports geöffnet sind:
nmap -sT -sU -O localhost

welcher Dienst steckt hinter dem Port:
cat /etc/services | grep 22

Nachschauen, welcher Prozess den Port geöffnet hat:
netstat -anp | grep 22 oder auch lsof -i :22

oder
netstat -natup

welcher Prozess belegt TCP-Port 80?
fuser -v 80/tcp

steuer.csv, Vornamen entfernen

cat steuer.csv |sed "s/#/;/g" | sed 's/, [^;]*;/;/1' > steuer_bearbeitet.csv

cd-brennen, cdrdao, cdrecord, ide, atapi
mit folgendem befehl herausfinden, welche nummer das device hat:
cdrecord -scanbus dev=ATAPI
dann z.b. kopie mit cdrdao:

ascii art banner schriftzuege zeichnen aus Text
figlet

Postscript-Dateien aneinander hängen:
a2ps
das generierte Postscript ist aber schlecht, mußte es zuerst in PDF drucken.

a2ps -R -K --rows 1 --columns 1 -o perl_in_21_tagen.ps mozilla??.ps

Langsamer Rechner
Aufruf von fc-cache baut neuen Fontcache auf. Danach flutsch es wieder!

append vga boot-parameter lilo grub aufloesung

  640x480 800x600 1024x768 1280x1024
256 0x301 0x303 0x305 0x307
32k 0x310 0x313 0x316 0x319
64k 0x311 0x314 0x317 0x31A
16M 0x312 0x315 0x318 0x31B
To enable one of those modes you have to specify "vga=ask" in the lilo.conf file and rerun LILO. Then you can type in the desired mode at the "vga=ask" prompt. For example if you like to use 1024x768x256 colors you have to say "305" at this prompt. Kann natürlich auch direkt in append eingetragen werden. Nachzulesen bei vesa

watch date

zeigt die Ausghabe des Befehls date fortlaufend aktualisiert an

Module, Informationen und Parameter zu Modulen

modinfo <Modulname>

z.B. modinfo mousedev

der Befehl nl gibt Textfiles auf der Standardausgabe aus (wie cat), fügt aber Zeilennummern ein.

nl -n rz /etc/passwd

gibt die Datei mit 6-Stelligen, rechtsbündigen Zeilennummern aus.

xxd zeigt einen Hexdump von Dateien an. xxd kann seinen erzeugten Hexdump auch wieder in die Orginaldatei konvertieren.

stat zeigt Dateiattribute an

stat -f gibt Informationen über das Dateisystem aus, in dem sich die Datei befindet.

lsattr und chattr

Anzeigen und Löschen zusätzlicher Dateiattribute.

Attribut Bedeutung
a nur anhängen
A Zugriffszeiten werden nicht registriert
c Datei wird Komprimiert
d kein dump, das Programm dump lässt diese Datei aus
i unveränderbar
j schreibt beim Speichern zuerst ins Journal (ext3)
s sicheres Löschen: Datei wird beim Löschen mit Nullen überschrieben
S syncrones Update: Dateien werden sofort syncronisiert (wie sync)
u Inhalt der Datei wird beim Löschen gespeichert

paste datei1 datei2

gibt Dateien als aneinandergefügte Spalten aus (Gegestück zu cut)

m4
ersetzt Platzhalter in Dateien (=substituiert)
m4 -DNAME=Schutz Datei.txt
ersetzt in Datei.txt das Wort NAME durch Schuetz und gibt das Ergebnis auf die Standardausgabe aus.

comm
ähnlich diff, vergleicht zwei Dateien Zeilenweise. Ausgabe in drei Spalten:

Spalte1
alle Zeilen, die nur in Datei1 vorkommen
Spalte2
alle Zeilen, die nur in Datei2 vorkommen
Spalte3
alle Zeilen, die in beiden Dateien vorkommen

logname zeigt den ursprünglich angemeldeten User, auch nach einem su

strace verfolgt Systemcalls und Signale eines Prozesses

tac wie cat, nur umgekehrt

gibt Dateien zeilenweise in umgekehrter Reihenfolge aus

expand ersetzt Tabulatorzeichen durch Folgen von Leerzeichen

fold bricht Zeilen ab einer bestimmten Länge um

iftop zeigt die Bandbreitennutzung eines Interfaces an, geordnet nach Hosts/ verbindungen

vnc-server, kde
~/.vnc/xstartup so einrichten, dass bei der Anmeldung kde gestartet wird:

#!/bin/sh
xrdb $HOME/.Xresources
xsetroot -solid grey
startkde &

vim, Bildschirm teilen in zwei Fenster und zweite Datei editieren:

:split /zweite/datei.txt oder :vsplit /zweite/datei.txt
wechseln von einem Fenster ins andere:
Strg-W, up oder down

suchen und ersetzen
:1,$ s/^#//g

ersetzt alle # am Zeilenanfang von Zeile 1 bis zur letzten Zeile.

Leerzeichen durch Zeilenumbruch ersetzen
:1,$ s/ /^M/g

das ^M wird mit Strg+V erzeugt

ein- und ausschalten von parametern im Kommandomodus mit set PARAMETER/ set noPARAMETER
Zeilennummern: nu
Automatische Einruecken: ai

Shell-Befehl ausführen und Ausgabe einfügen:
!! date

Prüfen, ob ein Server ein SSL-Certifikat ausgibt (hier LDAP)

openssl s_client -connect server.domain:636 showcerts

Mozilla Thunderbird, bei IMAP alle Ordner auf neue Mails prüfen. Folgende Zeile in Prefs.js eintragen:

user_pref("mail.check_all_imap_folders_for_new", true);

ldap-Anfrage an Active Directory, Beispiel

ldapsearch -l 0 -z 0 -Omaxssf=0 -L -h server10s.mueller.de -b dc=mueller,dc=de -s sub "(proxyAddresses=Fax:*)" sAMAccountname proxyAddresses | egrep \(FAX:[0-9][0-9][0-9]\)\|\("^$"\) | less
ldapsearch -l 0 -D ldap-user -w ldap-password -L -h ldapserver.local -b dc=mueller,dc=de -s sub "(mail=*irgend-eine@maildresse*)" "sAMAccountname mail"

-l 0 schaltet das Zeitlimit ab, es gilt dann das des Servers, -z 0 schaltet das Size-Limit ab, -Omaxssf=0 schaltet die Security Layer aus.

lib, library, Informationen zu libc.so.6

einfach die lib als Kommando ausführen:
/lib/libc.so.6
Inhalte der lib anzeigen:
objdump -T /lib/lib.so.6

Das Programm ldd zeigt bei jeder Library an, von welcher anderen Library diese abhängig ist

ldd /lib/libc.so.6
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x30000000)

grep, egrep, Suchbegriffe mit Oder verknüpfen

egrep \("Begriff1"\)\|\("Begriff2"\) Datei

sed, gesuchetn Begriff im Ersetzen-teil einfügen

sed "s/\(Begriff1\)\(Begriff2\)\(Begriff3\)/xxx\3yyy\2/g"

ergibt xxxBegriff3yyyBegriff2


sed, Datei ab einer bestimmten Zeile, auf die eine regex zutrifft, ausgeben. Hier erste leere Zeile

sed -n '/^$/{n;p;}'

mit sed Zeilenende bearbeiten (alle Zeilen als ein String), hier: \n ersetzen mit Leerzeichen
 =sed ':a;N;$!ba;s/\n/ /g'= 


alle wirksamen Zeilen einer .conf-Datei anzeigen:
cat /etc/ldap.conf | egrep "^[[:space:]]*[^#[:space:]].*"

squid Clients Access konfigurieren:

...in squid.conf:
1. Es muss eine neue acl mit einem eindeutigem Namen erstellt werden
z.B gleich nach der Zeile:
   cache_peer proxy.foo.org parent 80 7 no-query login=domainuser:passwd
   acl trusted_clients src 192.168.1.200 10.0.0.0/8  <---- neue acl mit dem Namen trusted_clients

2. Neue never_direct Zeile:

   never_direct allow trusted_clients

3. Neue http_access Zeile:

   http_access allow trusted_clients

awk, zusammen mit sed das "Schweizer Taschenmesser" für Textdateien.

  • Spalten einer Textdatei ausgeben, mit sowohl Leerzeichen als auch Tabulator, Semikolon und Kommas als Spaltentrenner
    awk -F'[,;[:blank:]]' '{print $3 $2 $1}' datendatei.csv
  • formatierte Ausgabe, 5 Zeichen pro Spalte rechtsbündig für Uiser-ID
    awk -F':' '{printf("%5s %s\n",$3,$4)}' /etc/group
  • Spalte 2 ausblenden
    awk -F':' '{$2=""; print}' /etc/group
  • gesamte Zeile ausgeben ($9), mit Filter: Nur Zeilen, deren letztes Feld nicht leer ist (NF=gesamtanzahl Felder, also letztes Feld)
    awk -F':' '$NF=="" {print $0}' /etc/group
  • mit einem regulären Ausdruck filtern ( /regexp/) hier nur Gruppen anzeigen, in denen man selbst Mitglied ist.
    awk -F':' '/'"$USER"'/ {print $!}' /etc/group
  • reguläre Ausdrücke mit oder (||) verknüpfen, alle Zeilen, die mit post oder root beginnen (und-verknüpfung mit &&)
    awk -F':' '/^post/ || /^root/ {print $1}' /etc/group
  • Musterbereich, von Anfang bis Ende. Alle Zeilen von root bis lp ausgeben
    awk -F ':' '/root/,/lp/ {print $1}' /etc/group
    So können Daten, die Blockweise in Zeilen stehen, verarbeitet werden. Dazu muss als Blockende eine Leerzeile ( /^$/ ) angegeben werden.
  • Zeile 5 bis Zeile 7 ausgeben
    awk -F':' 'NR==5,NR=7 {print $0}' /etc/group
  • Durchschnitt/ Mittelwert berechnen
    awk  'BEGIN {
     }
     $col ~ /^[0-9]/ {sum=sum+$col} {MITTELWERT=sum/(NR); }
     END {
         print "Mittelwert: ",MITTELWERT;
         print "Summe: ",sum;
         print "Anzahl: ",NR;
         }' Datei
  • Datenbloecke auswerten, hier ein Auszug aller Drucker aus einer Windows-Registry (die Datei enthält null-bytes, die entfernt werden muessen mit cat datei|tr -d "/000"|recode ibmpc..lat1 > dateineu. Die relevanten Zeilen enthalten "Name" und "Port".
    #!/usr/bin/awk -f
    
    BEGIN  { RS = ""; FS = "\n" }
    name = ""
    port = ""
    {
     for (i=1; i <= NF; i++) {
      if ($i ~ /\"Name\"/){
       split($i, pr, "\"")
       name = pr[4]
      }
      else if ($i ~ /\"Port\"/){
       split($i, po, "\"")
       port = po[4]
      }
     }
    }
    
    {
     if ( name != "") {
      print name ";" port
     }
    }
  • Datenblöcke auswerten, hier ein Script, bei welchem der Datenblock mit [Serverxy] beginnt und durch Leerzeilen getrennt ist
    #!/usr/bin/awk -f
    
    BEGIN  { RS = "\n\n"; FS = "\n" }
    name = ""
    zeit = ""
    tag = ""
    {
     for (i=1; i <= NF; i++) {
             if ($i  ~ /nie/) {
                     next
             }
      if ($i ~ /^\[.*/){
       split($i, pr, /\]|\[/)
       name = pr[2]
      }
      else if ($i ~ /zeit_reboot/){
       split($i, po, "=")
       zeit = po[2]
      }
      else if ($i ~ /tag_reboot/){
       split($i, pt, "=")
       tag = pt[2]
      }
     }
    }
    
    {
     if ( name != "") {
      print name ";" tag ";" zeit
     }
    }
  • Text-Spalte mit Zahlen addieren
    awk '{ total = total + $1 } END { print total }'
  • von der ersten gefundenen Leerzeile bis zum Ende ausgeben
cat irgendwas.txt | awk  'BEGIN {anf=0}; /^$/{anf=$NR};anf!=0 {print $0}'

Perl

Reguläre Ausdrücke, Regular Expressions, Regex
Metazeichen
. beliebiges Zeichen, außer \n
\ nimmt dem folgenden Metazeichen die Sonderbedeutung
Quantifier
* beliebig oft
+ einmal oder öfter
? optional
{3,15} 3-15 mal, bei 20 Vorkommen werden nur 15 gefunden
{8} genau 8 mal
{1,} einmal oder mehr, entspricht +
*? beliebig oft, nicht gierig
+? einmal oder öfter, nicht gierig
?? optional, nicht gierig
{3,15}? 3-15 mal, bei 10 Vorkommen werden nur 3 gefunden, nicht gierig
Zeichenklassen
\d beliebige Ziffer
\D alles außer Ziffern (auch \n)
\w Wortzeichen [A-Za-z0-9_]
\W alles außer Wortzeichen
\f Seitenvorschub
\t Tabulator
\n Zeilenumbruch
\r Wagenrücklauf
\s whitespace [\f\t\n\r\s]
[\s\D] beliebiges Zeichen (incl. \n)
Option-Modifier / Flags
/i Groß-/ Kleinschreibung ignorieren
/s . findet auch \n
/m
^
und $ wirken auch auf Zeilenende, nicht nur auf Stringende
/x Leerzeichen erlaubt
/g globales Ersetzen
Anker
^
Beginn des Strings (Zeilenanfang bei /m)
$ Ende des Strings (Zeilenende bei /m)
\b Wortgrenze (Wörter wie /w)
Speichervariablen
$1 $2... Speichervariablen (Inhalt der Klammerpaare)
$` alles vor dem gefundenen String
$& der gefundene String
$' alles nach dem gefundenen String
Ersetzungen mit s/ / /
\U Uppercase, alles folgene in Großbuchstaben
\u das folgene Zeichen in Großbuchstaben
\L Lowercase, alles folgende in Kleinbuchstaben
\l das folgene Zeichen in Kleinbuchstaben
\E Wirkung von \U und \L ab jetzt aufheben

Dateitests
Dateitest Bedeutung
-r Datei oder Verzeichnis ist für diesen (effektiven) Benutzer oder Gruppe lesbar
-w Datei oder Verzeichnis ist für diesen (effektiven) Benutzer oder Gruppe schreibbar
-x Datei oder Verzeichnis ist für diesen (effektiven) Benutzer oder Gruppe ausführbar
-o Datei oder Verzeichnis gehört diesem (effektiven) User
-R Datei oder Verzeichnis ist für tatsächliche(n) Benutzer oder Gruppe lesbar
-W Datei oder Verzeichnis ist für tatsächliche(n) Benutzer oder Gruppe schreibbar
-X Datei oder Verzeichnis ist für tatsächliche(n) Benutzer oder Gruppe ausfuehrbar
-O Datei oder Verzeichnis gehört diesem tatsächlichen Benutzer
-e Datei- oder Verzeichnisname existiert
-Z Datei existiert und hat die Größe null (für Verzeichnisse immer war)
-s Datei existiert und hat eine andere Größe als null (der Wert ist die Größe in Bytes)
-f Angabe ist eine einfache Datei
-d Angabe ist ein Verzeichnis
-l Angabe ist ein symbolischer Link
-S Angabe ist ein socket
-p Angabe ist eine benannte Pipe (ein "fifo")
-b Angabe ist eine spezielle Blockdatei (etwa eine mountfähige Festplatte)
-c Angabe ist eine zeichenspezifische Datei (z.B. ein I/O-Gerät, wie Monitor usw.)
-u Datei oder Verzeichnis ist setuid
-g Datei oder Verzeichnis ist setgid
-k Datei oder Verzeichnis hat das "Sticky Bit" gesetzt
-t Dateihandle ist ein TTY (Rückgabewertder isatty()-Systemfunktion; Dateinamen können mit diesem Test nicht geprüft werden)
-T Datei sieht aus wie eine >Text<-Datei
-B Datei sieht aus wie eine >Binär<-Datei
-M Alter der Datei (in Tagen)
-A Zeit des letzten Zugriffs (in Tagen)
-C letzte Änderung des Inode (in Tagen)

perl, Module von CPAN nachinstallieren:

Start a CPAN session:
perl -MCPAN -e shell

Accept the default of "yes" at the: Are you ready for manual configuration? [yes] Accept all the defaults, eventually you will need to (and this may take some time to come up): Select your continent Select your country

After you have selected these, hit [space][enter] a few times until you see some http servers. Do not pick any ftp servers. Select a couple of the http servers. Hit [enter] to get back to the cpan> prompt. One more note: do not update the CPAN program itself.

Now let's install a couple of modules we need: At the cpan> prompt type these commands in exactly:
install File::MMagic

If you are asked any questions, accept the defaults.

Back at the cpan> prompt:
install Date::Calc

If you are asked any questions, accept the defaults. When it finishes, exit cpan with:
q

Ersetzen in allen Dateien mit Sicherungskopie

perl -p -i.bak -w -e 's/gesucht/ersatz/g' /zu/durchsuchende/dateien*

perl wie sed auf der Kommandozeile benutzen
Beispiel sucht nach sechsstelligen Zahlen

cat datei |perl -n -e 'print $1 . "\n" if /(\d{6})/g'

route, portsentry, reject
portsentry kann so konfiguriert werden, dass eine route mit dem Zusatz "reject" eingetragen wird, um weitere Zugriffe von einem Angreifer zu verhindern. Diese Route kann man nur auf folgende weise löschen:
route del -host 192.168.1.2 reject

Speicherbelegung, vmstat
watch -d vmstat -s
vmstat -n 1 20
vmstat -n -a 1

erweitertes traceroute
mtr

find
Dateien finden, die nicht aelter als eine Woche sind:

find -mtime -8

Dateien finden, die aelter als eine Woche sind:

find -mtime +7

naxch Dateinamen case-insensitiv suchen:

find -iname "irgendwas"

zwei Begriffe in unterschiedlichen Zeilen in Dateien suchen

find . -type f 2>/dev/null | xargs grep -l "begriff1" 2>/dev/null | xargs grep -l "begriff2" 2>/dev/null| xargs less -p begriff1\|begriff2

Rechner clonen mit rsync

zu beachten:
Beim rsync-Befehl sollten folgende Verzeichnisse mit --exclude ausgenommen werden
/proc /sys /lost+found
Da die Systeme verschiedene User und Gruppen haben können, muss das auflösen der uids abgeschaltet werden mit --numeric-ids
Nach dem Clonen müssen die ausgelassenen Verzeichnisse erstellt werden, sonst kann das neue System z.B. /proc nicht mounten.
Bsp.:
rsync -av -e ssh --numeric-ids --exclude='/proc' --exclude='/sys' --exclude='/lost+found' / root@hostname:/mnt/hda1/

in der Datei /etc/udev/rules.d/z25_persistent-net.rules sind Informationen zu MAC-Adressen der netzwerkkarten und den Devicenamen. Hier sollten alte Einträge gelöscht werden.
Unter /etc/ssh/ sollten die Keys neu erzeugt werden, wie auf dieser Seite beschrieben, als Dateinamen ssh_host_dsa_key und ssh_host_rsa_key.

apache2, virtual Hosts, SSL

Problem: Ein virtueller Host soll sowohl unverschlüsselt als auch verschlüsselt mit dem gleichen Inhalt dargestellt werden

Lösung:
in die Config des virtuellen Hosts muss der Port wie folgt angegeben werden
<VirtualHost *:80>
    ServerName mein.site.de
    ...

<VirtualHost *:443>
    ServerName mein.site.de
    ...

weiteres Problem:
Für virtuelle Hosts werden einzelne Conf-Dateien verwendet, die in einem Verzeichnis stehen und per include in httpd.conf eingebunden werden. Die Reihenfolge der Dateien im Verzeichnis bestimmt die Default-seite, wenn beim Seitenaufruf nur die IP-Adresse angegeben wird. Deshalb den dateinamen Nummern voranstellen, um die Reihenfolge festzulegen.

mysql

admin-passwort setzen:

mysql stoppen und neu starten mit
mysqld_safe --skip-grant-tables &

mit der Datenbank verbinden mit

mysql -u root mysql

Passwort zurücksetzen mit

UPDATE user SET password=PASSWORD('neues_password') WHERE user='root';

Wenn noch kein Passwort gesetzt ist, genügt stattdessen folgendes:

/usr/bin/mysqladmin -u root password 'new-password'

Unter Debian erhaelt man auch Zugriff mit dem User, der in /etc/mysql/debian.cnf steht!

User anlegen
$ mysql -u root -pYYYYY mysql

mysql> insert into user (host, user, password, select_priv)
    ->  values ('localhost', 'kayon', password('XXXXXX'), 'Y');
Query OK, 1 row affected (0.00 sec)

mysql> insert into db (host, db, user, select_priv) 
    -> values ('localhost', 'customers', 'kayon', 'Y');
Query OK, 1 row affected (0.00 sec)

mysql> exit

alpine$ mysqladmin -u root -pYYYYY reload

Identify the current database:
mysql> select DATABASE();

List all available databases with:
mysql> show databases;

Select a particular database:
mysql> use nhds;
Database changed

List the available tables:
mysql> show tables;

List details of the structure of a table:
mysql> describe nhds99;

Userrechte ändern
mysql> update user SET Update_priv = "Y" where User = "postfix"; 

Kennwort zurücksetzen
mysql> use mysql;
mysql> update user set password=PASSWORD('neues_password') where ...
mysql> flush_privileges

Tabellen in Datei sichern (exportieren)
mysql> select * into outfile '/pfad/zu/table.txt' fields terminated by ',' from table;

Daten aus Datei recovern (importierten)
mysql> load data infile '/pfad/zu/table.txt' into table table fields terminated by ',';

alle Felder einer Tabelle anzeigen lassen
mysql> show columns from table;

Datensatz ändern
mysql> update whitelist_sender set _whitelist="kaobrands.com" where _whitelist="@kaobrands.com";

Teilstring, Substring, Teil eines Feldinhaltes ausgeben
select mid(nachricht,51,5) as teilnummer,count(id) as anz from send where status=0  group by teilnummer having teilnummer like "00%";

Datensatz loeschen
delet from table where keyname="irgendwas";

wie wurde eine Tabelle erstellt?

show create table tbl_name;

dm-crypt, verschlüsselte Partitionen

Begriffe und Variablen
$CRYPTODEVICE Name deines Cryptodevices, z.B. scheibenkaese
$DEVICE Bezeichnung des Laufwerkes, z.B. hda2 (also /dev/hda2)
$MOUNT beliebiges Verzeichnis, z.B. /mnt/tiefkuehlfach
Pakete installieren
apt-get install cryptsetup hashalot

Ein Crypto-Modul laden und in /etc/modules eintragen, z.B.

modprobe aes_i586

Cryptopartition einrichten. Als Erstes benötigst du eine freie Partition1. Mit dem Aufruf von cryptsetup wird die neue Cryptopartition angelegt:

cryptsetup -y -c aes create $CRYPTODEVICE /dev/$DEVICE

Das neue device formatieren:

mkfs.ext3 /dev/mapper/$CRYPTODEVICE 

Und schliesslich noch mounten:

mount /dev/mapper/$CRYPTODEVICE $MOUNT

Täglicher Gebrauch
Trage deine Cryptopartition in /etc/crypttab ein, bspw:

# <target device>  <source device>  <key file>  <options>
$CRYPTODEVICE      /dev/$DEVICE     none        cipher=aes-cbc-essiv:sha256

Trage in /etc/fstab das Device (/dev/mapper/$CRYPTODEVICE $MOUNT) mit deinen Dateisystemoptionen ein. /etc/init.d/cryptdisks kuemmert sich um die Initialisierung beim Booten. Bei Falscheingabe, kannst du nach dem login mit

/etc/init.d/cryptdisks start

die Partition manuell initialisieren.
Paranoia
Mit dmsetup info lassen sich benutzte devicemappings anzeigen. Taucht hier ein Teil als ACTIVE auf, so hat jedermensch darauf Zugriff (auch wenn es nicht gemountet ist, koennte - wer die noetigen Rechte hat - das Teil ohne passendes Cryptokennwort mounten) - es ist in diesem Zustand quasi entschluesselt! Deswegen immer nach dem unmounten, das mapping entfernen (sonst gibt's (erfahrene Beamte vorausgesetzt) evtl. Stress bei der Hausdurchsuchung):

umount $MOUNT
cryptsetup remove $CRYPTODEVICE

Du kannst alle mappings gleichzeitig entfernen mit:

dmsetup remove_all

Denk dran: cryptsetup remove niemals nicht vergessen oder aber Stecker ziehen den Status des Device bekommt man mit folgendem Befehl angezeigt:

dmsetup info

dieses Howto findet man unter
https://systemausfall.org/wikis/howto/CryptoPartitionHowTo
http://www.saout.de/tikiwiki/tiki-index.php

Status von dd beim kopieren erfragen

ps -fC dd
kill -USR1 pid

Debian Paketquellen

  • Einträge in /etc/apt/sources
    #[debian]
    deb http://ftp.de.debian.org/debian etch main contrib non-free
    deb-src http://ftp.de.debian.org/debian etch main contrib non-free
    
    #[security]
    deb http://http://ftp2.de.debian.org/debian-security etch/updates main contrib non-free
    
    #[backports.org]
    deb http://http://backports.org/debian etch-backports main contr
    
    #[debian-multimedia]
    deb http://http://www.debian-multimedia.org etch main
    
    #[debian-multimedia-sarge]
    backends = http://mirror.home-dn.net/debian-multimedia
    
    #[debian-unofficial]
    deb http://http://ftp.debian-unofficial.org/debian etch main contrib non
    
    
    #[citadel] groupware
    deb http://debian.citadel.org/debian etch main
    
    
    #[ripmime]
    deb http://debian.iuculano.it/apt/ etch main contrib non-free
    
    [virtualbox]
    deb http://www.virtualbox.org/debian etch non-free
    
    # keyring download von http://www.virtualbox.org/debian/innotek.asc
    # installieren mit apt-key add innotek.asc
    # fingerprint:
    # 6947 BD50 026A E8C8 9AC4  09FD 390E C3FF 927C CC73
    # innotek GmbH (archive signing key) <info@innotek.de>
    
    #[sernet-samba]
    deb ftp://ftp.sernet.de/pub/samba etch main
    deb ftp://ftp.sernet.de/pub/samba source main
    
    #[debian-volatile]
    deb http://volatile.debian.org/debian-volatile etch/volatile main contrib
    deb http://volatile.debian.org/debian-volatile etch/volatile-sloppy main
    
    # OpenGroupware
    # deb http://download.opengroupware.org/packages/debian/ sarge trunk
    
    # VideoLAN software
    # deb http://download.videolan.org/pub/videolan/debian sarge main
    # deb-src http://download.videolan.org/pub/videolan/debian sarge main
    
    # Java
    deb ftp://ftp.tux.org/java/debian/ etch non-free
  • für Proxy-Benutzung: Einträge in /etc/apt/apt.conf (bei Bedarf erstellen)
    Acquire::http::Proxy "http://username:password@proxy.domain:3128";
    Acquire::ftp::Proxy "http://username:password@proxy.domain:3128";

mount, chroot, lilowenn man einen defekten lilo mit knoppix reparieren möchte, kann lilo nach einem chroot auf die gemountete Partition nicht auf /proc zugreifen. Mit dem mount-Parameter --bind kann ein Verzeichnis in ein anderes Verzeichnis gemountet werden. Nützlich auch z.B. bei NFS-expotrts oder FTP. bind kann auch als Option in die fstab eingetragen werden, als FS gibt man auto oder none an.

mount --bind /dev /mnt/hda7/dev
mount --bind /proc /mnt/hda7/proc

erst danach chroot /mnt/hda7. Dann kann auch lilo aufgerufen werden.

mit ls nur Verzeichnisse anzeigen lassen

ls -ld */

Netzwerk-Informationen, Sockets

netstat -a -n | grep "^tcp" | cut -c 68- | sort | uniq -c | sort -n
cat /proc/net/sockstat
fuser -n tcp 5006 | sed -e 's/.*: *//'
netstat -pa

alle Worte in einer Datei mit der Haeufigkeit anzeigen

tr ' ' '\n' < datei.txt | sort | uniq -c | sort -nr

truecrypt - verschlüsselte Container

Als erstes wird ein NORMAL Volume erstellt und danach ein HIDDEN Volume.
Der Zugriff auf NORMAL oder HIDDEN wird nur durch unterschiedliche
Passworter gesteuert:

1. # chmod u+s /usr/bin/truecrypt  <--- ab Version 4.3 nicht mehr erlaubt!
2. # chmod o+r /dev/input/mice
3. $ truecrypt -c tcobject.tc
   Volume type:
    1) Normal
    2) Hidden
   Select [1]: 1

   Filesystem:
    1) FAT
    2) None
   Select [1]: 1 (2 und danach mit mkfs.ext3 geht nicht - ist in der Forum heiss diskutiert)

   Enter volume size (bytes - size/sizeK/sizeM/sizeG): 10G

   Hash algorithm:
    1) RIPEMD-160
    2) SHA-1
    3) Whirlpool
   Select [1]: 1

   Encryption algorithm:
    1) AES
    2) Blowfish
    3) CAST5
    4) Serpent
    5) Triple DES
    6) Twofish
    7) AES-Twofish
    8) AES-Twofish-Serpent
    9) Serpent-AES
   10) Serpent-Twofish-AES
   11) Twofish-Serpent
   Select [1]: 6 (oder 1 - hat OK Benchmark)

   Enter password for new volume 'tcobject.tc':
   Enter keyfile path [none]:
   TrueCrypt will now collect random data.
   Is your mouse connected directly to computer where TrueCrypt is running? [Y/n]: Y

...danach wieder Punkt 3. und Hidden wählen. Hidden muss natürlich kleiner sein
als Normal und MUSS einen anderen Passwort haben als der Normal Volume.

Und so arbeitet man mit dem was oben erstellt war:
...mount:
$ truecrypt -u /pfad/zur/volume.datei /mount/point/
...auflisten:
$ truecrypt -l
...dismount:
$ truecrypt -d

Oder man erstellt einen Script um auch die bash history zu unterbinden:
#!/bin/bash
truecrypt -u /pfad/zur/volume.datei /mount/point/ # Auf Mountpoint sollte nur
                                                  # der angemeldete Benutzer Zugriff haben
bash --rcfile ~/.tcprofile
truecrypt -d

In .tcprofile:
export HISTFILE=/dev/null

ISO-Image von einer CD erstellen

dd if=/dev/cdrom of=/pfad/zum/image.iso bs=2048

angepasste Prozessliste, hier am Beispiel Mailrelais

ps aux | grep "amavis\|trivial\|smtp\|cleanup\|pickup\|qmgr\|spamd\|antivir\|clamav\|freshclam\|policyd"|grep -v "grep"|sed 's/ \+/ /g'|cut --output-delimiter="@" -d " " -f 11 |sort|uniq -c|sort -k 2

erzeugt z.B. folgende Ausgabe:

server63vx:~# ks.prozesse.sh
      7 amavisd
      2 cleanup
      1 pickup
      1 qmgr
     11 smtp
      9 smtpd
      2 spamd
      1 trivial-rewrite
      1 /usr/bin/freshclam
      1 /usr/lib/AntiVir/antivir
      1 /usr/local/policyd/policyd
      3 /usr/sbin/clamd
      1 /usr/sbin/spamd

Inhalt aller Dateien rekursiv durchsuchen nach mehreren begriffen (oder-verknüpft)
# !/bin/bash

# sucht nach einem Begriff in allen Dateien rekursiv

case "$*" in

 -h|-?|?|--help|-help|'')
  echo
  echo "sucht einen oder mehrere Begriffe (oder-verknuepft)"
  echo "in allen Dateien rekursiv absteigend (nicht case-sensitive)"
  echo "usage: $0 suchbegriff [suchbegriffe ...]";echo
  ;;

 *)

   parameter="`echo "$*"| sed "s/ /\n/g"`"
   lessMuster="`echo "$*"|tr [:upper:] [:lower:]|sed "s/ /\\\|/g"`"
   find . -type f -print0 | xargs --null grep -C2 -i -n -F "$parameter" 2>/dev/null |    less -i -p "$lessMuster"
   ;;

esac

wer ist angemeldet?
bekannt ist users, besser ist aber w

Logfile oeffnen, egal ob komprimiert oder nicht
#
# $Id: WebHome.txt,v 1.99 2016/11/08 09:30:33 KlausSchuetz Exp $

sub open_log_file {
    # open log files whether they're compressed or not

    my $zcat = "/bin/zcat" ;
    my $gzcat = "/bin/zcat" ;
    my $bzcat = "/usr/bin/bzcat" ;

    my ($file) = shift ;

    if ($file eq "-") {
        open(FILE, "<&=STDIN");
    } else {
        my $mm = new File::MMagic;
        my $res = $mm->checktype_filename($file);

        #print "$file: $res\n" ;

        if ($res eq "application/x-compress") {
                open(FILE,"$zcat $file|") || die "couldn't run '$zcat
$file': $!" ;
        } elsif ($res eq "application/x-gzip") {
                open(FILE,"$gzcat $file|") || die "couldn't run '$gzcat
$file': $!" ;
        } elsif ($res eq "application/x-bzip2") {
                open(FILE,"$bzcat $file|") || die "couldn't run '$bzcat
$file': $!" ;
        } else {
                open(FILE,$file) || die "couldn't open $file: $!" ;
        }  ;
    } ;

    return *FILE ;
} ;

return 1;

alle SUID-Dateien finden, die root gehören

find / -user root -perm -4000 -print

firefox, iceweasel, default printer, kprinter, cups
  • Firefox starten
  • about:config in Adresszeile eingeben und
  • Den Wert von print.printer_Postscript/default.print_command auf kprinter ändern (Doppelklick auf Eintrag). Es wird dann bei Auswahl des Druckers %u201Cdefault%u201D in Firefox der KDE-Druckdialog angezeigt.
  • Mit Rechtsklick / Neu / Boolean einen neuen boolschen Wert mit dem Namen print.always_print_silent anlegen und auf TRUE setzen. Der Firefox-Druckdialog wird fortan nicht mehr angezeigt, sondern nur direkt der KDE-Druckdialog.
  • Mit Rechtsklick / Neu / Boolean einen neuen boolschen Wert mit dem Namen print.postscript.cups.enabled anlegen und auf FALSE setzen. Dadurch werden keine CUPS-Drucker mehr in Firefox geladen, sodass nur noch der Default-Drucker vorhanden ist.
  • mit FF3 scheint das sonicht mehr zu funktionieren. Abhilfe: Datei /etc/gtk-2.0/gtkrc erstellen mit Inhalt gtk-print-backends = "lpr,cups,file", dann /usr/bin/lpr nach .old umbenennen und statt dessen einen Symlink auf kprinter erstellen. Beim testen Firefox neu starten.


x11, X-Programme als root ausführen, xhost, xauth
um als root Zugriff auf das Display zu erhalten, welches unter einem anderen User laeuft:

XAUTHORITY=/home/user/.Xauthority; export XAUTHORITY; DISPLAY=:0.0; export DISPLAY

eingeben. Root hat jetzt Zugriff auf das Display des Users. Um das Display für einen anderen user freizugeben, wie folgt vorgehen:

jo@planet ~> xauth extract /tmp/schluessel $DISPLAY
jo@planet ~> su - user
Password:
user@planet:~> xauth merge /tmp/schluessel && chmod a+r /tmp/schluessel
xauth: creating new authority file /home/user/.Xauthority
user@planet:~> DISPLAY=:0.0; export DISPLAY
user@planet:~> X-Files
Starting X-Files...

es gibt auch ein Shellscript sux (Paket sux), das ähnliches leistet.

gpg

  • Schlüssel generieren
    • gpg --gen-key
  • fremden öffentlichen Schlüssel importieren
    • gpg --import
  • Schlüssel exportieren (mit UID einen bestimmten oder ohne UID alle)
    • gpg --export [UID]
  • alle Schlüssel des öffentlichen Schlüsselbundes anzeigen
    • gpg --list-keys
  • Datei signieren, Datei bleibt lesbar, Signatur angehängt
    • gpg --clearsign DATEI
  • Datei signieren und verschlüsseln
    • gpg [-u Sender] [-r Empfänger] [--armor] --sign --encrypt [Datei]
  • Signatur einer unverschlüsselten Datei Prüfen (öffentlicher Schlüssel das Absenders notwendig)
    • gpg [--verify] [Datei]
  • Fingerprint exportieren (brauchbar für telefonische Kontrolle der Echtheit des Pub-Keys)
    • gpg --fingerprint


interaktive Programm im Hintergrund starten, automatische Eingaben

expect

samba, net rpc join, Fehler "Unable to find a suitable server"

tritt in Multi-Subneted-Networks auf. Der Samba-Rechner kann den PDC (aus welchen Gründen auch immer) nicht aufloesen, trotz WINS. Join der Domain durch Eingabe von:
net rpc join -U <Username> -S <PDC>

dezimal in hex umwandeln

echo 'obase=16;$DZL' |bc

oder eben

printf "%x\n" $DZL

CIFS bzw. SMB-Freigaben per Script mounten

#!/bin/bash

UN=schuetzkl
IDU=1000
IDG=1000
BASE=~/winmount

case "$*" in

         -h|-?|?|--help|-help|'')
           echo
           echo "mountet die Freigabe eines Windows-Rechners,"
           echo "und erstellt dafür ein verzeichnis im Home des Users"
           echo "Eingabe zum mounten: $0 <Rechnername> <Freigabe>"
           echo "Eingabe zum unmounten: $0 -u <Rechnername> <Freigabe>"
           echo
           ;;

         -u*)
           sudo /bin/umount /${BASE}/${2}/${3}
           rmdir /${BASE}/${2}/${3} 2>/dev/null
           rmdir /${BASE}/${2} 2>/dev/null
           ;;

         *)
           mkdir -p "${BASE}/${1}/${2}" &&             sudo /bin/mount -t cifs -o username=${UN},workgroup=domain30,uid=${IDU},gid=${IDG},iocharset=utf8             //${1}/${2} /${BASE}/${1}/${2}
           ;;
esac

doppelte Dateien finden und anzeigen

find . -exec md5sum {} 2>/dev/null \; | sort | uniq -w 33 -D

doppelte Dateien loeschen

#!/bin/bash
Liste=liste.$$
rm -f $Liste
touch $Liste
for Datei in $(find . -type f); do
        Summe=$(md5sum $Datei| sed "s/[ \*] .*$//")
        if grep -q "$Summe" $Liste; then
                rm "$Datei"
                echo "geloescht: $Datei"
        else
                echo "$Summe" >> $Liste
        fi
done
rm $Liste

Image Magic
Ueberblick über alle JPEG-Bilder in einem Verzeichnis

convert 'vid:*.jpg' directory.jpg

aus jpg-Bildern eine Broschüre im Format A5 erstellen (Druck auf A4)

for bild in *.jpg; do echo $bild;convert -density 72 $bild b-$bild; done
convert -page A4 b-*.jpg out.ps
cat out.ps | psbook| pstops -p a4 '2:0L@0.67(20.5cm,0.8cm)+1l@0.67(20.5cm,16.55cm)' > buch.ps

von allen Bildern ein kleines bild erstellen mit 600 Punkten Breite (auch bei Hochkant-Bildern), ohne EXIF-Daten, Qualität 60

mkdir klein
for bild in $(ls *.jpg); do name="$(basename "$bild" .jpg)_klein.jpg"; convert -scale 600x -strip -quality 60 "$bild" "klein/$name"; done

komplettes home-Verzeichnis fuer einen anderen User kopieren

cd /home
rsync -vrlptD --delete exclude=irgendeinverzeichnis user1/ user2/
chown -R user2:group2 user2
find ./user2 -depth -type f | while IFS= read datei ; do if grep "user1" "$datei"; then  echo "$datei"; perl -p -i.bak -w -e 's/user1/user2/g' "$datei"; else echo "---- $datei"; fi done

funktioniert alles wie erwuenscht, kann man die .bak-Dateien loeschen.

Linux-Timestamp umwandeln
http://www.osmodia.net/timestamp/

Dateinamen konvertieren, z.B. nach auspacken einer mit Windows gepackten rar-Datei, wenn Umlaute nach entpacken nicht stimmen

convmv -f cp850 -t utf8 -r --notest [Verzeichnis]

kann auch cp1250 sein

bridge fuer Virtual Box einrichten
hier fuer zwei Interfaces:
In /etc/network/interface:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
  address 10.2.21.230
  network 10.2.21.0
  netmask 255.255.255.0
  broadcast 10.2.21.255
  gateway 10.2.21.1

auto tap0
iface tap0 inet manual
   up ifconfig $IFACE 0.0.0.0 up
   down ifconfig $IFACE down
   tunctl_user schuetzkl

auto tap1
iface tap1 inet manual
   up ifconfig $IFACE 0.0.0.0 up
   down ifconfig $IFACE down
   tunctl_user schuetzkl

auto br0
iface br0 inet static
  address 10.2.21.230
  network 10.2.21.0
  netmask 255.255.255.0
  broadcast 10.2.21.255
  gateway 10.2.21.1
  bridge_ports eth0 tap0 tap1


eigene IP-Adresse unter einbeziehung von /etc/hosts
hostname -i

bash in Farbe, color
folgendes in der ~/.bashrc einkommentieren

# You may uncomment the following lines if you want `ls' to be colorized:
export LS_OPTIONS='--color=auto'
eval "`dircolors`"
 alias ls='ls $LS_OPTIONS'
 alias ll='ls $LS_OPTIONS -l'
 alias l='ls $LS_OPTIONS -lA'


munin, Netzwerk-Interface geändert
Bei einem geklontem Rechner wurde weiterhin eth0 in Munin angezeigt, obwohl der Rechner nur eth1 hatte. Welche Interfaces geprüft werden, legt das Munin-Plugin mit dem Namen des Links in /etc/munin/plugins fest (z.B. if_eth1).



bash-programming, der letzte übergebene Parameter
lastparameter=${!#}

bash, Optionen auswaehlen
#!/bin/bash
OPTIONS="Hello Quit"
select opt in $OPTIONS; do
        if [ "$opt" = "Quit" ]; then
                echo done
                exit
        elif [ "$opt" = "Hello" ]; then
                echo Hello World
        else
                clear
        echo bad option
        fi
done


History, Befehle der aktuellen Sitzung nicht speichern:

history -c

löscht die History im Speicher
history -r

liest die gespeicherte History aus der Datei ein. Man könnte auch die History zuerst mit -w speichern, die Datei bearbeiten, die History dann wieder einlesen.

Um die aktuelle Zeile nicht in der History zu speichern, am Anfang ein Leerzeichen einfügen!

bash.bashrc, nützliche Erweiterungen

export HISTSIZE=90000 # History etwas laenger behalten
export HISTFILESIZE=90000
umask 002 # bei user privat groups

shopt -s histappend # history nur noch anhaengen
PROMPT_COMMAND='history -a' # und sofort in die Datei schreiben

# ls mit Erweiterung für Dateityp
function ls
{
   command ls -F "$@"
}

# diff mit +-
function duff
{
          diff -ur "$@"
}
export -f duff # keep the orginal name

shopt -s cdspell # fehler beim Verzeichniswechsel tollerieren
CDPATH='.:..:/' # bei Vervollstaendigung weitere Verzeichnisse anzeigen

Configuring Up and =Down=
  • Incremental searching with Up and Down is configured in .inputrc or /etc/inputrc (braucht in Debian nur einkommentiert werden)
    "\e[5~": history-search-backward
    "\e[6~": history-search-forward
  • Old behaviour still available with Ctrl+P and Ctrl+N
  • If that prevents Left and Rightfrom working, fix them like this:
    "\e[C": forward-char
    "\e[D": backward-char


Timestamp (in Sekunden) umwandeln

date -d @1226631600


Dateiformat umwandeln linux <-> dos mit vi
:set fileformat=linux

oder

:set fileformat=dos

wandelt auch den Zeilenumbruch um

das aktuelle Verzeichnis als Webseite freigeben unter Port 1234
python -m SimpleHTTPServer 1234

smba und cups als Windows-Druckserver

einen bestimmten Treiber einem bestimmten Drucker zuordnen:
rpcclient -U'schuetzkl' -c 'setdriver druckername treibername' sambahostname

einen Drucker in CUPS anlegen:

lpadmin -p "$name" -L "$location" -D "$name" -v "socket://${name}.zentrale.mueller.de:9100/" -E

dem Drucker von Windows aus einen Treiber installieren, dabei muss der Linux-user in lpadmin sein (auf einem Windows-Rechner ausfuehren):

runas /netonly /user:root "rundll32 printui.dll,PrintUIEntry /p /t3 /n \\SAMBA-SERVER\printername"

registrierte Druckertreiber eines Windows- oder Samba Servers auflisten:

rpcclient SAMBASERVER -U schuetzkl -c 'enumdrivers'

welcher Treiber ist einem bestimmten Drucker zugeordnet, und welche Dateien sind für diesen Treiber registriert:

rpcclient xitxjob4 -U schuetzkl -c 'getdriver "23zetn03-pcl6" 3' 

in Samba einen Treiber einem Drucker zuordnen:

rpcclient -U'root%xxxx' -c 'setdriver hplj2200 mydrivername' SAMBASERVER

Treiber fuer eine Liste von Druckern automatisiert setzen:

cat alte_bezeichnung.txt | cut -d " " -f 1|egrep "^22"|while IFS= read name; do echo $name;rpcclient -U'root%cupsadmin' -c "setdriver $name \"HP LaserJet 2200 Series PCL 6\"" xitxjob4; done

samba, nmbclient, wer ist Masterbrowser im Subnet?< /br>

nmblookup -M -- -

fuehrende nullen mit ausgeben mit bash

printf "%02d" $(expr 8 - 1)

rsync mit find

find . -name "whatever.*" -print0 | rsync -av --files-from=- --from0 ./ ./destination/

Bilder umbenennen nach dem Datum der Aufnahme

find . -depth -name "*.jpg"| while IFS= read f ; do jhead -nfb%Y-%m-%d_%H-%M-%S "$f"; done

Uhrzeit von Bildern verändern wenn Zeit der Kamera falsch war, hier +58 min

find . -depth -name "*.jpg"| while IFS= read f ; do jhead -ta+0:58 "$f"; done

das ganze nur für Bilder einer bestimmten Kamera

find . -depth -name "*.jpg"| while IFS= read f ; do if jhead "$f"|grep -iq panasonic; then jhead -ta+0:59 "$f"; else echo "andere Kamera";fi; done

Uhrzeit von mehreren Bildern ändern nach der Uhrzeit eines Bildes, von welchem die Uhrzeit bekannt ist

jhead -da2011:02:27/15:09-2011:02:28/04:14 b20110228T0*.JPG

Uhrzeit von einem Bild auf ein Anderes übertragen

jhead -te b2011-10-16_15-39-50.jpg panorama.jpg

Kernel kompilieren

# apt-get install build-essential bin86 kernel-package libqt3-headers libqt3-mt-dev wget
cd /usr/src
# wget -c http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.2.tar.bz2

# tar xvjf linux-2.6.18.2.tar.bz2
# ln -sf linux-2.6.18.2 linux

cd linux
# cp /boot/config-`uname -r` .config
# make xconfig
# time make-kpkg --initrd kernel_image kernel_headers --append-to-version=-pingflood

# dpkg -i *.deb

Intel G41 Integrated Grafik, Dualhead einschalten

xrandr --output VGA1 --left-of HDMI1

Debian Squeeze, Iceweasel/ Firefox, Java funktioniert nicht
Paket java6-plugin muss installiert sein. Datei ~/.java/deployment/deployment.properties editieren, folgendes einfügen:

deployment.javaws.jre.0.args=-Djava.net.preferIPv4Stack\=true

evtl. muss auch zuerst das gesamte Verzeichnis .java gelöscht werden, es wird beim Start von Iceweasel neu angelegt.

Bildergalerie mit allen Unterordnern erstellen

llgal  --li --exif --title "Galerie-Titel" --Pall --Ps -L --wx 800  --fe --sx 800 --sy 600

Filme umwandeln für Tevion md 82788 und Android

ffmpeg -i bionicle.avi -vcodec libxvid -r 20 -b 256k -s 320x240 -aspect 32x24 -acodec libmp3lame -ar 48000 -ab 20k  bionical.avi

Android

ffmpeg -i ./film.mkv -map 0:0 -map 0:1 -s 320x240 -vcodec libx264 -threads 2 -acodec aac -strict experimental -ac 1 -r 15 -ab 44100 -aspect 16:9 film.mp4

Zufallszahlen aus einem Bereich, dabei keine doppelt(z.B. bei Lotto)

#!/bin/bash                                                                                                                                                                                                                  
                                                                                                                                                                                                                             
numbers=()                                                                                                                                                                                                                   
echo "von?"                                                                                                                                                                                                                  
read von                                                                                                                                                                                                                     
echo "bis?"                                                                                                                                                                                                                  
read bis                                                                                                                                                                                                                     
echo "anzahl?"                                                                                                                                                                                                               
read noEntries                                                                                                                                                                                                               

if [ $(expr $bis - $von + 1) -lt $noEntries ]; then
        echo "Anzahl ist kleiner als Bereich"
        exit
fi

count=0
while [ $count -lt $noEntries ]; do
        random=$(($RANDOM % $noEntries +$von))
        case " ${numbers[@]} " in *" ${random} "*) continue ;; esac
        numbers[$count]=${random}
        let count++
done

Munin, SNMAgent, Windows Oerfmon, Leistungsindikatoren fehlenMit

lodctr /R "c:\WINDOWS\inf\804\Windows Workflow Foundation 3.0.0.0"\perfcounters.ini

werden diese wiederhergestellt (Pfad anpassen!).

dns2tcp, DNS-Tunnel

Einen NS-Eintrag für eine beliebige Domain (hier als Beispiel prolinuks.einedomain.de) registrieren, der auf den Hostname des Servers zeigt. Z.B. hier: http://freedns.afraid.org

Paket dns2tcp installieren. Konfiguration des Servers über /etc/dns2tcpd.conf:
listen = IPdesServers
port = 53
user = nobody
chroot = /tmp
domain = prolinuks.einedomain.de
resources = ssh:127.0.0.1:22

um sich an einem dns2tcp-Host anzumelden:

dns2tcpc -c -r ssh -l 8888 -z prolinuks.einedomain.de

dann in anderer Session:

ssh -p 8888 user@localhost

ssl Fingerprint von Webseite anzeigen lassen

openssl s_client -connect service.gmx.net:https -tls1 </dev/null  2>/dev/null   |sed -n /BEGIN/,/END/p  | openssl x509 -dates -fingerprint -md5  -noout

ssl Zertifikat von Webseite speichern

openssl s_client -showcerts -connect www.server.local:443 </dev/null 2>/dev/null|openssl x509 -outform PEM >www.server.local.pem

gphoto2 mit der Canon EOS 350D
Belichtungsreihe

for i in $(seq 18 3 31); do gphoto2 --set-config /main/camera/shutterspeed=$i.; gphoto2 --capture-image; done

dies war der erste Versuch.

mit --set-config muss der Wert angegeben werden, mit --set-config-index hingegen die Nummer des Wertes aus der Liste.
Die Werteliste, hier moegliche Belichtungszeiten, erhält man mit
gphoto2 --get-config /main/camera/shutterspeed
<strong>
</strong>

Serienaufnahme mit 10 Aufmahen (Frames) und 300 Sekunden Pause (Intervall) dazwischen (Zeitautomatik, manueller Fokus, ISO auf Auto, z.b. für einen Sonnenuntergang):
gphoto2 --capture-image-and-download -I 300 -F 10

Belichtungsreihe mit der Canon EOS 650 D, Bilder im lokalen Verzeichnis abspeichern

ISO sollte nicht auf Auto stehen.
for i in $(seq 5 3 20); do gphoto2 --set-config-index /main/capturesettings/shutterspeed=$i;gphoto2 --set-config-index /main/capturesettings/aperture=4 ; gphoto2 --capture-image-and-download --filename=serie${i}; done


Langzeitbelichtung, Kamrea-Settings: M, Fernbedienung. Bei Rauschunterdrückung ein kann die Berechnung der Kamera mehrere Minuten in Anspruch nehmen.
gphoto2 --set-config /main/imgsettings/iso=1 --set-config-index /main/capturesettings/shutterspeed=0 --set-config-index /main/capturesettings/aperture=0 --wait-event=2s --set-config /main/actions/eosremoterelease=4 --wait-event=500s --set-config /main/actions/eosremoterelease=3 --wait-event-and-download=30s

Windoof, Dienst remote neu starten
ja, auch das gibts hier :-)
Nach einem Deinstnamen suchen
sc \\rechnername query|find /i "Dienst_name"

Mit den Schaltern start, pause, continue und stop kann man den Deinstr steuern. Einen Befehl für den Neustart gibt es nicht, für diesen Zweck muss man stop und start kombinieren. Abhängige Dienste werden nicht gestoppt oder gestartet.

sc \\rechnername start "Dienst_name"

Perl, für Windoof ausführbare .exe erstellen

von CPAN PAR::Packer installieren
pp -o script.exe -f Bleach script.pl

"-f Bleach" sorgt dafür, dass das PerlScript nicht direkt gelesen werden kann (exe ist eigentlich eine zip-Datei)


Linux-Command IP

alle Interfaces anzeigen
ip a

nur IPv4 anzeigen
ip -4 a

nur ein bestimmtes Interface anzeigen
ip a show eth0

IP-Adresse konfigurieren
ip a add 10.0.0.10/24 dev eth0

broadcastadresse hinzufügen
ip a add brd 10.0.0.255 dev eth0

IP-Adresse von Interface löschen
ip a del 10.0.0.10/24 dev eth0

Status ändern
ip link set dev eth1 up
ip link set dev eth1 down

ARP-Cache anzeigen
ip n show

ARP-Cache löschen für eine bestimmte IP
ip -s -s n f 192.168.23.45

IP-Routen anzeigen lassen
ip r list


Anzahl Dateien im aktuellen Verzeichnis, ohne wc -l, geht schneller bei großen Verzeichnissen
set -- *
echo $#

Chromium, aktuellen Flashplayer aus Google Chrome nutzen google-chrome installieren, siehe http://www.howopensource.com/2011/10/install-google-chrome-in-ubuntu-11-10-11-04-10-10-10-04/ dann in /etc/chromium-browser/default folgendes als parameter hinzufügen:
--ppapi-flash-path=/opt/google/chrome/PepperFlash/libpepflashplayer.so --ppapi-flash-version=$(grep '"version":' /opt/google/chrome*/PepperFlash/manifest.json| grep -Po '(?<=version": ")(?:\d|\.)*')"


LVM, root Volume vergroessern, /usr/sbin/update-grub: error: Couldn't find PV pv1. Check your device.map.Devicemap von Grub neu erstellen:

grub-mkdevicemap

Daemontools, automatisches monitoring von Diensten, wichtigste commanods

Status eines bestimmten Dienstes
svstat /etc/service/dienstname

Dienst stoppen

svc -d /etc/service/dienstname

Dienst starten

svc -u /etc/service/dienstname

Dienst restarten

svc -du /etc/service/dienstname

reload, Signal HUP an Dienst senden

svc -h /etc/service/dienstname

das Logging eines Dienstes nach neukonfiguration restarten

svc -du /etc/services/dienstname/log

Prozessinformationen zu allen Prozessen, die auf einen Suchbegriff passen

pgrep -lf string

geöffnete Ports anzeigen
lsof -i | grep -e LISTEN
netstat -nlp
netstat natup

smbclient, Dateien recursiv auf einen Windows-Host kopieren
smbclient -U username -W domainname //servername/share -c "cd backup; lcd /home/username/files; prompt; recurse; mput *; exit;"

oder die angehngten Befehle von Hand abarbeiten

SVN

lokale Datei mit der aktuellen Datei im Repository vergleichen
svn diff filename -r head --diff-cmd diff

Dateirechte ändern, Datei ausführbar machen

svn propset svn:executable ON some_file.txt

Keycodes der Tastatur anzeigen
xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'

email senden mit bestimmtem Absender
echo "This is the main body of the mail" | mail -s "Subject of the Email" recipent_address@example.com -- -f from_user@example.com

Datei Zugriffsrechte, chmod, als Nummer anzeigen
stat -c "%a %n" Filename

Windows Powershell Ja, auch das braucht man ab und zu...
AD Gruppenmitglieder kopieren
Get-ADGroupMember "group1" | ForEach-Object {
  Add-ADGroupMember -Identity "group2" -Members $_
  Remove-ADGroupMember -Identity "group1" -Members $_
}

Remove-Zeile nur, wenn die Miitglieder verschoben werden sollen!
Mitglieder einer Gruppe in einer entfernten Domain
Get-ADGroupMember irgendnegruppe -Server "dc.domain.nil" -Credential "domain.nil\username"

AD-Module in alter Powershell nachladen
Import-Module ac*

noch ein Beispiel
Get-ADUser -SearchBase "OU=ADM,OU=Users,OU=Domain,DC=Domain,DC=nil" -Filter "enabled -eq 'true'" | ForEach-Object { Add-ADGroupMember -Identity "irgendnegruppe" -Members $_ }
Get-ADUser -SearchBase "OU=HQ,OU=Users,OU=Domain,DC=Domain,DC=nil" -Filter "enabled -eq 'true' -and department -eq 'Infrastructure'" | ForEach-Object { Add-ADGroupMember -Identity "irgendnegruppe" -Members $_ }

Dienste neu starten
Restart-service servicenamen*

Dienst auf entferntem Rechner neu starten
Get-Service -Name Transp* -ComputerName hqvm0398 | Set-Service -Status Running

Nicht laufende Dienste, die nicht disabled sind auf entferntem Rechner

Get-wmiobject win32_service -Filter "startmode != 'disabled' AND state != 'running' AND name like 'TC%' " -computername hqvm0063.in.tp.nil | select name,startmode,state


IO-waits
welche Disk
iostat -x 2 5

welcher Prozess
iotop
for x in `seq 1 1 10`; do ps -eo state,pid,cmd | grep "^D"; echo "----"; sleep 5; done


Disk Image mit mehreren Partitionen mounten
parted hda.img
   unit
   B
   print
   quit

mount -o loop,ro,offset=32256 hda.img /mnt/img


Postgres SQL

  • pg_lsclusters list configured clusters
  • pg_ctlcluster 9.3 dbirgendwas start start a configured cluster. DB version and clustername from the lscluster command
  • for each cluster there is a folder under /etc/postgresql/9.3/ (or whatever version is running)
  • create a new cluster (folder has to be empty):
su db{user}
/usr/lib/postgresql/9.5/bin/initdb -D /srv/db{user}/data/

Puppet
  • resource type:
    • user user
    • group user group
    • file specific file
    • package software package
    • service running service
    • cron scheduled cron job
    • exec external command
    • host host entry
  • description of a resource type:
    • puppet describe user | less
  • execute a bit of Puppet code
    • puppet apply -e "user { 'galatea': ensure => present, }"
    • puppet apply --noop web/examples/init.pp
  • edit attributes of an object
    • puppet resource -e user galatea
  • validate code:
    • puppet parser validate cowsayings/manifests/cowsay.pp
  • print module path
    • puppet master --configprint modulepath
  • check the state of a resource
    • puppet resource package ntp
    • puppet resource service ntpd
    • puppet resource file /etc/ntp.conf
    • puppet resource user dana
  • generate and display a graph for a manifest:
    • generate the graph
      • puppet apply sshd/examples/init.pp --noop --graph
    • show the path to the graph folder
      • puppet config print graphdir
    • make a png of this .dot file
      • dot -Tpng /opt/puppetlabs/puppet/cache/state/graphs/relationships.dot -o /var/www/quest/relationships.png
  • Puppet Schulung
    • display sort ordering of catalog
      • puppet config print ordering
      • puppet config set ordering random/manifest/title-hash
    • usefull VIM plugins:
      • syntastic
      • tabular
      • snipmate
      • puppet-vim
      • airline
    • debugging output
      • puppet apply -d
    • generate a skeleton of a module
      • puppet module generate
    • hint: import "node/*.pp" will not work in puppet 4
    • puppet code testen
      • puppet parser validate init.pp
      • puppet-lint -f init.pp
        • gem install puppet-lint, if not installed yet
      • rvm.io, to test ruby code. Download get.rvm.io and exec to install
        • generate Gemfile (gidf)
    • Docus: http://docs.puppet.com, youtube puppetlabs,
    • to genarate docu atomaticaly
      • yard, puppet-strings
      • sudo puppet resource package puppet-strings ensure=present provider=gem
      • puppet strings (in modul directory)

rotate jpeg pictures

exiftran -a -i *.jpg


tool to manage many different config files

augeas


vagrant

  • fuer debian stretch alle vagrant-Pakete und VirtualBox installieren
  • mkdir ~/vagrant && cd ~/vagrant
  • apt-get install ruby2.3-dev zlib1g-dev winrm ruby-specinfra
  • vagrant plugin install winrm
  • vagrant plugin install winrm-fs
  • vagrant plugin install virtualbox
  • vagrant plugin install lxc
  • vagrant box add puphpet/debian75-x64
  • dann Vagrantfile editieren
    • config.vm.box = "puphpet/debian75-x64" (aendern)
    • config.vm.provider "virtualbox" do |vb| (# entfernen)
    • vb.gui = false (hinzufuegen, bei Zeile end # entfernen)
  • vagrant up
  • vagrant ssh default


Topic attachments
I Attachment Action Size Date Who Comment
Festprogramm.pdfpdf Festprogramm.pdf manage 71.7 K 20 Jun 2010 - 16:20 ManfredMueller  
Maihock_12_Einteilung.pdfpdf Maihock_12_Einteilung.pdf manage 15.3 K 26 Apr 2012 - 05:02 ManfredMueller Maihock Arbeitsplan
PF11_Brandw-Plan_ED01.docdoc PF11_Brandw-Plan_ED01.doc manage 75.0 K 03 Jun 2011 - 14:21 ManfredMueller Dienstplan Brandwache Pfingsten 2011
Term_2009_02.pdfpdf Term_2009_02.pdf manage 10.0 K 02 Feb 2009 - 14:24 ManfredMueller Dienstplan aktive Abteilung
Topic revision: r99 - 08 Nov 2016, KlausSchuetz
 

This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback