Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: sourceserver.info. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

  • DeaD_EyE

    Administrator

    Du musst dich registrieren, um eine Verbindung mit diesem Benutzer herzustellen.

17

Shell-Code zum Frühstück

Bewertung:

Von DeaD_EyE, Donnerstag, 21. April 2011, 08:13

Ich wurde gefragt, wie das nochmal mit dem überspringen der Abfrage beim hldsupdatetool unter Linux funktioniert.

Es gibt dafür viele Ansätze. Einer ist z.B. das Umleiten von "Yes" direkt an das Programm hldsupdatetool.

Quellcode

1
echo "Yes" | ./hldsupdatetool.bin


Ein weiterer Ansatz wäre Here-Document:

Quellcode

1
2
3
./hldsupdatetool.bin <<HIER_IST_DAS_ENDE
Yes
HIER_IST_DAS_ENDE


Im Regelfall verwendet man EOF für END-Markierung:

Quellcode

1
2
3
./hldsupdatetool.bin <<EOF
Yes
EOF


Letztendlich ist Here-String genau die Lösung, nach der ich lange Zeit gesucht habe:

Quellcode

1
./hldsupdatetool.bin <<<"Yes"


Als kleines Häppchen noch ein Codingbeispiel, wie man es machen könnte:

Spoiler Spoiler

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/bin/bash
STEAMTOOLURL="http://storefront.steampowered.com/download/hldsupdatetool.bin"
STEAMTOOLFILE="hldsupdatetool.bin"
STEAMINSTALLDIR="/home/server/serverfiles"


#colors
RED="tput setf 4"
GREEN="tput setf 2"
NORM="tput op"

checkWritePath() {
	touch "$1/temp$$" 2> /dev/null || return 1
	rm "$1/temp$$"
	return 0
	}


getSteamInstaller() {
	cd "$2" 
	wget -q -nc "$1" || return 1
	return 0
	}

installSteamTool() {
	which uncompress > /dev/null || return 1 
	cd "$2"
	chmod u+x "$1"
	echo "Installiere steam"
	"./$1" >/dev/null <<<"Yes"
	[ -x ./steam ] || return 2
	echo -e "Aktualisiere steam \c"
	for (( n=2 ; n <= 4; n++ )); do
		echo -e "..\c"
		./steam &> /dev/null && break 
	done
	if ./steam &> /dev/null; then
		echo
		return 0
	else
		echo
		return 3
	fi
	}


checkWritePath "$STEAMINSTALLDIR" ||
	{ $RED; echo "Keine Schreibrechte auf "$STEAMINSTALLDIR""; $NORM; exit ;}

echo "Lade $STEAMTOOLFILE herunter"
getSteamInstaller "$STEAMTOOLURL" "$STEAMINSTALLDIR" ||
	{ $RED; echo "Download fehlgeschlagen"; $NORM; exit ;}

installSteamTool "$STEAMTOOLFILE" "$STEAMINSTALLDIR"
case $? in
	0) $GREEN; echo "Update des Steamtools erfolgreich"; $NORM ;;
	1) $RED; echo "Uncompress fehlt"; $NORM; exit ;;
	2) $RED; echo "Entpacken von steam fehlgeschlagen"; $NORM; exit ;;
	3) $RED; echo "Update fehlgeschlagen"; $NORM; exit ;;
esac

Dieser Artikel wurde bereits 21 601 mal gelesen.

Tags: here-doc, Here-String

Kategorien: Allgemein


Kommentare (2)

  • 2

    Von Demelza (Montag, 22. August 2011, 16:22)

    Wowza, problem selovd like it never happened.

  • 1

    Von Tessie (Sonntag, 21. August 2011, 03:27)

    There is a critical shortage of informative atrciles like this.

Blog Navigation

Nächster Artikel

Bonding-Test

Von DeaD_EyE (Sonntag, 29. Mai 2011, 17:37)

Vorheriger Artikel

Waffen den Spielern beim Spawn automatisch geben

Von DeaD_EyE (Dienstag, 22. März 2011, 13:54)