"We are back" « oc.at

Kleine Shellscript-Fun[d]grube

COLOSSUS 23.12.2005 - 17:40 9461 47 Thread rating
Posts

spunz

Elder
Elder
Avatar
Registered: Aug 2000
Location: achse des bösen
Posts: 11291
statt xextract würde ich gleich "unp" verwenden, ist bei jeder besseren distro dabei.

Vivo

Dreamworker
Avatar
Registered: May 2002
Location: Tal der Könige
Posts: 1478
Zitat von spunz
statt xextract würde ich gleich "unp" verwenden, ist bei jeder besseren distro dabei.
Das hat that schon vor einem halben Jahr vorgeschlagen (4.Post) ... ;)

adebar

Big d00d
Avatar
Registered: Dec 2001
Location: Kopf.
Posts: 275
Sorry für's Thread-Aufwärmen, aber das ist einer meiner Lieblings-Threads. :D

Habe mich letzte Woche entschieden, mir ein neues Handy + Vertrag zuzlegen. Da ich die Nummer aber länger behalten will habe und mir tele.ring auch von den Konditionen her zugesagt hat, hab ich mich mal ein bisschen mit dem tele.ring Wunschnummern-Rechner gespielt.

Da von den Nummern, die ich ausprobiert habe alle bereits vergeben waren, habe ich mich entschlossen, die Sache "ernsthaft" anzugehen. :D

Also hab ich mir ein kleines Skript geschrieben, das mir Nummern automatisch durchprobiert.

Hier das Ergebnis:



tele (2006-09-04)

Syntax:
Code:
tele NUMMER

NUMMER ist eine 7-stellige Zahl

Code:
Code: PHP
#!/bin/bash

# telering - A Hack for the tele.ring-"Wunschnummernrechner" (http://www.telering.at/Content.Node/mobil/wunschrufnummernrechner.php)
# Licensed under the terms of the GNU GPLv2 or later

RUNTIME=`date '+%s'`;

#
# "This is where the magic happens." ;D
#

curl -s -d "Snumber=$1&Fnumber=0650&clicked=2" -A "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" http://www.telering.at/Content.Node/mobil/wunschrufnummernrechner.php | grep Sorry > /dev/null;

STATUS=$?;

let RUNTIME=`date '+%s'`-$RUNTIME;

#
# Output
#

#echo "$STATUS";

if [ $STATUS -eq 0 ]
then
	echo "$1 - vergeben!	$RUNTIME s";
        exit 1;
else
 	echo "$1 - NOCH FREI!!!	$RUNTIME s";
        exit 0;
fi

Download: tele.sh

Ausserdem gibt's noch ein zweites Script dazu, das dieses hier mit bestimmten Nummern (Kriterium: nur 3 verschiedene Zahlen als Ziffern) aufruft, damit man möglichst viele "schöne" Nummern bekommt.

Ich möchte das zweite Script hier aber nicht posten, damit's für die Script-Kiddies nicht zu einfach wird. Jeder, der halbwegs Ahnung hat, sollte das selbst auch zambringen... ;)

Es sei nur so viel gesagt: Für drei bestimmte Ziffern ist man in ca. einer Stunde fertig. :D

hf,
adebar

lama007

OC Addicted
Avatar
Registered: Mar 2002
Location: Austria
Posts: 851
mein zweites Skript: xc
für Suse 10.1 zum Installieren eines neuen Kernels

Code: PHP
#! /bin/sh
#
# für SUSE 10.1 mit original menu.lst
# um Kerneltars zu entpacken: Kernel.tar.bz2 ins home-Verzeichnis kopieren und xc-Skript mit Option -t aufrufen
# backup menu.lst  in /boot/grub/backup-menu.lst

echo
PS3="
Nummer: "
rpm -q gcc > /dev/null
if [ $? -ne 0 ]; then
	echo "das rpm-Paket gcc ist nicht installiet"
	echo "der gcc wird zum kompilieren des Kernels benötigt"
	select nummer in "gcc ist bereits installiert" "abbrechen um gcc zu installieren"; do
		case "$nummer" in
			gcc*)	break;;
			abb*)	exit;;
			   *)	echo "ungültige Auswahl";;
		esac
	done
	echo
fi
if [[ $1 == -t ]]; then
	find ~ -name "linux-*.tar.bz2" > ~/h9allo01
	if [ ! -s ~/h9allo01 ]; then
		find / -noleaf -name  "linux-*.tar.bz2" > ~/h9allo01
	fi
	kt=$(cat ~/h9allo01)
	select nummer in $kt; do
		if [ $nummer ]; then
			i=$nummer
			break
		else
			echo "ungültige Auswahl"
		fi
	done
	cd /usr/src
	tar -jxvf $i
fi
echo
find /usr/src -maxdepth 1 -name "linux-[2-4].[0-9].*" -type d > ~/h9allo02
gf=$(cat ~/h9allo02)
rm ~/K9ernelauswahl7 2> /dev/null
for i in $gf; do
	if [ -e $i/Makefile ]; then
		echo $i >> ~/K9ernelauswahl7
	fi 
done
if [ ! -s ~/K9ernelauswahl7 ]; then
	find / -name "linux-[2-4].[0-9].*" -type d > ~/h9allo03
	gf=$(cat ~/h9allo03)
	for i in $gf; do
		if [ -e $i/Makefile ]; then
			echo $i >> ~/K9ernelauswahl7
		fi 
	done
fi
ka=$(cat ~/K9ernelauswahl7)
rm ~/K9ernelauswahl7
select nummer in $ka; do
	if [ $nummer ]; then
		f=$nummer
		break
	else
		echo "ungültige Auswahl"
	fi
done
a=${f##*/linux-}
nj=0
cd $f
if [ -s Makefilexc9backup ]; then
	cp Makefilexc9backup Makefile
else
	cp Makefile Makefilexc9backup
fi
while [ -f "/boot/vmlinuz-$a$d-xc" ] && [[ $nj == 0 ]]; do
	echo
	echo "/boot/vmlinuz-$a$d-xc besteht bereits"
	echo
	select num in "zusätzliche Kernelbezeichnung" "/boot/vmlinuz-$a$d-xc überschreiben"; do
		case "$num" in
			zusät*)	echo
				echo -n "zusätzliche Kernelbezeichnung z.B. .123 oder -xyz: "
				read d
				nj=0
				break;;
			/boot*)	nj=1
				break;;
			     *)	echo
				echo "ungültige Auswahl";;
		esac
	done
done
echo
select nummer in "Initial-RAM-Disk erzeugen" "keine Initial-RAM-Disk erzeugen"; do
	case "$nummer" in
		Initial*)	echo	
				irdisk=j
				break;;
		keine*	)	echo
				irdisk=n
				break;;
		*	)	echo
				echo "ungültige Auswahl";;
	esac
done
echo
cf=0
make xconfig
if [ $? -ne 0 ]; then
	rpm -q qt3-devel > /dev/null
	if [ $? -ne 0 ]; then
		echo
		echo
		echo "das rpm-Packet qt3-devel ist nicht installiert."
		echo "xconfig benötigt das Packet qt3-devel."
	fi
	echo
	select num in "Abbruch" "neuer Versuch mit xconfig" "weiter mit menuconfig"; do
		case "$num" in
			Abbruch) 	exit;;
			neuer*)		echo
					make xconfig
					cf=1
					break;;
			weiter*) 	echo
				 	break;;
			      *) 	echo
				 	echo "ungültige Auswahl";;
		esac
	done
	if [ $cf -eq 0 ]; then
		make menuconfig
		if [ $? -ne 0 ]; then
			rpm -q ncurses-devel > /dev/null
			if [ $? -ne 0 ]; then
				echo
				echo
				echo "das rpm-Packet ncurses-devel ist nicht installiert."
				echo "menuconfig benötigt das Packet ncurses-devel."
			fi
			echo
			select num in "Abbruch" "neuer versuch mit menuconfig" "weiter mit config"; do
				case "$num" in
					Abbruch)	exit;;
					neuer*)		echo
							make menuconfig
							cf=2
							break;;
					weiter*)	echo
							break;;
					      *)	echo
							echo "ungültige Auswahl";;
				esac
			done
			if [ $cf -eq 0 ]; then
				make config
			fi
		fi
	fi
fi
mv $f/Makefile ~/M9akke7
i="$(sed -n "4{/EXTRAVERSION\ =/p}" < ~/M9akke7)"
grep -q "EXTRAVERSION = .[0-9]" ~/M9akke7
if [ $? -eq 0 ];then
	sed "4s/$i/$i$d-xc/" < ~/M9akke7 > $f/Makefile
elif [ $? -eq 1 ]; then
	sed "4s/$i/$i\ $d-xc/" < ~/M9akke7 > $f/Makefile
else
	echo "zusätzliche Kernelbezeichnung konnte nicht in die Makefile geschrieben werden"
fi
head -4 $f/Makefile
echo
make all && make modules_install
if [ $? -ne 0 ]; then
	echo "Fehler"
	echo "versuchen Sie es händisch"
	exit
fi
cp $f/arch/i386/boot/bzImage /boot/vmlinuz-$a$d-xc
cp $f/System.map /boot/System.map-$a$d-xc
if [ $irdisk != n ]; then
	mkinitrd -k vmlinuz-$a$d-xc -M /boot/System.map-$a$d-xc -i initrd-$a$d-xc
fi
mv ~/M9akke7 $f/Makefile
i=/boot/grub/backup-menu.lst
if [ ! -d $i ]; then
	mkdir $i
fi
e=$(date +%F_%T)
grep -q '^\#========================*===$' /boot/grub/menu.lst 
if [ $? -eq 0 ]; then
	sed '/#===============/d' < /boot/grub/menu.lst > ~/h9allo04
	cat -s ~/h9allo04 > /boot/grub/menu.lst
fi
cp /boot/grub/menu.lst "$i/bu-menu.lst-$e"
b1=0
r1=0
rs1=0
v=1
if [ $nj -eq 0 ]; then
	grep -o "root (hd[0-9]\{1,2\},[0-9]\{1,2\})" /boot/grub/menu.lst | sort | uniq > ~/h9allo05
	bop=$(wc -l < ~/h9allo05)
	if [ $bop -gt 1 ]; then
		echo "geben Sie die Linux-Bootpartion ein in der Form von z.B   0,5"
		echo -n "(hd"
		read bp
		echo
		if [ -z ${bp#*)} ]; then
			bp=${bp%)}
		fi
			while [[ $bp != [0-9],[0-9] ]] && [[ $bp != [0-9][0-9],[0-9] ]] && [[ $bp != [0-9],[0-9][0-9] ]] && [[ $bp != 	[0-9][0-9],[0-9][0-9] ]] && [ ! -z "$bp" ]; do
				echo "Falsche Eingabe"
				echo "Eingabe: Zahl,Zahl"
				echo "1. Zahl = Nummer der Festplatte (z.B. 0 für die 1. HD), 2. Zahl = Nummer der Partition (z.B. 1 für die 2. Partion)"
				echo
				echo "versuchen Sie es nocheinmal oder drücken Sie nur Enter für eine spätere Eingabe in menu.lst"
				echo -n "(hd"
				read bp
				echo
				if [ -z ${bp#*)} ]; then
					bp=${bp%)}
				fi
			done
			if [ -z "$bp" ]; then
				bp="root (hd?,?)"
				b1=1
			else	
				bp="root (hd$bp)"
				b1=0
			fi
	elif [ $bop -eq 1 ]; then
		bp="$(cat ~/h9allo05)"
	else
		bp="root (hd?,?)"
		b1=1
	fi
	grep -o "root=/dev/[a-z]\{3\}[0-9]\{1,2\}" /boot/grub/menu.lst | sort | uniq > ~/h9allo06
	rop=$(wc -l < ~/h9allo06)
	if [ $rop -gt 1 ]; then
		echo "geben Sie die Rootpartion ein in der Form von z.B   hda1"
		echo -n "/dev/"
		read rp
		echo
		if [ -z ${rp#*)} ]; then
			rp=${rp%)}
		fi
			while [[ $rp != [a-z][a-z][a-z][0-9] ]] && [[ $rp != [a-z][a-z][a-z][0-9][0-9] ]] && [ ! -z $rp ]; do
				echo "Eingabe: drei kleine Buchstaben und eine Zahl z.B sda5"
				echo
				echo "versuchen Sie es nocheinmal oder drücken Sie nur Enter für eine spätere Eingabe in menu.lst"
				echo -n "/dev/"
				read rp
				echo
				if [ -z ${rp#*)} ]; then
					rp=${rp%)}
				fi
			done
			if [ -z $rp ]; then
				rp="root=/dev/????"
				r1=1
			else
				rp="root=/dev/$rp"
				r1=0
			fi
	elif [ $rop -eq 1 ]; then
		rp="$(cat ~/h9allo06)"
	else
		rp="root=/dev/????"
		r1=1
	fi
	ver="$(head -1 /etc/SuSE-release)"
	ver="${ver#[Ss][Uu][Ss][Ee]\ [Ll][Ii][Nn][Uu][Xx]\ }"
	ver="${ver%%\ (*}"
	echo > ~/h9allo07
	echo >> ~/h9allo07
	echo \#===================================================================================================================== >> ~/h9allo07
	echo >> ~/h9allo07
	echo >> ~/h9allo07
	echo "###Don't change this comment - YaST2 identifier: Original name: linux###" >> ~/h9allo07
	echo "title SUSE Linux $ver  $a$d-xc" >> ~/h9allo07
	echo "    $bp" >> ~/h9allo07
	echo "    kernel /boot/vmlinuz-$a$d-xc $rp vga=0x317    resume=/dev/sda7  splash=silent showopts" >> ~/h9allo07
	if [[ $irdisk == j ]]; then
		echo "    initrd /boot/initrd-$a$d-xc" >> ~/h9allo07
	fi
	echo >> ~/h9allo07
	echo >> ~/h9allo07
	echo \#====================================================================================================================== >> ~/h9allo07
	echo >> ~/h9allo07
	j="title SUSE Linux $ver  $a$d-xc"
	csplit -f ~/t9eil7. /boot/grub/menu.lst /"###Don't change this comment - YaST2 identifier: Original name:"/-1 {1} > /dev/null
	cp /boot/grub/menu.lst ~/menu.lst-bu
	cat ~/t9eil7.00 > /boot/grub/menu.lst
	cat ~/t9eil7.01 >> /boot/grub/menu.lst
	cat ~/h9allo07 >> /boot/grub/menu.lst
	cat ~/t9eil7.02 >> /boot/grub/menu.lst
	rm ~/t9eil7.0?
	v=0
	if [ ! -s /boot/grub/menu.lst ]; then
		mv ~/menu.lst-bu /boot/grub/menu.lst
		v=1
	fi
fi
grep "vmlinuz-$a$d-xc" < /boot/grub/menu.lst > ~/h9allo08
s=$(wc -l < ~/h9allo08)
grep "initrd-$a$d-xc" < /boot/grub/menu.lst > ~/h9allo09
t=$(wc -l < ~/h9allo09)
if [ $nj -eq 1 ] && [ $s -eq 1 ] && [ $t -lt 2 ]; then
	j="$(sed -n "/title\ SUSE\ L[iI][nN][uU][xX]\ 1[0-9].[0-9]  $a$d-xc/p" < /boot/grub/menu.lst)"
	cp /boot/grub/menu.lst ~/h9allo10
	if [[ $irdisk == n ]] && [ $t -eq 1 ]; then
		sed "/initrd-$a$d-xc/d" < /boot/grub/menu.lst > ~/h9allo10
	elif [[ $irdisk == j ]] && [ $t -eq 0 ]; then
		sed "/kernel\ \/boot\/vmlinuz-$a$d-xc root=/ a\
		\    initrd\ \/boot\/initrd-$a$d-xc" < /boot/grub/menu.lst > ~/h9allo10
	fi
	if [ ! -s ~/h9allo10 ] || [ -z "$j" ]; then
		v=1
	else
		cp ~/h9allo10 /boot/grub/menu.lst
		v=0
	fi
fi
echo
echo
echo
echo
echo
if [ $v -eq 1 ]; then
	if [ $nj -eq 0 ] || [ $s -eq 0 ]; then
		echo "fügen Sie einen Eintrag in menu.lst für den neuen Kernel $a$d-xc hinzu"
		echo
		echo "kernel /boot/vmlinuz-$a$d-xc"
		if [[ $irdisk == j ]]; then
			echo "initrd /boot/initrd-$a$d-xc"
		fi
	elif [ $nj -eq 1 ] && [ $s -gt 0 ]; then
		echo "Bitte kontrollieren Sie den Eintrag (z.B. boot- bzw. root-Partion) in /boot/grub/menu.lst für den Kernel $a$d-xc"
		echo "falls ein entsprechender Eintrag fehlt, fügen Sie einen passenden hinzu"
		echo
		echo "kernel /boot/vmlinuz-$a$d-xc"
		if [[ $irdisk == j ]]; then
			echo
			echo "falls nicht schon vorhanden, fügen Sie dem Eintrag folgende Zeile hinzu:"
			echo
			echo "initrd /boot/initrd-$a$d-xc"
		elif [[ $irdisk == n ]]; then
			echo
			echo "entfernen Sie (falls vorhanden) die initrd-$a$d-xc-Zeile des entsprechenden Eintrages"
		fi
	fi
	echo
	echo
	echo "Drücken Sie \"Enter\" um die menu.lst zu öffnen."	
	read we
elif [ $v -eq 0 ]; then
	echo "`tput setf 4`Kontrollieren`tput sgr0` Sie den Eintrag in /boot/grub/menu.lst mit dem Titel"
	echo
	echo "$j"
	echo
	echo "kernel /boot/vmlinuz-$a$d-xc"
	if [[ $irdisk == j ]]; then
		echo "initrd /boot/initrd-$a$d-xc"
	fi
fi
if [ $b1 -eq 1 ] || [ $r1 -eq 1 ]; then
		echo
		echo "ersetzen Sie die `tput setf 4`Fragezeichen`tput sgr0` in"
		if [ $b1 -eq 1 ]; then
			echo "root (hd?,?)"
		fi
		if [ $r1 -eq 1 ];then
			echo "root=/dev/????"
		fi
		echo "mit den entsprechenden Einträgen"
		echo
		echo -n "drücken Sie Enter "
		read weiter
	fi
echo
echo
echo
echo
echo
kwrite /boot/grub/menu.lst
if [ $? != 0 ]; then 
	vim /boot/grub/menu.lst
fi
grep -q '^\#========================*===$' /boot/grub/menu.lst 
if [ $? -eq 0 ]; then
	sed '/#===============/d' < /boot/grub/menu.lst > ~/h9allo11
	cat -s ~/h9allo11 > /boot/grub/menu.lst
fi
rm ~/h9allo[0-9][0-9]
echo -n "Eingabe \"r\" für reboot, \"Enter\" für exit : "
read reb
if [[ $reb == r ]]; then
	reboot
fi
echo
exit

deftenski

mit barockfelgen
Avatar
Registered: May 2002
Location: back home
Posts: 1241
in anlehnung an gimme ein kleines script, das ~-masked pakete und deren abhängigkeiten sauber in package.keywords einträgt

click here

edit: sry, war noch ein fehler drin .. neue version
Bearbeitet von deftenski am 16.11.2006, 14:27

Lukas

Here to stay
Avatar
Registered: Feb 2004
Location: ~
Posts: 1883
sehr geil, thumbs up @ unkey

:)

deftenski

mit barockfelgen
Avatar
Registered: May 2002
Location: back home
Posts: 1241
dankeschön .. freut mich, wenns außer mir auch noch jemand brauchen kann

Lukas

Here to stay
Avatar
Registered: Feb 2004
Location: ~
Posts: 1883
unkey sollte man doch eigentlich auch auf masked by missing keyword paket umbauen können oder ?

deftenski

mit barockfelgen
Avatar
Registered: May 2002
Location: back home
Posts: 1241
ich hab nur x86-systeme laufen, weil mich das herumgepfusche mit x86-paketen auf einem amd64-system nicht interessiert hat.
wenn du mir ein- und ausgaben für ein "masked by missing keyword" paket zukommen lässt, schau ichs mir aber gerne mal an

Lukas

Here to stay
Avatar
Registered: Feb 2004
Location: ~
Posts: 1883
ich hatte da mal eins habs aber vergessen... ich fahr ausserdem mit ~amd64 ;)

Lukas

Here to stay
Avatar
Registered: Feb 2004
Location: ~
Posts: 1883
So, Thread ausgrab... Jetzt wo ich wieder mal am kernel upgraden war habe ich mir gleich ein kleines script geschrieben um diesen Vorgang zu automatisieren.

Sollte eigentlich auf so ziemlich jedem gentoo amd64 (x86_64) system funktionieren.
Falls wer Typos findet bitte melden, ebenso bei anderen Bugs... :)

kernelupdate.sh

PS: Sogar in Farbe :p

edit: vor gebrauch bitte im script die variablen $rootdev und $rootdevgrub ganz am anfang unter SYSTEM SPECIFIC VARS anpassen.
Bearbeitet von Lukas am 04.04.2007, 16:30

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12143
Ein Kernelinstallationsscript ohne `make install`? Nicht dein Ernst? ;)

Lukas

Here to stay
Avatar
Registered: Feb 2004
Location: ~
Posts: 1883
Zitat von COLOSSUS
Ein Kernelinstallationsscript ohne `make install`? Nicht dein Ernst? ;)

eigentlich schon :o :D

Nach dieser methode hat es für mich bisher immer funktioniert, aber wenn du mir einen deftigen grund, wie ich vermute, nennen kannst, dann werde ich `make install` einbauen, vorrausgesetzt du sagst mir auch wo und was es genau bewirkt bzw. welche anderen schritte ich mir dann sparen kann (tippe mal auf das kopieren des kernelimage). :)

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12143
Einfach ins Makefile des Kernels schauen. Ohne make install geht jedenfalls mal gar nix.


Heute auf die schnelle zusammengefrickelt: Ein Stock-Monitoring-Script fuer Yahoo Finance.
http://gnulords.org/~colo/tmp/stockmon.sh

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12143
Neues Script im 1. Posting (countprocs).
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz