Kleine Shellscript-Fun[d]grube - Seite 3

Seite 3 von 4 - Forum: Linux and other OS auf overclockers.at

URL: https://www.overclockers.at/linux/kleine_shellscript-fundgrube_155038/page_3 - zur Vollversion wechseln!


jives schrieb am 06.08.2007 um 14:09

Bezüglich "make install": Nachdem ich bisher auch immer nur mit make gearbeitet habe, bin ich jetzt natürlich verwirrt ;)
Lukas' Methode wird in diesem Guide http://www.gentoo.org/doc/en/kernel...e.xml#doc_chap5 (Listing 5.4) und diesem Handbuch-Draft http://www.gentoo.org/doc/en/handbo...rt=2&chap=6 verwendet.

Der Thread ist aber jedenfalls ***** wert.


Lukas schrieb am 06.08.2007 um 14:24

Zitat von jives
Bezüglich "make install": Nachdem ich bisher auch immer nur mit make gearbeitet habe, bin ich jetzt natürlich verwirrt ;)
Lukas' Methode wird in diesem Guide http://www.gentoo.org/doc/en/kernel...e.xml#doc_chap5 (Listing 5.4) und diesem Handbuch-Draft http://www.gentoo.org/doc/en/handbo...rt=2&chap=6 verwendet.

Der Thread ist aber jedenfalls ***** wert.

genau, habe eigentlich nur eine automatisierung des gentoo handbuch vorgangs gestaltet, btw. das script verwende ich heute noch :)


Lukas schrieb am 15.05.2008 um 14:00

absbuild
Dieser kleine helfer ermoeglicht eine rasche paketerstellung (und installation) von PKGBUILDs für Archlinux aus dem ABS baum.
Man übergibt dem script den pfad zum abs baum, einen temporaeren speicherort für die .pkg.tar.gz dateien und zu einer Datei, die alle zu bauenden paketnamen beinhaltet. Das script baut diese und bei bedarf werden sie gleich alle mit pacman installiert. Für die Datei, in der die Paketnamen enthalten sind gibt es eine "syntax". In der ersten Zeile muss der name eines repos stehen, welches ist egal, allerdings muessen alle darauf folgenden zeilen paketnamen enthalten, die in diesem repo zu finden sind. Sobald man ein neues repo angibt werden die danach folgenden paketnamen in diesem repo gesucht. Siehe anhang base.pkgs. Wenn man ein paket nicht bauen will es aber nicht aus der liste loeschen will, schreibt man einfach ein "!" vor den paketnamen.
Die angehaengte baut ein (fast) komplettes arch base system (mit devel paketen).

Einer der Beweggruende fuer dieses skript war, dass ich mein basis system mit gewissen g++ flags bauen wollte um optimierungen fuer meinen Athlon64(X2) "freizuschalten"

e: command usage:

Code:
./absbuild.sh [-a /path/to/abs] [-p /path/to/tmp/pkgdir] [-f /path/to/pkgsfile] [-yin]

absbuild.sh
base.pkgs


issue schrieb am 15.05.2008 um 21:06

kann den thread bitte ein mod/admin sticky machen, hab ihn neulich auch gesucht.

Lukas: nettes script, gefällt


COLOSSUS schrieb am 26.06.2008 um 11:57

Gibt's (bzw. gab's glaub ich sogar hier) schon oefters, aber ich hab mich auch mal an ein Kernel-Update-Script gesetzt - vielleicht interessant fuer alle, die sich ihren Kernel selbst bauen.

update-kernel.sh


deftenski schrieb am 30.06.2008 um 10:15

das Script ist ja offensichtlich mit einem Fokus auf Gentoo geschrieben. Wieso also nicht mit genkernel?


COLOSSUS schrieb am 30.06.2008 um 17:45

Weil ich genkernel nicht installiert habe. ;)


deftenski schrieb am 30.06.2008 um 18:48

das ginge ganz leicht mit

Code:
emerge genkernel
;)


NyoMic schrieb am 01.07.2008 um 11:19

wird zwar nur für die allerwenigsten Interessant sein aber trotzdem.
Hab mir ein kleines Script geschrieben welches die qmail-queue bereinigt. Wir haben hier z.B öfters dass Problem dass Kunden über unseren Server spammen (dank smtp-auth kommen die von überall, also ip-based block bringt nichts)

Code:
#!/bin/bash
rm /root/listeanonym
qmail-qread | grep -B 1 spamempfaenger | sed -n '/#/p' | cut -d " " -f 7 | sed 's/#//g' >> /root/listeanonym
 for i in `cat /root/listeanonym`
do
 qmHandle -d$i
done

spamempfaenger = (recipient in der queue, also z.B yahoo.com.tw oder whatever)
ACHTUNG: qmhandle muss natürlich vorhanden sein, sonst gehts nicht.


Gex schrieb am 08.05.2009 um 19:15

Um diesen Thread mal wieder aufzuwärmen:

Ich (als blutiger Shellscript-Anfänger, also nicht meckern wenn was nicht perfekt gelöst ist) hab mir mal ein kleines Script gebastelt, das mir eine virtuelle Maschine unter VMWare Server 2.0, in diesem Fall meinen Mailserver, kurz in Suspend schickt, das Verzeichnis auf mein RAID5 schiebt, die VM wieder startet und das kopierte Verzeichnis dann mit bzip2 verpackt.
Es werden immer zwei Backups vorgehalten, so dass nix verloren geht, wenn bei dem ganzen Vorgang mal was in die Grütze geht...
Rudimentären Output gibt's auch, damit man in etwa weiß was das Teil grad tut. Kann man auch weglassen, wenn man das Viech per cronjob laufen lässt...

Sicher nicht besonders professionell gelöst, ich könnte mir z.B. noch vorstellen das Script so anzupassen, dass man die Pfade der Maschine und des Backup-Verzeichnisses beliebig anpassen kann, dass ein Logfile geschrieben wird, dass eine Mailbenachrichtigung rausgeschickt wird, die z.B. auch die Größe des erstellten Archivs enthält, usw. usf...

Für's erste wirds diese Version erstmal tun, ist halt ziemlich unsauber innerhalb von 30min zusammengedengelt...

Vielleicht findet's ja irgendwer nützlich :)

Code:
#!/bin/bash

# Suspend the virtual machine
echo 'Suspending virtual machine...'
vmrun -T localhost -h https://localhost:8333/sdk -u myusername -p mypassword suspend "[standard] srv-mail/srv-mail.vmx"

# Copy virtual machine directory to RAID array
echo 'Copying virtual machine directory...'
cp -R /data/vmware/srv-mail/ /mnt/md1/VMBackups/

# Bring the virtual machine back up
echo 'Starting virtual machine...'
vmrun -T localhost -h https://localhost:8333/sdk -u myusername -p mypassword start "[standard] srv-mail/srv-mail.vmx"

# Check whether last backup file exists. 
if [ -f /mnt/md1/VMBackups/srv-mail.tar.bz2 ];
then
	echo 'Previous backup file exists.'
	# If it exists, check, whether last but one backup file exists.
	if [ -f /mnt/md1/VMBackups/srv-mail.bak.tar.bz2 ];
	then
		# Remove last but one backup file
		echo 'Last but one backup file exists - removing.'
		rm /mnt/md1/VMBackups/srv-mail.bak.tar.bz2	
	fi
	# Rename last backup file
	echo 'Renaming previous backup file.'
	mv /mnt/md1/VMBackups/srv-mail.tar.bz2 /mnt/md1/VMBackups/srv-mail.bak.tar.bz2
fi

# Compress the virtual machine directory into a .tar.bz2 archive
echo 'Compressing virtual machine directory... this may take a long time.'
tar -jcf /mnt/md1/VMBackups/srv-mail.tar.bz2 /mnt/md1/VMBackups/srv-mail

# Remove virtual machine directory from RAID array
echo 'Removing virtual machine directory after compression...'
rm -rf /mnt/md1/VMBackups/srv-mail/

echo 'Backup of virtual machine finished.'

(Achtung: in den Zeilen 6 und 14 hat die Forensoftware diese URL-Tags um die URL herumgebaut... die müssen da weg...)

Das soll's für's erste gewesen sein. Falls Interesse besteht, aktualisiere ich diesen Post, falls ich das Script noch ausbaue...

Ansonsten hab ich noch ein zweites Ding in der Hinterhand, komplett anderer Verwendungszweck (Anpassen von Dateinamen von Videofiles nach Format, Tonformat, Codec usw. für alle Videofiles in einem Verzeichnis), sehr viel komplexer und zu 85% fertig... Falls Interesse besteht lad ich's hier rein sobald es fertig ist ;)


COLOSSUS schrieb am 08.05.2009 um 19:21

Ich hab dir das URL-Tagging wegoperiert. :)


Gex schrieb am 08.05.2009 um 23:27

Zitat von COLOSSUS
Ich hab dir das URL-Tagging wegoperiert. :)
thx! :)


deftenski schrieb am 11.06.2009 um 15:20

flac2mp3
Ein kleines Script, das flacs ueber ein dazugehoeriges cuesheet in mp3s umwandelt.
Als Ausgangsbasis dient bei mir immer ein Verzeichnis, in dem sich alle flacs und das cuesheet befinden (genau so, wie es aus rubyripper rauskommt). Die Daten fuer den ID3v2 Tag kommen alle aus dem cuesheet.

http://users.fh-salzburg.ac.at/~gpanholz/shellscripts/

functions.sh verwende ich in allen meinen Scripten zum formatieren von Ausgaben. Wer das nicht will, muss nur begin/end in den Zeilen 42, 60 und 75 durch eine einfaches echo ersetzen und die Zeile 72 loeschen.
Beide Dateien liegen bei mir in ~/bin, in flac2mp3 Zeile 10 verwende ich auch ein "source ~/bin/functions.sh". Das muss natuerlich angepasst werden.

sha256sums

Code:
a489dd52b9cd8e4772d04ade21e8573639fd77ff4960891c7c4228ed79391d17  flac2mp3
cb846a599ec1a69e372ed6c4c64afedfa3ff59938e154610149f223b2d9f8556  functions.sh


COLOSSUS schrieb am 11.06.2009 um 19:24

Nettes Script! :)

Falls du den "Stil" deiner Scripts noch verbessern und ihrem Code fast schon glamouroese Eleganz einhauchen willst (;)), dann solltest du:


Happy Hacking! :)


novy schrieb am 19.06.2009 um 11:30

toller thread
beginne soeben mir shellscriptkenntnisse anzueignen.

ich hab mir mal ein kleines script gebastelt für den fall das mehrere user eingeloggt sind und ich alle auf einen schlag loswerden will

Code:
#!/bin/bash
echo 'Welcher User soll ausgeloggt werden?'
read antwort
#
if [ "$antwort" = "ich" ]
then
leiche=$(whoami)
else leiche=$antwort
fi
echo $leiche #damit man nochmal sieht wer sich jetzt verabschiedet hat
sleep 1
#
for user1 in $(who | grep $leiche |awk '{print $2}')
        do for pid1 in $(ps -ef | grep $user1 |grep -v grep |grep -v @ | awk '{print $2}')
                do kill -9 $pid1
        done
done

für den fall das jemand tcp-verbindungen mitloggen will oder muss
Code:
#!/bin/bash
date > /tmp/fileC
netstat -tlapne > /tmp/fileA
cat /tmp/fileA >> /tmp/fileC
i=1
while [ $i -le 59 ]
do
#  echo $i
  netstat -tlapne > /tmp/fileA
  sleep 1
  netstat -tlapne > /tmp/fileB
  tail -2 /tmp/fileC > /tmp/fileD
  diff --text /tmp/fileA /tmp/fileB|grep tcp| grep -v 'cat /tmp/fileD' >> /tmp/fileC
  i=`expr $i + 1`
done
cat /tmp/fileC >> /var/log/tcp
das script wird minütlich als crontabjob ausgeführt. wenn viel los ist wird das log-file am Tag ca. 6MB groß. mit logrotate hebe ich mir 6 versionen auf


ich weiß das alles sehr einfach gemacht ist. für konstruktive kritik bin ich immer offen




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026