<?xml version="1.0"?>
<?xml-stylesheet type='text/xsl' href='linux_tipps.xsl'?>

<database title="Linux Tipps und Tricks. (c) by ChrM 1999-2003">
   <categories>
      <item color="255,0,0">System</item>
      <item color="0,255,0">Netzwerk</item>
      <item color="0,0,255">Programme</item>
      <item color="0,255,255">Entwicklung</item>
   </categories>
   <card title="GnuPG">
      <category>Programme</category>
      <link text="GnuPG-Homepage" url="http://www.gnupg.org"/>
      <content>
	 <l>GnuPG - wichtige Komanndos</l>
	 <l>* Schl&#252;sselpaar erzeugen:</l>
	 <l bold="1">gpg --gen-key</l>
	 <l>* Schl&#252;ssel signieren:</l>
	 <l bold="1">gpg --sign-key email@mensch.xy</l>
      </content>      
   </card>
   <card title="Swap-File anlegen">
      <category>System</category>
      <content>
	 <l>Zun&#228;chst eine Datei erstellen:</l>
	 <l bold="1">dd if=/dev/zero of=swapfile bs=1024 count=65536</l>
	 <l>dann</l>
	 <l bold="1">mkswap swapfile</l>
	 <l>Und schlie&#223;lich swapon ausf&#252;hren oder in die fstab eintragen.</l>
      </content>      
   </card>
   <card title="ImageMagic Funktionen">
      <category>Programme</category>
      <content>
	 <l>Screenshot:</l>
	 <l bold="1">import -window root pause 0 desktop.jpg</l>
      </content>      
   </card>
   <card title="ISO-Image mounten">
      <category>System</category>
      <content>
	 <l bold="1">mount -o loop -t iso9660 [isofilename] [mountpoint]</l>
      </content>      
   </card>
   <card title="jslaunch - Befehle per Joystick ausf&#252;hren">
      <category>Programme</category>
      <link text="Bericht zu jslaunch" url="http://www.linuxnetmag.com/de/issue3/m3launch1.html"/>
      <content>
	 <l>Der Linux-Kernel ist frei von z&#228;hlbaren Abst&#252;rzen, leider aber nicht der X-Server (je nach Grafikkarte).
	 Wenn dieser h&#228;ngt, kann man sich &#252;ber telnet einloggen und ihn
	 killen. Doch wohl die wenigsten Home-PC sind an ein Netzwerk angeschlossen. Also hilft hier nur noch der
	 Griff zum Reset-Knopf, welcher nicht ganz ungef&#228;hrlich ist.</l>

	 <l>Da bei einem Absturz des X-Servers alle anderen Prozesse noch lauff&#228;hig sind, kann man jedoch mit einem
	 Hintergrundprogramm beliebige Kommandos per Joystick
	 ausf&#252;hren. Denn dieser ist bei einem Absturz des X-Servers nicht blockiert wie Maus und Tastatur.</l>

	 <l>Das rettende Programm heisst jslaunch,
	    es ben&#246;tigt noch nicht einmal das Kernel-Modul f&#252;r den Joystick.</l>

	 <l>Man startet es am besten bei jedem Systemstart automatisch, indem man es ihn die boot.local eintr&#228;gt.
	 Bei mir sieht das so aus:</l>
	 <l bold="1">Datei /sbin/init.d/boot.local</l>
	 <l>-----------</l>
	 <l>#Letzte Zeile in boot.local</l>
	 <l>#load jslaunch daemon, will kill X when all JS-buttons are pressed</l>
	 <l>/usr/local/bin/jslaunchd &amp;</l>
	 <l>-----------</l>
	 <l>Damit dies auch funktioniert, habe ich mit </l>
	 <l bold="1">ln -s /usr/local/bin/jslaunch /usr/sbin/jslaunch</l>
	 <l>einen Symlink erstellt, weil beim Booten /usr/local/bin nicht im $PATH ist. Dazu geh&#246;rt auch noch ein
	 config-file:</l>
	 <l bold="1">Datei /etc/jslaunchd.conf</l>
	 <l>-----------</l>
	 <l># run "killall X" when buttons 1,2,3 and 4 are pressed:</l>
	 <l>run 1234 killall X</l>
	 <l># set lockfile to /var/lock/jslaunch (this is the default)</l>
	 <l>lock /var/lock/jslaunch</l>
	 <l>-----------</l>
	 <l>Mit dieser Einstellung beende ich durch Dr&#252;cken aller 4 Joystickkn&#246;pfe den X-Server und alle Programme, die
	 ihn benutzten.</l>      
      </content>      
   </card>
   <card title="WGet - Websites spiegeln">
      <category>Programme</category>
      <content>
	 <l>Um die komplette Site ab der angegebenen Datei nach unten herunter zu laden:</l>
	 <l bold="1">wget -m -np http://www.website.org/files/file.html</l>
      </content>      
   </card>
   <card title="Dateien umbenennen / Inhalt &#228;ndern">
      <category>System</category>
      <content>
	 <l>Leerzeichen im Datainamen durch _ ersetzen:</l>
	 <l bold="1">rename 's/ /_/g' *.mp3</l>
	 <l></l>
	 <l>Textpassagen innerhalb einer Datei ersetzen</l>
	 <l bold="1">sed 's/zu-suchende-zeichenkette/ersatz-text/g' meine-datei >neue-datei-mit-ersetztem-text</l>
      </content>      
   </card>   
   <card title="S/MIME Zertifikate in gpgsm importieren">
      <category>System</category>
      <content>
	 <l>Die Import-Funktion von gpgsm ist ein wenig eingeschraenkt. Sie erlaubt es nicht
	    verschluesselte pkcs#12 Key-Pakete direkt zu laden</l>
	 <l>Um die Pakete zu entschluesseln kann OpenSSL zur Hilfe genommen werden.</l>
         <l></l>
	 <l>Zuerst muessen die Keys extrachiert werden (zwischenschritt ueber das PEM-Format):</l>
	 <l bold="1">openssl pkcs12 -in certbundle.p12 -out certbundle.pem -nodes</l>
         <l></l>
	 <l>Jetzt werden die extrachierten Keys wieder in das PKCS#12 Format extrachiert:</l>
	 <l bold="1">openssl pkcs12 -in certbundle.pem -export -out certkey.p12 -nocerts -nodes</l>
         <l></l>
	 <l>So umformatierte private Keys koennen nun mit gpgsm importiert werden:</l>
	 <l bold="1">gpgsm --call-protect-tool --p12-import --store certkey.p12</l>
         <l></l>
	 <l>Ob die Keys erfolgreich importiert werden konnten, laesst sich damit ueberpruefen:</l>
	 <l bold="1">gpgsm --list-secret-keys</l>
      </content>      
   </card>
   <card title="Video kodieren mit mencoder">
      <link text="Skript encode2divx.sh (automatisiert alle Abl&#228;ufe)" url="http://chrm.info/linux/software/encode2divx.sh"/>
      <link text="MPLayer / MEncoder" url="http://www.mplayerhq.hu"/>
      <link text="LAME mp3-Encoder" url="http://lame.sourceforge.net/index.php"/>
      <category>Programme</category>
      <content>
          <l>Das Ergebnis ist immer ein DivX4/5 Video in ffmpeg Qualitaet ;-)</l>
          <l></l>
          <l bold="1">Rippen und kodieren (synchron)</l>
          <l></l>
          <l>Damit wird ein Track (hier: #1) ausgelesen und in zwei Durchlaeufen kodiert.</l>
          <l bold="1">$ mencoder dvd://1 -aid 128 -oac mp3lame -lameopts br=128:cbr -ovc frameno -o frameno.avi</l>
          <l bold="1">$ mencoder dvd://1 -sws 2 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=829 -vf scale -zoom -xy 540 -o OUTPUTFILE.avi</l>
          <l></l>
          <l></l>
          <l bold="1">Kodieren vob -> divx multilingual</l>
          <l></l>
          <l>1.) Encoden:</l>
          <l bold="1">$ mencoder -sws 2 -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=829 -o FILENAME_01.avi FILENAME-001.vob -vf scale -zoom -xy 540 -ffourcc DIVX</l>
          <l>2.) Audio holen:</l>
          <l bold="1">$ mplayer -vo null -aid 129 -ao pcm:file=lang-en.wav FILENAME-001.vob</l>
          <l>3.) Audio encoden:</l>
          <l bold="1">$ lame lang-en.wav lang-en.mp3</l>
          <l>4.) Zweite Spur muxen:</l>
          <l bold="1">$ avimerge -i FILENAME_01.avi -p lang-en.mp3 -o FILENAME_01_DE_EN.avi</l>
          <l></l>
          <l></l>
          <l bold="1">Kodieren MPEG-TS -> divx</l>
          <l></l>
          <l bold="1">$ mencoder -sws 2 -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=829 -o OUTPUTFILE.DIVX.avi INPUTFILE.TS -vf scale -zoom -xy 528 -ffourcc DIVX</l>
      </content>      
   </card>
   <card title="CAPS-Lock deaktivieren / als CTRL definieren">
	   <category>System</category>
	   <content>
		   <l>Die Caps-Lock Funktion wird selten benutzt ist wirkt sich eher stoerend aus</l>
		   <l>Diese laesst sich unter dem X-Window-System deaktivieren, indem in der Konfigurationsdatei (/etc/X11/xorg.conf) der Bereich "InputDevice" um folgenden Eintrag erweitert wird:</l>
		   <l bold="1">Option  "XkbOptions"    "ctrl:nocaps"</l>
		   <l></l>
		   <l>Benutzt man oft die Ctrl-Taste, so laesst sich die Caps-Lock auf diese mappen. Der Eintrag im Bereich "InputDevice" sieht dann folgendermassen aus:</l>
		   <l bold="1">Option  "XkbOptions"    "ctrl:swapcaps"</l>
	   </content>
   </card>
</database>
