Kategorieauswahl

bash

Bash Skripting, Schulung, Training, Tipp

Flashplayer bei Ubuntu 11 (Natty Narwal) funktioniert nicht mehr nach Aktualisierung auf Firefox 6

Ich mag zwar kein Flash eben aus genau diesem Grund, dass das Ding immer nur 2 Wochen funktioniert und dann 1 Monat nicht mehr und X Sicherheitslücken mitbringt, aber hier die Lösung (bash Kommandozeile) für die Leid geplagten, die doch noch vereinzelte Websiten mit Flash ansurfen:

sudo apt-get purge flashplugin-installer flashplugin-nonfree gnash

Ja, Sie müssen das Root-Kennwort eintippen! Dabei wird das aktuelle Flash-Plugin gelöscht (funktioniert ja eh nicht).

sudo updatedb

Weil es so viel Spaß macht, gleich noch einmal ;-). Damit wird für den nachfolgenden Befehl die locate Datenbank aktualisiert.

locate libflashplayer.so

Der Befehl sucht nach irgendwelchen Überbleibseln. Alles was gelistet wird bitte löschen.

sudo apt-get install --reinstall flashplugin-installer

Damit wird die funktionierende Version eingespielt (natürlich noch Mal die Frage nach der netten Tante Root). Fragt mich bitte nicht warum das jedes Mal so ein Akt mit dem Adobe-Schrott sein muss. Liebe Websiteprogrammierer, wenn Ihr das hier zufällig lest, seid so gut und entfernt die diesen Adobe Müll von Eurer Seite. Ihr könnt doch Programmieren, oder? Nehmt Silverlight/Moonlight, oder HTML 5 aber bitte schmeißt endlich den Flash von Eurer Seite! Der macht nur Ärger. Selbst unter Windows musste man ewig auf eine 64-Bit Version warten. Nur inkompetente Mausschubser erstellen noch Websites mit Flash, weil sie es nicht besser können!

Shellscripte und Perl auf dem KDE 4 Desktop ausführen lassen

Damit Shellscripte (bei Bash z.B. Dateien mit der Endung .sh) beim Anklicken auf dem Desktop nicht zum Bearbeiten geöffnet werden, sondern ablaufen müssen Sie das Programm systemsettings (klick auf Systemeinstellungen) aufrufen. Dort findet man gleich in der ersten Reihe den Eintrag Dateizuordnungen. Unter application finden Sie den Eintrag x-shellscript. Bei Rangfolge der zugeordneten Anwendungsprogramme klicken Sie auf Hinzufügen und geben Sie /bin/bash in die weiße Zeile ein. Bestätigen Sie mit OK. Mit dem Nach oben Knopf sorgen Sie nun noch dafür, dass das öffnen mit der Bash bevorzugt geschieht.

Genauso gut können Sie das natürlich auch mit Perl machen. Nur statt x-shellscript wählen Sie den Knoten x-perl aus und statt /bin/bash tragen Sie /usr/bin/perl ein.

Unter Linux Aufgaben zeitgesteuert durchführen

Es gibt 3 Möglichkeiten etwas zu einer bestimmten Uhrzeit oder einem bestimmten Datum unter Linux ausführen zu lassen. Dies sind cron, anacron und at.

  • Cron führt Aufgaben zu einem bestimmten Zeitpunkt wiederkehrend aus.
  • Anacron macht das Gleiche mit dem kleinen aber feinen Unterschied, dass Jobs (Aufgaben) bei ausgeschaltetem PC nachgeholt werden sobald der PC wieder eingeschaltet ist. Bei cron fällt ein Job bei ausgeschaltetem PC einfach unter den Tisch.
  • At hingegen macht den Job zu einem bestimmten Zeitpunkt und fertig – keine Wiederholungen.

Für alle drei gibt es wie für andere Dämonen (Dienste) auch *.allow und *.deny (Beispiel: cron.deny) im /etc Verzeichnis. Dort trägt man Benutzer oder Gruppen ein die den Dienst entweder explizit nutzen (allow) oder eben nicht benutzen (deny) dürfen. Ich kann also einer Gruppe von Benutzern erlauben (allow) den Dienst zu verwenden, aber einen Benutzer aus der Gruppe (deny) explizit ausschließen.

Cron

Für cron gibt es die Datei /etc/crontab mit diesem Aufbau:

Minuten Stunden Tage Monate Wochentag Benutzer Befehl

Beispiel: 30 6 * * 1-5 root script.sh

Dieser Eintrag würde während der Woche (1-5 in Spalte 5: Montag=1,Dienstag=2…Freitag=5), aber nicht am Wochenende ein Script Namens script.sh als Benutzer root jeden Morgen um 6:30 Uhr unabhängig (wegen dem * in Spalte 3 und 4) vom Datum (Tag oder Monat) ausführen. Um etwas 1/4 stündlich ausführen zu lassen wären auch die folgenden beiden Einträge machbar:

0,15,30,45 * * * * root script.sh

*/4 * * * * root script.sh

Selbstverständlich braucht der angegebene Benutzer auch das ausführen Recht auf die angegebene Datei.

Bei den meisten heutigen Distributionen gibt es bereits Verzeichnisse wie cron.daily oder cron.hourly usw. in /etc. Da braucht man nur noch sein Script rein zu kopieren ohne dass man mit cron groß rumkonfiguriert.

Normal sterbliche Benutzer (nicht root) selbst haben auch ohne Zugriff auf diese Dateien die Möglichkeit cron zu nutzen. Dafür gibt es das Verzeichnis /var/spool/cron/tabs/Benutzer wo jeder seine eigenen Cronjos basteln kann. Alternativ kann man auch das command crontab verwenden um die Jobs anzulegen.

Anacron

Für anacron gibt es die Datei /etc/anacrontab (bei SuSE sucht man dies vergeblich – kann man nur von Sourceforge als Quellcode kompilieren und installieren).

Beispiel: 7 5 Name script.sh

Das script namens script.sh wird alle 7 Tage ausgeführt. Die 5 bedeutet, dass der Job wenn er fällig ist (seit 7 Tagen nicht gelaufen) um 5 Minuten verzögert wird. Stellen Sie sich vor der PC war einen Monat aus und nun starten 50 Jobs auf einmal. Daher sollte man die Jobs mit unterschiedlichen Verzögerungsintervallen ausstatten um den PC nach dem langen Winterschlaf nicht gleich zu überfordern. Name ist der Name unter dem der Job geführt wird und kann beliebig gewählt werden (es ist nicht der Name der Benutzers unter dem der Job ausgeführt wird wie bei cron!).

At

at ist etwas seltsam in der Verwendung, aber trotzdem ganz brauchbar.

Beispiel: echo ’shutdown -h -t min 2′ | at 12:00

Um 12:00 Uhr wird der Befehl shutdown (muss in ein echo verpackt und per Pipe übergeben werden) ausgeführt. shutdown wiederum ist durch den Parameter -t min 2 angewiesen noch 2 Minuten zu warten. Also wird der Computer bei diesem Befehl um 12:02 Uhr heruntergefahren. Wenn Sie längere Romane an Befehlen schreiben möchten können Sie auch wie folgt vorgehen:

at 12:00 2011-11-23 << EOF

echo „Happy Birthday“ | wall

EOF

Am 23.11.2011 um 12:00 Uhr würde ich also den PC veranlassen mir zum Geburtstag zu gratulieren. Zugegeben, das Beispiel wäre besser für cron oder anacron geeignet, da es sich (hoffentlich 😉 um ein wiederkehrendes Ereignis handelt.

Linux und Swap

So lange Linux im RAM arbeiten kann sind auch virtuelle Computer z.B. mit VMware super schnell im Vergleich zu Hyper-V. Sobald allerdings geswappt werden muss kann es zu einer echten Geduldsprobe werden. Eine komprimierte RAM-Disk kann dabei auf Mehrkernsystemen weiter helfen. Alle nachfolgenden Schritte sollten Sie als Benutzer root durchführen.

Installieren Sie dazu zunächst das Paket compcache, falls es noch nicht auf Ihrem PC ist. Bei Ubuntu ist es meistens schon mit an Bord, während bei SuSE (zum installieren auf der Kommandozeile zypper in compcache eintippen) dies in der Regel fehlt.

Jetzt müssen wir nur noch irgendwelche Befehle finden um das Ganze auch nutzen zu können. Die Linux Cracks mögen meine etwas unkonventionelle Beschreibung bitte verzeihen und Verbesserungsvorschläge unterbreiten. Ich habe im Internet keine besseren Anleitungen gefunden. In meinem System sind 4 Kerne und 4 GB RAM. Daher zwacke ich max. 512 MB für RAMdisks ab. Hat man mehrere Kerne sollte für jeden Kerne eine eigene RAMdisk angelegt werden, damit die Kerne sich nicht um den Zugriff auf das Swapdevice prügeln. Mein Vorschlag an dieser Stelle ist, tragen Sie die folgenden Zeilen in Ihre /etc/init.d/boot.local Datei ein:

modprobe ramzswap num_devices=4        # um das Kernelmodul zu laden und ihm klar zu machen, dass 4 Swapdrives angelegt werden
rzscontrol /dev/ramzswap0 -i -d 128000   # legt 128KB für die 1. RAM-Disk zur Seite
rzscontrol /dev/ramzswap1 -i -d 128000   # legt noch einmal 128KB für die 2. RAM-Disk zur Seite
rzscontrol /dev/ramzswap2 -i -d 128000   # …und so weiter…
rzscontrol /dev/ramzswap3 -i -d 128000   # bis ich schliesslich mein 512 MB zusammen habe.
swapon -p -1 /dev/ramzswap0   # hier nachfolgend werden nun die vorbereiteten RAMdisks als Swapdevices mit gleicher Priorität zugewiesen
swapon -p -1 /dev/ramzswap1
swapon -p -1 /dev/ramzswap2
swapon -p -1 /dev/ramzswap3   # bis hier hin.
swapon -p -100 /dev/sda6   # der schaltet noch die Festplattenreserve dazu, wenn mal alle Stricke reissen. Allerdings mit einer Priorität von -100. Das hat zur Folge, dass er erst die RAMdisks verwendet und erst 2. rangig die Festplatte.

Wenn Sie 8 Kerne haben legen Sie eben 8 RAM Disks an und bei mehr Speicher nehmen Sie entsprechend ein Vielfaches des hier angegebenen RAM. Mehr als 15% des RAM-Speichers würde ich aber nicht zuordnen. Sollten Sie Ihre CPUs aber sowieso schon am Anschlag fahren, wird dieser Tipp leider nicht weiterhelfen, da bleibt nur mehr RAM-Speicher einzubauen.

Viel Spaß und Erfolg mit Ihrem schnelleren System!

IPv6 Privacy Extensions

Die letzten 64 Bit der IPv6 Adresse sind die sogenannte Interface-ID. Diese Interface-ID wird aus der global eindeutigen MAC-Adresse einer Netzwerkkarte gebildet. Daher ist jeder PC und mehr oder weniger auch dessen Benutzer über IPv6 eindeutig im Internet anhand seiner Adresse zu identifizieren. Durch RFC 4941 kann man die „Privacy Extensions“ benutzen damit genau das nicht passiert.

Handys:

Bei iPhone, als auch Android Handys kann man die IPv6 Privacy Extensions nicht aktivieren (Stand heute: iOS 4 und Android bis 2.x und 3 wohl auch nicht.

Windows:

Bei Windows Clients ab XP sind die Privacy-Extensions automatisch aktiviert, nur bei Servern ab 2003 nicht. Für ältere Betriebssysteme stellt sich die Frage mangels IPv6 Unterstützung sowieso nicht. Daher haben Sie sich vielleicht schon immer gewundert, warum Sie nicht die MAC-Adresse in Ihrer IPv6-Adresse wieder finden, wenn das doch überall so geschrieben steht. Um bei Windows den Privacy Status abzufragen geben Sie an einer administrativen Kommandozeile (Im Suchfeld des Startmenüs cmd tippen und Strg+Shift+Enter bestätigen!):

netsh interface ipv6 show privacy

ein.

Mit den zwei Befehlsketten:

netsh interface ipv6 set global randomizeidentifiers=disabled

und

netsh interface ipv6 set privacy state=disabled

können Sie die Privacy Extensions ausschalten und bekommen demzufolge dauerhaft die MAC-Adresse im suffix der IPv6 Adresse. Raten Sie doch einmal was state=enabled macht ;-). Gerne können Sie auch die Mac gegen die IPv6 Adresse einmal mit ipconfig /all überprüfen.

Wenn jemand eine Idee hat, wie man das über Gruppenrichtlinien oder über die grafische Oberfläche regeln kann bitte einen Kommentar schreiben.

Linux:

Auf die Schnelle:

sysctl net.ipv6.conf.eth0.use_tempaddr=2; ifdown eth0; ifup eth0

Dauerhaft:

Am Ende der Datei /etc/udev/rules.d/70-persistent-net.rules tragen Sie die folgenden Zeilen ein:

SUBSYSTEM==“net“, ACTION==“add“, DRIVERS==“?*“, ATTR{dev_id}==“0x0″, ATTR{type}==“1″, KERNEL==“eth*“, RUN+=“sysctl net.ipv6.conf.eth0.use_tempaddr=2″

Sollten Sie noch eine WLAN0 Schnittstelle haben machen Sie dafür genau dasselbe, nur statt eth0 tragen Sie wlan0 beim jeweiligen Befehl ein.

Bestimmte Dateien unter Linux mit Abfrage kopieren

Will man nur bestimmte Dateien unter Linux kopieren kann man sich über den find Befehl helfen:

find . -name „*.jpg“ -exec cp ‚{}‘ /Zielverzeichnis \;

Der Punkt nach find bedeutet, dass er das aktuelle Verzeichnis durchsuchen soll. Mit -name „*.jpg“ grenzt er die Dateien auf die Dateinamenerweiterung jpg ein (also Bilder). Nach was man alles filtern kann verrät „man find“. Das hier alles aufzulisten würde den Rahmen dieses kurzen Artiekls sprengen. Durch -exec cp ‚{}‘ wird das was er durch den Filter gefunden hat in das Zielverzeichnis kopiert. Ergänzt man das Ganze noch um ein -ok fragt er bei jeder Datei einzeln nach, ob die auch kopiert werden soll (kann bei 500 Bildern eher störend wirken ;-).

find . -name „*.jpg“ -ok -exec cp ‚{}‘ /Zielverzeichnis \;

Source RPM installieren

Hintergrund

Manche Pakete für Linux gibt es nicht für die eigene Distribution, aber vielleicht gibt es von der Software sogenannte SRPM (Source RPMs). Lädt man diese herunter muss man den Quellcode selbst compilieren (von der Programmiersprache C in ausführbare Dateien übersetzen) und anschließend installieren (an die entsprechenden Stellen kopieren, damit sie vom Betriebssystem gefunden werden).Bei den Befehlen in diesem Artikel bitte wie bei Linux üblich auf Groß- u. Kleinschreibung achten!

Vorbereitung

Folgende Pakete müssen vorher installiert werden: Rpmbuild,Glibc-Devel,Make und Binutils. Ggf. noch weitere. Das Ganze kann bei den folgenden beiden Betriebssystemen Fedora und SuSE relativ schnell und einfach geschehen. Geben Sie die entsprechenden Befehle in der Shell ein, dabei werden Sie nach dem root-Kennwort gefragt. Manche SRPMs benötigen noch weitere Pakete. Welche das sind kann auch auf beiden Plattformen unterschiedlich in Erfahrung gebracht werden.

Fedora

Entwicklungsumgebung installieren: su -c ‚yum install @buildsys-build rpmdevtools‘

Notwendige Zusatzpakete installieren lassen: su -c ‚yum-builddep namedesSRPMpakets

SuSE

sudo zypper in -t pattern devel_rpm_build

Notwendige Zusatzpakete in Erfahrung bringen: rpm -qp -requires namedesSRPMpakets

Diese Pakete sollte man dann erst mit: sudo zypper in zurückgegebeneNamenausvorangegangenemBefehl installieren.

SRPMS übersetzen

Jetzt wird’s einfach! Um die SRPMS übersetzen zu lassen nur noch den Befehl: rpmbuild –rebuild NamedesSRPMPakets eintippen. Damit wird dann ein ganz normales RPM Paket erstellt. Wie es sich nennt sollte nach Abschluss des vorangegangenen Befehls angezeigt werden. Jetzt muss es nur noch installiert werden: rpm -Uvh PfadundNamedeserstelltenRPMPakets