[Sammelthread] Code-Schnipsel für Allerlei

foxxx

Moderator
Thread Starter
Mitglied seit
15.02.2006
Beiträge
11.765
Ort
/dev/null
Moin liebe Linuxxer,

desöfteren habe ich das Problem, dass mir bei einigen Sachen, die ich nicht alltäglich vorfinde, nicht der genaue Syntax für die nötigen Befehle einfällt.

Daher habe ich mir gedacht, wir starten hier einen Sammelthread, in dem wir nützliche Code-Schnipsel zusammenfassen mit jeweils einer kurzen Erläuterung, was man damit macht.

Hier können natürlich auch kurze Auszüge aus Scripten geposted werden, die man immer mal gebrauchen kann.

Ich würde euch bitten, eure Beiträge auch einheitlich zu halten, und zumindest die Code-Schnipsel auch in den [code]echo "hier steht der code"[/code]-Tags zu schreiben.

Ich fange dann mal an:

mit 'sed' das letzte Zeichen löschen:
Code:
sed 's/.$//'

mit 'sed' das erste Leerzeichen entfernen:
Code:
sed -e 's/\ //'

mit 'sed' alle Leerzeichen entfernen:
Code:
sed -e 's/\ //g'

mit 'sed' das erste Leerzeichen mit einem Unterstrich "_" ersetzen:
Code:
sed -e 's/\ /_/'

mit 'sed' alle Leerzeichen mit einem Unterstrich "_" ersetzen:
Code:
sed -e 's/\ /_/g'

mysql befehl in einem Script o.ä. ausführen:
Code:
mysql --user=[I]user[/I] --password=[I]password[/I] --execute="[I]mysql-query[/I]"

IP-Adresse abfragen (Kombination aus mehreren Aufrufen, damit wirklich nur die genaue Zeichenkette ohne vorangehende oder nachfolgende Leerstellen ausgegeben wird) :
Code:
LANG=en_US ifconfig  | sed -n '/^eth0/{n;s/.*addr:\(.*\)\sBcast.*/\1/;p;q}' | sed 's/.$//'

Innerhalb eines Scriptes das Echo der Konsole abschalten, bspw. bei einer Passwort-Abfrage:
Code:
stty_orig=`stty -g`
stty -echo
read [I]password[/I]
stty $stty_orig

Einfache while-Schleife innerhalb eines Scriptes, um dem Benutzer mehrfache Eingabe zu ermöglichen, falls er sich vertippt:
Code:
#!/bin/bash
code="23"
echo "Now type in your verification code here:"
read verify 
while [ $verify != $code ]
do
	echo "Enter 'exit' to quit."
	echo "You have entered an wrong code. Please try again:"
	read newin
	case $newin in
		exit)
			echo "Aborting..."
			exit 4 ;;
		*)
			verify=`echo $newin`
	esac
done
echo "You entered the correct code."
exit 0


-------------------------------------------------------------------

Das waren so die Sachen, die mir spontan eingefallen sind, ich hoffe auf weitere Tipps von euch ;)

mfg
foxxx :wink:
 
Zuletzt bearbeitet:
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
keine schlechte idee, nur an beitraegen fehlt's noch :d

dann will ich mal. folgendes script erleichtert einem das entpacken von mehreren .rar dateien (auch mit passwort). man muss also nicht immer wieder das gleiche passwort eingeben.

Code:
#!/bin/bash

if [ "$1" == "" ]
then
	echo "Name/filetype (placeholders possible):"
	read name
else
	name="$1"
fi
if [ "$2" == "" ]
then
	echo "Password (if none, press enter):"
	read pword
else
	pword="$2"
fi

if [ "$pword" == "" ]
then
	gnome-terminal -x find -type f -name "$name" -exec unrar x {} \;
else
	gnome-terminal -x find -type f -name "$name" -exec unrar -p$pword x {} \;
fi

das script kann ohne parameter aufgerufen werden, dann wird einem der dialog dargestellt.
will man parameter uebergeben:
1. parameter: name der dateien. also sowas wie *.rar oder *part1.rar et cetera.
2. parameter: das passwort.

"gnome-terminal" sollte natuerlich angepasst werden, wenn man einen anderen WM verwendet ;)
 
Zuletzt bearbeitet:
zählen von eingehenden TCP Verbindungen (hilfreich bei dos attacken o.ä):
Code:
netstat -nt | awk '{print $5}' | cut -d ":" -f 1 | sort -n | uniq -c | sort -n
 
ein install script welches rtorrent, librtorrent und xmlrpc-c aus dem svn auscheckt, kompiliert und in das verzeichnis des users in folgenden verzeichnissen installiert:

libtorrent_09_05_2010:
rtorrent_09_05_2010:
xmlrpc-c_09_05_2010:

wtorrent ist eine webgui fuer rtorrent, wird ebenfalls ausgecheckt, aber nicht installiert! (wtorrent benoetigt xmlrpc-c, deshalb ists mit im script)

Code:
#!/bin/bash -x
PREFIX="/home/deinusername"
SVNDIR="/home/deinusername/svn"

DATE=`date +%d_%m_%Y`

rm -rf "$SVNDIR"/rtorrent
rm -rf "$SVNDIR"/libtorrent 
rm -rf "$SVNDIR"/xmlrpc-c
rm -rf "$SVNDIR"/wtorrent 

cd "$SVNDIR"

svn co svn://wtorrent-project.org/repos/trunk/wtorrent/
svn co svn://rakshasa.no/libtorrent/trunk/libtorrent
svn co svn://rakshasa.no/libtorrent/trunk/rtorrent
svn co http://xmlrpc-c.svn.sourceforge.net/svnroot/xmlrpc-c/advanced xmlrpc-c

cd "$SVNDIR"/xmlrpc-c
./configure --disable-cplusplus --prefix="$PREFIX"/xmlrpc-c_"$DATE"
make
make install
cd "$SVNDIR"/libtorrent
./autogen.sh
./configure --prefix="$PREFIX"/libtorrent_"$DATE"
make
make install
export PKG_CONFIG_PATH="$PREFIX"/libtorrent_"$DATE"/lib/pkgconfig/
cd "$SVNDIR"/rtorrent
./autogen.sh
./configure --with-xmlrpc-c="$PREFIX"/xmlrpc-c_"$DATE"/bin/xmlrpc-c-config --prefix="$PREFIX"/rtorrent_"$DATE"
make
make install

den rtorrent start ich dann mit folgenden zeilen

Code:
#!/bin/bash
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/deinusername/xmlrpc-c_09_05_2010/lib/
/home/deinusername/rtorrent_09_05_2010/bin/rtorrent
 
meine screenshots von games landen direkt im homeverzeichnis meines users im verzeichnis ~/screens (ueber samba)
~/screens2 ist ein temp-verzeichnis wo die umgewandelten screens drinliegen
wenn ich also ne ladung screens hochladen will schau ichs im ~/screens verzeichnis nach und loesch alle die ich nicht hochladen will, danach fuehr ich das script aus
der convertierts automatisch in jpg und mach ein 900x562 (ideal wenn man 16:10 screens hat) pixel thumbnail (forums-kompatibel ;) )
als ausgabe erhaelt man direkt text den man im forum posten kann - das 900x562 thumbnail is dan klickbar fuer volle ausloesung.

den teil mit dem upload auf imageshack hab ich von einer seite kopiert, weiss allerdings nicht mehr von wo

convert_upload_screens.sh
Code:
#!/bin/bash
rm ~/screens2/*normal.jpg
rm ~/screens2/*tumb.jpg

cd ~/screens
index1=1
find . -iname "*bmp" | while read line
do 
	convert "$line" ../screens2/"$index1"--normal.jpg
	convert -resize 900x562 "$line" ../screens2/"$index1"--tumb.jpg
	index1=`echo $index1 + 1 | bc` 
done


cd ~/screens
index1=1
find . -iname "*jpg" | while read line
do
        convert "$line" ../screens2/"$index1"--normal.jpg
        convert -resize 900x562 "$line" ../screens2/"$index1"--tumb.jpg
        index1=`echo $index1 + 1 | bc`
done

find ~/screens2/*tumb.jpg | while read line
do
	tumburl=`uploadimage.sh "$line" | grep http`
	normal=`echo $line | sed 's/tumb/normal/'`
	normalurl=`uploadimage.sh "$normal" | grep http`
	echo "[url="$normalurl"][img]"$tumburl"[/img][/url]"
done

uploadimage.sh
Code:
#!/bin/bash
out=upl.tmp.`date +%s`
echo "Uploading: $1"
curl -H Expect: -F fileupload="@$1" -F xml=yes -# "http://www.imageshack.us/index.php" > /tmp/$out 2>&1

if [ `cat /tmp/$out | grep image_link | wc -l` -lt 1 ]
 then
  echo "Error: $1"
 else 
  cat /tmp/$out | tr -d " " | grep image_link | grep -o  http[^\<]*
fi

rm /tmp/$out
 
Zuletzt bearbeitet:
schade, dass abload keine API fuer sowas hat. die haben aber einen uploader, der ist samt sourcecode verfuegbar, den werd ich mir mal ansehen und versuchen, da was raus zu ziehen, denn imageshack ist echt verdammt lahm.
 
Das abload-Tool kann man sogar noch viel einfacher in Scripte einbauen, allerdings weiß ich nicht, wie das mit der neuen Version aussieht.
Der Service vom abload-Tool war ja ne Zeit lang eingestellt....
 
ah, ich seh's grad auch, also wenn man parameter uebergeben kann, ists ja kinderleicht.
der sourcecode ist btw. doch nicht drin, ist ein binaerpaket :-/
und entschuldigt das OT.
 
@foxxx, dein

sed Leerzeichen Tool ist funktioniert, aber ich bräuchte es so , dass es die Leerzeichen in die Linux Command Line fänige LeerZeichen Verändert also .../Musik/Song\ von\ Bla/ . Den wenn keine Leerzeichen Drin sind findet er die datein ja nicht. Wäre schön wenn du das ergänzen könntest.
 
Ein bisschen selbst experimentieren wäre wohl zu anstrengend oder wie ?

fox@fileserver:~$ echo $bla
/home/fox haha/lol 34/
fox@fileserver:~$ echo $bla | sed -e 's/\ /\\ /g'
/home/fox\ haha/lol\ 34/

-->
Code:
sed -e 's/\ /\\ /g'

mfg
foxxx :wink:
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh