COLOSSUS
AdministratorGNUltra
|
Hallo zusammen! Da ich immer wieder gerne ein paar laestige Aufgaben automatisiere, meist mithilfe der bash, hab ich mir gedacht, ich koennte hier eine kleine (Shell-)Scriptsammlung an den Start bringen - wobei jeder herzlich dazu eingeladen ist, selbst etwas beizutragen. Sprachlich soll alles, was interpretiert ist, und auf UNIXoiden Systemen laeuft, erlaubt sein. Eventuell bekannte Bugs bitte im Code der Skripte vermerken. usechk (01-06-2006) Fuer Gentoo-User ein (eigentlich auch als Oneliner abhandelbares, aber trotzdem ) kleines Skript, um zu ueberpruefen, ob in der /etc/make.conf nicht vielleicht Bogus-USE-Flags gesetzt wurden, die gar nicht im aktiven Profile vorhanden sind. Zum Download gibt es das Script hier: http://johannes.truschnigg.info/code/usecheck.sh.aschttp://johannes.truschnigg.info/code/usecheck.shgetlinks (01-31-2006) Wer seinen Browser gerne frei von unnoetigen Plugins haelt, die ungefragt Videos, Sounds und anderen Schnickschnack abspielen, kennt das Problem mit Seiten, die online multimedialen Content anbieten, wie z. B. http://www.putfile.com. Moechte man naemlich trotzdem an ein Video kommen, das in den Untiefen der Page durch einen Link oder gar einen <embed>-Tag verborgen liegt, gilt es, haendisch durch den Quelltext der Seite zu suchen. Deshalb habe ich ein Script begonnen, das diesen muehseligen Vorgang so gut wie moeglich automatisiert. Bis jetzt ist es noch nicht sonderlich einfallsreich, und scheitert sicher an einigen besonders kruden URLs, aber es duerfte sich dennoch schon jetzt als brauchbar erweisen. Zum Download gibt es das Script hier: http://gnulords.org/~colo/src/getlinks.sh.asc http://gnulords.org/~colo/src/getlinks.shcountprocs (08-06-2007) Im Zuge der Realisierung einer Monitoring-Aufgabe (zwecks Debugging von mod_fcgid) eines Apache2-Webservers mit suEXEC musste ich eine Moeglichkeit finden, festzustellen, wie viele Prozesse eines Namens X welche UID gerade in der run queue hat. `countprocs.sh` erledigt das; erforderlicher Parameter ist ein regulaerer Ausdruck, der den fraglichen Programmnamen matcht. Zum Download gibt es das Script hier: http://johannes.truschnigg.info/code/countprocs.sh.aschttp://johannes.truschnigg.info/code/countprocs.sh
|
Marcellus
OC Addicted
|
Man merkt gleich, dass es einen haufen leute gibt, die sich auch mit dem thema befassen. Ich hab begonnen ein e-book über shellscripting zu lesen, kenn mich allerdings noch nüsse aus. Aber mal ein skript, bei dem ich halbwegs weis was es tun soll zu lesen ist doch recht angenehm.
Gute idee, vllt werd ich auch bald was beitragen können
|
issue
Rock and Stone, brother!
|
so, hier mal mein erstes selbergemachtes script... dient zum abspielen von .netdemo files direkt per GUI leider pack ichs bisweilen nur, dass es mit 1 mod funzt, im script steht q4max drinnen http://mitglied.lycos.de/frog1/etc/q4/demo.sh
|
that
Hoffnungsloser Optimist
|
Den Anfang macht meine neueste Kreation, "xextract". Gedacht als eine Art generisches CLI-frontend fuer Entpacker versteht es sich zur Zeit auf die Formate .tar, .gz, .bz2, .rar und .zip. Ah, also sowas wie "unp" (emerge app-arch/unp), nur dass letzeres tar[.gz,.bz2], gz, bz2, Z, ar/deb, rpm, shar, rar, arj, zip, LHa, cab, ace, tnef, uu (mail, news), mime, hqx, sea, zoo, pmd, cpio, afio und lzop unterstützt.
|
COLOSSUS
AdministratorGNUltra
|
Ja, nur dass unp iirc ein Perl-Script ist.
|
Marcellus
OC Addicted
|
Ich hab ein problem mit einem shellscript das ich geschrieben hab, vorerst will ich noch anmerken, dass ich ein skriptkiddie bin und das ding bei weitem nicht so funktioniert wie es sollte. Das ding soll meinen printserver in der schule zuverlässig außerhalb des unterrichts abdrehen, tuts aber nicht #! /bin/bash if date | grep Mo >> /dev/null then HOUR=14 MIN=55 elif date | grep Di >> /dev/null then HOUR=15 MIN=55 elif date | grep Mi >> /dev/null then HOUR=13 MIN=15 elif date | grep Do >> /dev/null then HOUR=16 MIN=35 elif date | grep Fr >> /dev/null then HOUR=13 MIN=15 elif date | grep Sa >> /dev/null then shutdown -hf now -t 300 & elif date | grep So >> /dev/null then shutdown -hf now -t 300 & fi RHOUR=`date +%H` # REAL HOUR & REAL MIN RMIN=`date +%M` if ( $HOUR >= $RHOUR || ( $HOUR == $RHOUR && $MIN >= $RMIN )) || ( $RHOUR <= 7 || ( $RHOUR == 7 && $RMIN <= 40 )) #irgendas an der zeile passt nicht then shutdown -hf now -t 300 & else shutdown -hf $HOUR:$MIN & fi Wenn ich das ding ausführe will er sich innerhalb von 5 min abdrehen, deswegen nehm ich an, dass die zeile mit dem vergleich der zeiten irgendwie nicht passt, beim ausführen gibt er auch paar fehlermeldungen aus ich hab echt 0 ahnung was ich da machen soll. Ich bin für alle anregungen dankbar tia
|
that
Hoffnungsloser Optimist
|
beim ausführen gibt er auch paar fehlermeldungen aus ich hab echt 0 ahnung was ich da machen soll.
Ich bin für alle anregungen dankbar tia Hier kommt die ultimative Anleitung "Was tun, wenn ein von mir geschriebenes Programm/Script nicht funktioniert": 1. Fehlermeldungen verstehen 2. Fehler finden 3. Fehler beheben OK, mehr Details: 1.1. Fehlermeldungen in der Hilfe oder im Internet finden 1.2. Erklärungen lesen 1.3. Erklärungen verstehen 2.1. Script zum Test vorbereiten, z.B. "echo " vor "shutdown" schreiben und ausprobieren, was ausgeführt werden würde 2.2. Fehler eingrenzen: Zeilen löschen und das Script so klein wie möglich machen, so dass der Fehler noch auftritt 2.3. Situation vereinfachen und zum Test Variablen auf bestimmte Werte setzen 3.1. "Fehler beheben" ist jetzt das Leichteste an der ganzen Übung.
|
TitusTheFox
The Oilman
|
hi ! Für alle die mit Debian (Ubuntu) über PPPoE im Netz sind hab ich ein kleines scribt , nach dem man mit pppoeconf den netzzugang eingestellt hat das ganze automatisch beim start funktioniert.(Es gibt da nähmlich ein kleines Problem mit dem pppoeconf Paket). 1.mit pppoeconf alles eingestellt , das Paket pppoe muss auch installiert sein. 2. Kleines Scribt mit dem namen pppoestart.sh oder auch xxxxx.sh im Ordner /etc/init.d mit dem folgendem inhalt erstellen: #! /bin/sh echo "Starte pppoe!"; /usr/sbin/pppoe -T20 -Ieth0 -A ; /usr/bin/pon dsl-provider|| echo "No AC-Point found try again"; echo "All done!" 3. Berechtigungen mit dem Befehl chmod 755 pppoestart.sh setzen 4. symbolischen link mit ln /etc/init.d /etc/rc2.d/S21pppoestart erstellen und fertig !
|
madp
Big d00d
|
Hallo folgendes Skript verwende ich zum sichern meiner Gnucash-Daten (alle Files in ~/Documents/gnucash/gnucash accounts) auf einen Memory Stick. Das erstellte Backup File hat das Format DDMMMYYYY.tar.gz, bzw. wenn am gleichen Tag schon mal gesichert wurde dann DDMMMYYYY_hhmmss.tar.gz. So bleiben auch vorherige Backups am USB Stick erhalten. Das Skript könnt man noch verbessern indem das Ziel-Verzeichniss gleich zu Beginn als Variable definiert wird. Im Moment muss es an drei verschiedenen Stellen verändert werden, wenn man das Skript umschreiben will um woanders hinzusichern. #!/bin/bash
if [ ! -d "/Volumes/NO NAME/gnucash/" ]; then
echo "memory stick not mounted, can't backup"
exit
fi
datestring="`date +%d%b%Y`"
backupfile="/Volumes/NO NAME/gnucash/""$datestring"".tar.gz"
if [ -a "$backupfile" ]; then
datestring="`date +%d%b%Y_%H%M%S`"
backupfile="/Volumes/NO NAME/gnucash/""$datestring"".tar.gz"
fi
cd ~
tar zcvf "$backupfile" "Documents/gnucash/gnucash accounts"
|
COLOSSUS
AdministratorGNUltra
|
Kleines Update.
|
adebar
Big d00d
|
Hallo! Erst mal [*****] von mir für diesen Thread! Ich benutze Linux erst recht kurz. Habe aber zur Übung ein kleines Skript gebastelt. Es ist nicht gerade die Killer-Application schlechthin, aber vielleicht gibt's ja noch jemanden, der's ganz nützlich findet. wiki (2006-03-04) wiki macht nichts anderes, als einen eingegebenen Begriff in der Wikipedia nachzuschlagen. Syntax: wiki [-en] [BEGRIFF]
Mit der Option "-en" kann angegeben werden, dass der Begriff auf en.wikipedia.org nachgeschlagen wird.
Code: #!/bin/bash
# wiki.sh - Opens firefox and looks up a given term on "de.wikipedia.org" or "en.wikipedia.org"
# Licensed under the terms of the GNU GPLv2 or later
# TODO:
# Multiple Browser- / Wikipedia-Languages-Support
# AUTHOR: Markus Schanta ( [email]schanm@gmx.at[/email] )
if [ $# == 0 ]
then
firefox [url]http://de.wikipedia.org[/url]
echo "Starte Wikipedia..."
else
if [ $1 == -en ]
then
firefox "http://en.wikipedia.org/wiki/Special:Search?search=$2&go=Go"
echo "Starte en.wikipedia.org und suche $2..."
else
firefox "http://de.wikipedia.org/wiki/Spezial:Search?search=$1&go=Artikel"
echo "Starte de.wikipedia.org und suche $1..."
fi
fi
Downlaod: wiki.txt
|
Marcellus
OC Addicted
|
Ich lass nur sehr ungern den Miesepeter raushängen, allerdings wollt ich nur anmerken:
Colo: bezüglich getlinks, falls du firefox verwendest kannst du dir die sachen leichter raussuchen, indem du dir die paginfo anschaust bzw mit einer extension names unplug geht das ganze noch bequemer
Adebar: firefox yubnub search bar
aber ich will ja nicht nur herumstänkern, ich hab ein problem mit einem noch nicht script, das einmal meine mp3s sortieren soll. Ich will die mp3s nach den mp3tags benennen, problem dabei ist folgendes:
mp3tag $(ls -b | grep mp3)
funktioniert nicht, wenn das mp3 ein Leerzeichen im Namen hat. Ich hab keine ahnung wieso, wenn ich mp3tag irgendwas[tab][tab] drück kommt zumindest rein optisch die selbe Zeichenfolge raus. mp3tag scheint mehrere parameter als eingang zu bekommen. Googlen hat mir auch nix gebracht. man ls sagt gerade mal, dass durch -b statt " " "\ " ausgegeben wird. Bringt mir sexuell aber auch nix.
Ich hab vor allem die schreibweise mit deim einsetzen einer variable als parameter nicht wirklich oft gefunden, gibts vllt einen saubereren weg? Ich hab probiert die ausgabe auf mp3tag zu pipen, das ding wollte allerdings nicht.
|
COLOSSUS
AdministratorGNUltra
|
Colo: bezüglich getlinks, falls du firefox verwendest kannst du dir die sachen leichter raussuchen, indem du dir die paginfo anschaust bzw mit einer extension names unplug geht das ganze noch bequemer Mag sein, aber diese Firefox-Sache braucht X11+GTK+anderen Pipapo, laesst sich nicht an andere Programme pipen (wget's calling! ), und frisst keine RegExps. Trotzdem ist `getlinks` natuerlich keine groesze Sache. Ich hab's mir eigentlich als Batchdownloader von interessantem Zeug zusammengehackt. problem dabei ist folgendes:
mp3tag $(ls -b | grep mp3) In einer Subshell kriegst du Probleme mit den Fieldseperatoren fuer Strings. Nimm eine Shellwildcard, oder `find` mit "-exec"-Parameter (evtl. anstatt "-exec" in Kombination mit `xargs`)
|
Marcellus
OC Addicted
|
Ich weis zwar nicht wieso
mp3tag $(ls -b | grep mp3)
nicht funktioniert hat, aber ich weis, dass
find ./*mp3 -printf "mp3tag \"%p\"" | -head -n 1 | /bin/bash
funktioniert, mein shell script ist zwar noch etwas unsauber, weils sich bei mp3tags mit "/" aufhängt, und mp3s ohne mp3tags einfach überschreibt, aber meine mp3s sind sortiert.
Im nachhinein bin ich draufgekommen, dass es mit
mp3tag "$(echo -n $(ls -c | grep mp3 | head -1 | cat))"
geht, es scheint irgendwie nicht zu gehen wegen den Leerzeichen.
|
COLOSSUS
AdministratorGNUltra
|
Neues Script im 1. Posting.
|